Difference between revisions of "Lttoolbox-java (français)"

From Apertium
Jump to navigation Jump to search
(Traduction partielle (copie d'un début de traduction hors ligne))
 
(suite traduction)
Line 94: Line 94:
 
<pre>
 
<pre>
 
$ java -jar dist/lttoolbox.jar
 
$ java -jar dist/lttoolbox.jar
  +
lttoolbox: est une boite à outils pour le traitement lexical, l'analyse morphologique et la génération de mots
lttoolbox: is a toolbox for lexical processing, morphological analysis and generation of words
 
   
USAGE: java -jar dist/lttoolbox.jar [task]
+
UTILISATION : java -jar dist/lttoolbox.jar [tache]
   
 
Exemples:
 
Exemples:
   
java -jar dist/lttoolbox.jar lt-expand dictionary.dix expands a dictionary
+
java -jar dist/lttoolbox.jar lt-expand dictionary.dix étend un dictionnaire
java -jar dist/lttoolbox.jar lt-comp lr dic.dix dic.bin compiles a dictionary
+
java -jar dist/lttoolbox.jar lt-comp lr dic.dix dic.bin compile un dictionnaire
java -jar dist/lttoolbox.jar lt-proc dic.bin morphological analysis
+
java -jar dist/lttoolbox.jar lt-proc dic.bin analyse morphologique
 
</pre>
 
</pre>
   
Line 109: Line 109:
 
<pre>
 
<pre>
 
$ lt-comp-j
 
$ lt-comp-j
  +
v3.2j: construit un transducteur de lettres depuis un dictionnaire
v3.2j: build a letter transducer from a dictionary
 
USAGE: LTComp lr | rl dictionary_file output_file [acx_file]
+
UTILISATION : LTComp lr | rl fichier_dictionnaire fichier_de_sortie [fichier_acx]
 
Modes:
 
Modes:
lr: left-to-right compilation
+
lr: compilation de gauche à droite
rl: right-to-left compilation
+
rl: compilation de droite à gauche
 
</pre>
 
</pre>
   
 
<pre>
 
<pre>
$ lt-proc-j
+
$ lt-proc-jinput_file
LTProc: process a stream with a letter transducer
+
LTProc: traite un flux avec un transducteur de lettres
USAGE: LTProc [-c] [-a|-g|-n|-d|-b|-p|-s|-t] fst_file [input_file [output_file]]
+
UTILISATION : LTProc [-c] [-a|-g|-n|-d|-b|-p|-s|-t] fichier_fst [fichier_d'entrée [fichier_de_sortie]]
 
Options:
 
Options:
-a: morphological analysis (default behavior)
+
-a: analyse morphologique (comportement par défaut)
  +
-c: utiliser le cas litéral des caractères entrant
-c: use the literal case of the incoming characters
 
  +
-e: analyse morphologique, avec analyse des composants sur les mots inconnus
-e: morphological analysis, with compound analysis on unknown words
 
-f: match flags (experimental)
+
-f: match flags (expérimental)
-g: morphological generation
+
-g: génération morphologique
  +
-n: génération morphologique sans marquage des mots inconnus
-n: morph. generation without unknown word marks
 
-d: morph. generation with all the stuff
+
-d: génération morphologique avec tous les trucs
  +
-t: génération morphologique, mais en gardant les parties de discours
-t: morph. generation, but retaining part-of-speech
 
-p: post-generation
+
-p: post-génération
-s: SAO annotation system input processing
+
-s: annotation SAO système de traitement de l'entrée
  +
-t: appliquer le dictionnaire de translitération
-t: apply transliteration dictionary
 
-z: flush output on the null character
+
-z: vider les sorties sur le caractère nul
 
-v: version
 
-v: version
-D: debug; print diagnostics to stderr
+
-D: debug; envoyer les diagnostics sur stderr
-h: show this help
+
-h: montrer cette aide
 
</pre>
 
</pre>
   
Line 141: Line 141:
 
<pre>
 
<pre>
 
$ lt-expand-j
 
$ lt-expand-j
  +
v3.2j: étend le contenu d'un fichier dictionnaire
v3.2j: expand the contents of a dictionary fileUSAGE: LTExpand dictionary_file [output_file]
 
  +
UTILISATION : LTExpand fichier_dictionnaire [fichier_de_sortie]
 
</pre>
 
</pre>
   
Line 147: Line 148:
 
<pre>
 
<pre>
 
$ lt-validate-j
 
$ lt-validate-j
v3.2j: validate an XML file according to a schema
+
v3.2j: valide un fichier XML par rapport à un schéma
USAGE : LTValidate -dix dictionary.xml
+
UTILISATION : LTValidate -dix dictionnaire.xml
LTValidate -acx dictionary.acx
+
LTValidate -acx dictionnaire.acx
 
</pre>
 
</pre>
   
 
=== Exemples ===
 
=== Exemples ===
   
  +
Utilisation de la nouvelle fonctionnalité de composition :
Use the new compounding feature:
 
 
echo "lambakjöti" | java -jar dist/lttoolbox.jar lt-proc -e /home/j/esperanto/apertium/apertium-is-en/is.bin
 
echo "lambakjöti" | java -jar dist/lttoolbox.jar lt-proc -e /home/j/esperanto/apertium/apertium-is-en/is.bin
 
^lambakjöti/lamb<n><nt><pl><gen><ind>+kjöt<n><nt><sg><dat><ind>$
 
^lambakjöti/lamb<n><nt><pl><gen><ind>+kjöt<n><nt><sg><dat><ind>$
   
=== Encoding problems ===
+
=== Problèmes d'encodage ===
   
Try -Dfile.encoding=UTF-8, like
+
Essayez -Dfile.encoding=UTF-8, comme
   
 
echo "lambakjöti" | java -Dfile.encoding=UTF-8 -jar dist/lttoolbox.jar lt-proc -e /home/j/esperanto/apertium/apertium-is-en/is.bin
 
echo "lambakjöti" | java -Dfile.encoding=UTF-8 -jar dist/lttoolbox.jar lt-proc -e /home/j/esperanto/apertium/apertium-is-en/is.bin
 
^lambakjöti/lamb<n><nt><pl><gen><ind>+kjöt<n><nt><sg><dat><ind>$
 
^lambakjöti/lamb<n><nt><pl><gen><ind>+kjöt<n><nt><sg><dat><ind>$
   
===Mac users===
+
=== Utilisateurs de Mac ===
   
You need JDK1.6. Try
+
Vous avez besoin du JDK1.6. Essayez
   
 
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands/java -jar dist/lttoolbox.jar
 
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands/java -jar dist/lttoolbox.jar
   
=== Windows usage ===
+
=== Utilisation Windows ===
   
  +
Par défaut, la console windows utilise l'UTF-16, tandis que les données apertium sont encodées avec UTF-8. Cette commande commute la boite dos sur UTF-8:
By default, the windows console uses UTF-16, whereas apertium's data
 
is encoded with utf-8. This command switches the dos box to utf-8:
 
   
 
<pre>
 
<pre>
Line 184: Line 184:
 
Also, don't forget to set these Runtime flags: -Xms64m -Xmx800 -Dfile.encoding=UTF-8
 
Also, don't forget to set these Runtime flags: -Xms64m -Xmx800 -Dfile.encoding=UTF-8
   
== Reasons for a portage Java ==
+
== Raisons du portage Java ==
  +
 
* There are several devices (mobile phones, for example) which can run quite complicated software, but only if written in Java. lttoolbox is the first step to having Apertium run on these devices.
 
* There are several devices (mobile phones, for example) which can run quite complicated software, but only if written in Java. lttoolbox is the first step to having Apertium run on these devices.
 
* Windows port. It won't be as powerfull as Unix based system, but it will be there
 
* Windows port. It won't be as powerfull as Unix based system, but it will be there
Line 190: Line 191:
 
* Transfer in bytecode has a promise of speedup factor 4 - compared to what we use now (interpreted XML). And transfer CPU usage is dominating when processing large amounts of text
 
* Transfer in bytecode has a promise of speedup factor 4 - compared to what we use now (interpreted XML). And transfer CPU usage is dominating when processing large amounts of text
   
== Performance of portage Java ==
+
== Performance du portage Java ==
   
 
Compatibility and performance can be checked by invoking test_java_and_c.sh in testdata/regression.
 
Compatibility and performance can be checked by invoking test_java_and_c.sh in testdata/regression.
Line 256: Line 257:
 
The above test compares the basic lttoolbox fonctions. As Java transfer is much faster the result of performance test of a pure-Java and pure-C++ chain are comparable (and mostly in Java's favor). A hybrid can be made which beats performance of both systems.
 
The above test compares the basic lttoolbox fonctions. As Java transfer is much faster the result of performance test of a pure-Java and pure-C++ chain are comparable (and mostly in Java's favor). A hybrid can be made which beats performance of both systems.
   
== Known bugs ==
+
== Défauts connus ==
   
 
There are currently (jan 2010) problems compiling some very seldom strange constructs (testdata/strange.dix).
 
There are currently (jan 2010) problems compiling some very seldom strange constructs (testdata/strange.dix).
 
You can use the C version to compile these, and the binary files will work fine when used from lttoolbox-java.
 
You can use the C version to compile these, and the binary files will work fine when used from lttoolbox-java.
   
==Thanks==
+
== Remerciements ==
   
 
* Nic Cottrell contributed an initial version of a portage Java of [[lttoolbox]].
 
* Nic Cottrell contributed an initial version of a portage Java of [[lttoolbox]].

Revision as of 07:04, 31 May 2012

Qu'est ce que lttoolbox-java

lttoolbox-java est un portage Java de la totalité du système d'exécution Apertium, incluant à la fois lttoolbox et apertium.

Fonctions lttoolbox

lttoolbox peut faire les choses suivantes

  • Compiler : fabriquer des fichiers binaires à partir des fichiers .dix (lt-comp),
  • Traiter : analyser ou générer du texte (lt-proc) et
  • Etendre : développer un fichier dictionnaire .dix (lt-expand).

Le portage Java de lttoolbox est aussi capable de

Fonctions d'exécution apertium

Le portage Java implémente les fonctions typiques utilisées par Apertium pendant l'exécution.

  • Lire les fichiers .mode et exécuter les étapes qu'ils contiennent
  • Exécuter le tagger
  • Exécuter les étapes de transfert (toutes les trois)

Le portage Java a besoin des binaires C++ pour préparer/développer une paire de langue, par exemple pour compiler les fichiers de transfert et entrainer le tagger.

Le portage Java de lttoolbox est aussi capable de

  • Générer le bytecode for transfer et l'exécuter. Le bytecode s'exécute typiquement 10 fois plus vite que la version C++.

Pourquoi

Un "portage Java" d'Apertium permet l'utilisation sur

  • Windows,
  • J2ME/téléphones Android,
  • pages web (applets),
  • application de bureau,
  • applications serveur Java.

Les deux derniers points sont capitaux comme, par exemple un plugin OpenOffice.org devrait être indépendant de la plateforme pour être maintenable.

On n'a vu personne implanter Apertium sur une application de bureau. Actuellement Apertium est utilisable dans un sous répertoire local mais l'installation n'est pas triviale pour l'utilisateur final.

Avoir une version paquagée facile à utiliser d'Apertium prête pour supporter les machines de traduction dans un programme plus large serait très sympa. Idéalement ça pourrait être un fichier JAR contenant Apertium, dépendant seulement de JRE et un fichier JAR additionnel par paire de langue.

Une autre approche d'"implantation" est d'utiliser un client stub(?) pour l'un de nos services Apertium, mais il peut y avoir des raisons qui font préférer d'avoir les choses installées locallement (on n'a pas besoin de les répéter ici).

Caractéristiques

  • Compatibilité binaire avec lttoolbox. lttoolbox-java est capable de lire et d'écrire les fichiers binaires lttoolbox et génère exactement la même sortie
  • Il y une suite de tests comprehensible qui teste à la fois lttoolbox (C++) et lttoolbox-java.

Installation

Prérequis :

  • java-runtime
  • apache-ant (pour compilation)

Sous Arch Linux, vous pouvez installer les prérequis avec

pacman -S openjdk6 apache-ant

Sous Debian/Ubuntu:

sudo apt-get install ant ant-optional      # quoi d'autre ??

Téléchargement, compilation, installation

Téléchargez la version la plus récente ou récupérez-la depuis SVN :

svn co https://apertium.svn.sourceforge.net/svnroot/apertium/trunk/lttoolbox-java

Utilisez Netbeans ou Unix, ou n'importe quoi qui vous va le mieux :

sh autogen.sh
make
sudo make install

Vous pouvez aussi construire et installer en utilisant Maven 2 (http://maven.apache.org), en tapant :

mvn install -DskipTests

Voir aussi le fichier README

Utilisation

$ java -jar dist/lttoolbox.jar
lttoolbox: est une boite à outils pour le traitement lexical, l'analyse morphologique et la génération de mots

UTILISATION : java -jar dist/lttoolbox.jar [tache]

Exemples:

 java -jar dist/lttoolbox.jar lt-expand dictionary.dix     étend un dictionnaire
 java -jar dist/lttoolbox.jar lt-comp lr dic.dix dic.bin   compile un dictionnaire
 java -jar dist/lttoolbox.jar lt-proc dic.bin              analyse morphologique

or, using the a shell scripts:

$ lt-comp-j 
 v3.2j: construit un transducteur de lettres depuis un dictionnaire
UTILISATION : LTComp lr | rl fichier_dictionnaire fichier_de_sortie [fichier_acx]
Modes:
  lr:     compilation de gauche à droite
  rl:     compilation de droite à gauche
$ lt-proc-jinput_file
LTProc: traite un flux avec un transducteur de lettres
UTILISATION : LTProc [-c] [-a|-g|-n|-d|-b|-p|-s|-t] fichier_fst [fichier_d'entrée [fichier_de_sortie]]
Options:
  -a:   analyse morphologique (comportement par défaut)
  -c:   utiliser le cas litéral des caractères entrant
  -e:   analyse morphologique, avec analyse des composants sur les mots inconnus
  -f:   match flags (expérimental)
  -g:   génération morphologique
  -n:   génération morphologique sans marquage des mots inconnus
  -d:   génération morphologique avec tous les trucs
  -t:   génération morphologique, mais en gardant les parties de discours
  -p:   post-génération
  -s:   annotation SAO système de traitement de l'entrée
  -t:   appliquer le dictionnaire de translitération
  -z:   vider les sorties sur le caractère nul
  -v:   version
  -D:   debug; envoyer les diagnostics sur stderr
  -h:   montrer cette aide


$ lt-expand-j 
 v3.2j: étend le contenu d'un fichier dictionnaire
UTILISATION : LTExpand fichier_dictionnaire [fichier_de_sortie]


$ lt-validate-j 
 v3.2j: valide un fichier XML par rapport à un schéma
UTILISATION : LTValidate -dix dictionnaire.xml
        LTValidate -acx dictionnaire.acx

Exemples

Utilisation de la nouvelle fonctionnalité de composition :

echo "lambakjöti" | java -jar dist/lttoolbox.jar lt-proc -e /home/j/esperanto/apertium/apertium-is-en/is.bin

^lambakjöti/lamb<n><nt><pl><gen><ind>+kjöt<n><nt><sg><dat><ind>$

Problèmes d'encodage

Essayez -Dfile.encoding=UTF-8, comme

echo "lambakjöti" | java -Dfile.encoding=UTF-8 -jar dist/lttoolbox.jar lt-proc -e /home/j/esperanto/apertium/apertium-is-en/is.bin

^lambakjöti/lamb<n><nt><pl><gen><ind>+kjöt<n><nt><sg><dat><ind>$

Utilisateurs de Mac

Vous avez besoin du JDK1.6. Essayez

/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands/java -jar dist/lttoolbox.jar

Utilisation Windows

Par défaut, la console windows utilise l'UTF-16, tandis que les données apertium sont encodées avec UTF-8. Cette commande commute la boite dos sur UTF-8:

chcp 65001

Note: you also need to use an unicode-capable font for the windows console, like Lucida Console (Properties -> Font).

Also, don't forget to set these Runtime flags: -Xms64m -Xmx800 -Dfile.encoding=UTF-8

Raisons du portage Java

  • There are several devices (mobile phones, for example) which can run quite complicated software, but only if written in Java. lttoolbox is the first step to having Apertium run on these devices.
  • Windows port. It won't be as powerfull as Unix based system, but it will be there
  • Apertium will be the first MT system *ever* that can be demonstrated within a Java applets
  • Transfer in bytecode has a promise of speedup factor 4 - compared to what we use now (interpreted XML). And transfer CPU usage is dominating when processing large amounts of text

Performance du portage Java

Compatibility and performance can be checked by invoking test_java_and_c.sh in testdata/regression.

Single-core processor (Jimmy O'Regan)

java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8) (6b18~pre4-1ubuntu1)
OpenJDK Client VM (build 16.0-b13, mixed mode, sharing)
C analysis is... 0.59sec
OK
Java analysis is... 1.15sec
OK
C generator -g is ... 0.54sec
OK
Java generator -g is ... 1.13sec
OK
C generator -d is ... 0.56sec
OK
Java generator -d is ... 1.12sec
OK
C generator -n is ... 0.52sec
OK
Java generator -n is ... 1.12sec
OK
C postgenerator -p is ... 0.07sec
OK
Java postgenerator -p is ... 0.33sec
OK
All tests passed

Dual-core processor (Jacob)

Java HotSpot(TM) Client VM (build 1.6.0-beta2-b86, mixed mode, sharing)
C analysis is... 0.39sec
OK
Java analysis is... 0.66sec
OK
C generator -g is ... 0.32sec
OK
Java generator -g is ... 0.62sec
OK
C generator -d is ... 0.33sec
OK
Java generator -d is ... 0.58sec
OK
C generator -n is ... 0.32sec
OK
Java generator -n is ... 0.64sec
OK
C postgenerator -p is ... 0.03sec
OK
Java postgenerator -p is ... 0.20sec
OK
All tests passed

As you see Java version is currently (april 2010) a factor 2 slower than the C version. There are ways to remedy this (using simple types collection classes), but it hasnt been implemented, as no-one has requested it.

It still gives great performance, however, and Apertium running on Java is very fast, compared to other MT systems. The overhead of using the Java version instead of the C version is negligible, as transfer is the big ressource hog anyway.

The above test compares the basic lttoolbox fonctions. As Java transfer is much faster the result of performance test of a pure-Java and pure-C++ chain are comparable (and mostly in Java's favor). A hybrid can be made which beats performance of both systems.

Défauts connus

There are currently (jan 2010) problems compiling some very seldom strange constructs (testdata/strange.dix). You can use the C version to compile these, and the binary files will work fine when used from lttoolbox-java.

Remerciements