Nilix Version 1.3
-----------------

Nilix is a translation program for natural languages with grammatical 
analysis and transfere. This is a developer version for everyone who
wants to see how machine translation works.

Running the program
-------------------

This version requires a Java runtime environment version 1.02 or later
(download the latest version from www.sun.com).

Start the main program from the command line:

java Translate [filename] 
jview Translate [filename]

If no additonal parameter is given, then Nilix translates the file 
"testsatz.txt" to "testsatz.txt.xlt".

The text file must consist of only one phrase, and must include one
blank between each word (including comma, full stop etc.). 

Wrong:    This morning, Peter took the bus.
Correct:  This morning , Peter took the bus .

If you want to see the translation process, then execute 
TranslateVisible.class; additional temporary files are not deleted
(pass*.txt):

java TranslateVisible [filname]
jview TranslateVisible [filename]

The translation consists in calls to the main components of Nilix:

Lexicon - reads source phrase and translates each word individually
Nilix   - applies syntax transformations
Flexion - executes inflecion rules and writes translation results

Syntax rules
------------

Each rule in the file "nilix.nlx" is composed of 6 lines.

1. description in natural language
2. symbols to be found (may contain all quantor * for one char)
3. additional conditions
4. actions on individual elements
5. new symbol or cluster
6. order for new symbol including auxiliary words

Of these, 3 and 4 are optional. You may choose to perform individual 
actions (4) or a new symbol (5) with new ordering (6) or both.

Examples 
--------
A dot on one line indicates a blank line. In real rules, this line
must be left blank.

1) syntax rule without individual actions or conditions

// DET + SUB +E01 -> NP1 which contains DET(1) SUB(2) AUX(plu)
DETSUBE01
.
.
NP1
12p

2) syntax rule with extra condition

// Test the second element for syntax=SUM
DETSUB
2syn=SUM
.
NP1
12m

3) rule with individual action

// disambiguate det + v/n to SU* and put new symbol SUB
DETV/N
.
2DSU 2SSUB
.
.

4) rule with various auxiliary words

// subject (nom) verb (pre) object (acc) phrase
NP1VERNP1
.
.
SSS
1o2r3a

Lexicon
-------

The lexicon is in file "nilix.lex". Each entry consists of two lines.
The first line is the source language, the second is the target with
grammar informations (each 3 chars):

syntax
semantics
inflection
translation

1) Simple entries (one part of speech)

HERE
ADV------hier

2) Irregular formations may include a root form after ">"

IS>BE
BEG---VERist

WOMEN>WOMAN+E01
SUF---SffFrau

TRANSLATING>TRANSLATE+E03
VER---VERbersetz

3) Various parts of speech

The most probable part of speech (e.g. SUB or VER) must come first.
Additionally, a complex cluster symbol is introduced. Each entry is 
separated by an asterisk *. Examples:

V/N =  VER or SUB
A/S =  ADJ or SUB
SAV =  SUB, ADJ or VER
V/A =  VER or ADJ

TEST
V/N*SUB---SmeTest*VER---VERtest

Terminations
------------

Word suffixes are stored in "nilix.trm". Examples:

E01 S
E01 ES
E02 ED
E03 ING
E07 'S

These suffixes are used in lexicon entries and in syntax rules.

Auxiliary words
---------------

These words are generated by syntax rules. They appear in the order 
element as one lower case letter. For better readibility you can assign 
a three-char element to each letter in file "nilix.aux":

a acc
o nom
p plu
r pre
i inf
m mas
f fem
n neu
d dat
g gen
b bst
u unb
s pas
y imp
x ppp
c cnd
z fir
s sec
t thi

Inflection rules
----------------

First, all auxiliary words following each normal word are grouped together.

Example:

the cat [nom] [sin] [fem] [plu] sit [pre] [thi] [plu] in the garden [dat] 
[mas] [sin] .

is rendered as::

the    [nom] [sin] [fem] [plu]
cat    [nom] [sin] [fem] [plu]
sit    [pre] [thi] [plu]
in     [dat] [mas] [sin]
the    [dat] [mas] [sin]
garden [dat] [mas] [sin]
.      [---]

Inflection rules in "nilix.flx" consist of four lines:

1. description in natural language
2. inflection category from lexicon
3. auxiliary words in abbreviated form (one lower case letter)
4. word termination

The inflecional category may be abbreviated to two or only one char:

Sm in line 2 matches all masculine nouns such as Sme, Smn or Sm in lexicon
V in line 2 matches all verbs such as VER, VeR, VSR, VsR, VE1 etc.

// Noun masculine Plural, Schuh>Schuhe
Sme
p
-e

This rule searches for the inflecion class "Sme", and if an auxiliary 
word "p" follows (plural), it appends "-e" to the root.

The German Umlaut is implemented as "^", e.g.
                                    
// Noun masculine Plural, Buch>Bcher
Snr
p
^er

Copyrights and trademarks
-------------------------

All programs belonging to Nilix are copyrighted by 

Copyright (c) 1983-2000
Dr. O'Niel Som (oniel.som@nili.de)
Bottwarstr. 18
D-70435 Stuttgart
www.nili.de * www.nili.com
All rights reserved

Nili is a trademark of Dr. O'Niel Som.
Java is a trademark of Sun Microsystems (www.sun.com).

All names and trademarks are property of their owners and are used as such.

THIS PROGRAM IS A DEVELOPER VERSION WHICH COMES WITHOUT ANY WARRANTY.
YOU MAY USE IT FOR PERSONAL PURPOSES ONLY. USE THE PROGRAM AT YOUR OWN RISK.
LOOK FOR A NEWER VERSION AT www.nili.com OR www.nili.de.

All comments and proposals for improvement are welcome.
