Difference between revisions of "Comment démarrer avec les outils d'induction"
(→Creation des dictionnaires bilingues.: un peu plus de traduction) |
(→Ubuntu:: correction syntaxe lien) |
||
Line 64: | Line 64: | ||
=== Installation de mkcls === |
=== Installation de mkcls === |
||
==== Ubuntu: ==== |
==== Ubuntu: ==== |
||
Récupérez le paquet Debian |
Récupérez le paquet Debian approprié pour votre version d'Ubuntu sur [http://cl.aist-nara.ac.jp/~eric-n/ubuntu-nlp/ ubuntu-nlp]. |
||
<pre> |
<pre> |
||
$ dpkg --install mkcls*.deb |
$ dpkg --install mkcls*.deb |
Revision as of 13:43, 10 September 2011
Voici des directives partielles pour démarrer avec Apertium et les outils associés (comme GIZA++), dans le but final de créer des dictionnaire bilingues. Il pourrait aussi être utile comme prérequis de suivre Créer une nouvelle paire de langues.
Voir Problèmes lors de l'installation pour savoir quoi faire en cas d'erreurs.
Quelques étapes sont spécifiques à Ubuntu. Tout à part mkcls est construit depuis les sources SVN.
Contents
Installation des programmes nécéssaires
Paquets Ubuntu prérequis
Ce n'est malheureusement pas une liste complète; je (l'auteur de la version anglaise de cette page) m'attend à en rajouter to add one quand j'aurai fait une installation depuis une version Ubuntu d'origine. Mangrès tout, ce qui suit devrait vous servir; tous les outils sont nécéssaires :
sudo apt-get install automake libtool libxml2-dev flex libpcre3-dev
Installation de Crossdics
La page Crossdics : Génération d'une paire de langue à partir de 2 autres l'explique correctement.
Vous pouvez avoir besoin d'exporter une nouvelle valeur pour JAVA_HOME avant de lancer ant(?) jar.
$ export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.03
ls /usr/lib/jvm/ si vous avez un doute sur ce qu'est la version sur votre système; elle pourrait être différente de celle ci-dessus.
Installation de lttoolbox
$ svn co https://apertium.svn.sourceforge.net/svnroot/apertium/trunk/lttoolbox $ cd lttoolbox $ ./autogen.sh $ ./configure $ make $ sudo make install
Notez où lttoolbox.pc est installé, dans le cas où vous avez le message autogen.sh doesn't find lttoolbox. (VOIR DÉJÀ LA COHÉRENCE DU LIEN SUR LA PAGE ANGLAISE) !
Installation de Apertium
$ svn co https://apertium.svn.sourceforge.net/svnroot/apertium/trunk/apertium $ cd apertium $ ./autogen.sh $ ./configure $ make $ sudo make install
Installation de ReTraTos
$ svn co https://retratos.svn.sourceforge.net/svnroot/retratos/trunk retratos $ cd retratos $ ./autogen.sh $ ./configure $ make $ sudo make install
(Dans le cas où lttoolbox n'est pas trouvée, voir cette solution de contournement.)
Installation de mkcls
Ubuntu:
Récupérez le paquet Debian approprié pour votre version d'Ubuntu sur ubuntu-nlp.
$ dpkg --install mkcls*.deb
Mac:
Récupérez giza-pp depuis http://code.google.com/p/giza-pp/, puis faites
$ tar xvzf giza-pp-VERSION.tar.gz $ cd giza-pp/mkcls-v2 $ make $ sudo cp mkcls /usr/bin/
Installation de GIZA++
Malheureusement, le paquet Debian sur ubuntu-nlp a été construit avec -DBINARY_SEARCH_FOR_TTABLE. Vous avez besoin de préparer les fichiers d'entrée différemment pour ça, ou le programme meurt avec "ERROR: NO COOCURRENCE FILE GIVEN!". Je ne sais pas comment faire ça, donc voici les instructions pour compiler une version qui fonctionnera avec le reste de cette page.
$ wget http://giza-pp.googlecode.com/files/giza-pp-v1.0.1.tar.gz $ tar xvzf giza-pp-v1.0.1.tar.gz $ cd giza-pp/GIZA++-v2 $ cat Makefile | sed -e 's/-DBINARY_SEARCH_FOR_TTABLE//' | sed -e 's/mkdir/mkdir -p/g' > tmp $ mv Makefile Makefile.orig $ mv tmp Makefile $ make $ sudo make install
Creation des dictionnaires bilingues.
Obtention d'un corpus (et getAlignmentWithText.pl)
$ wget http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/alignments/getAlignmentWithText.pl
Choisissez une paire de langues. Pour cet exemple, it ce sera Italien (it) et Anglais (en). Pour utiliser une autre paire, trouvez les noms de fichiers depuis le navigateur [1] et [2].
Récupérez le corpus associé et les fichiers d'alignement.
$ wget http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/alignments/jrc-en-it.xml.gz $ wget http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/corpus/jrc-en.tgz $ wget http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/corpus/jrc-it.tgz
Le corpus doit être désarchivé, et inseré dans un nouveau répertoire commun.
$ tar xvzf jrc-en.tgz $ tar xvzf jrc-it.tgz $ mkdir acquis $ mv en it acquis
Lancement de getAlignmentWithText.pl
$ perl getAlignmentWithText.pl -acquisDir acquis/ jrc-en-it.xml > alignement
Extraction des sous ensembles du fichier d'alignement
À ce stade, il y aura un fichier d'alignement contenant quelques millions de lignes de XML. Il fera fréquemment référence à s1 (la première des deux langues dans le fichier jrc-lang1-lang2.xml, qui est jrc-en-it.xml dans cet exemple, soit l'anglais) et s2 (l'italien). Le contenu pour chaque langue devrait être extrait dans des fichiers spécifiques :
$ grep s1 alignement > en $ grep s2 alignement > it
An optional step may be useful. If you're just testing to see if it's working, or have an old machine, it's better to only use a subset of the data, so that it can be analyzed in a couple of hours, rather than days. Using 10,000 lines from each language took around 2 hours on my 1.8 Ghz Athlon with 512 megs of RAM. Other numbers are also fine, but use the same number for both files.
$ head -n 10000 en > en.10000 $ head -n 10000 it > it.10000
Exécution de plain2snt.out
The filenames will vary depending on whether or not the optional step was done.
$ plain2snt.out en.10000 it.10000
Exécution de GIZA++
- Main article: Using GIZA++
$ GIZA++ -S en.10000.vcb -T it.10000.vcb -C en.10000_it.10000.snt -p0 0.98 -o dictionary >& dictionary.log
If it stops in under a minute, unless the input files were tiny, check the log - it almost certainly failed.
If it worked, a number of files will be created. The one most likely to be of interest is dictionary.A3.final, which contains alignment information.
The first 3 lines of dictionary.A3.final, on the example corpus, are the following. They are apparently not particularly good, probably due to the small corpus.
# Sentence pair (1) source length 26 target length 21 alignment score : 7.66784e-37 <s2>ACCORDO COMPLEMENTARE all'accordo tra la Comunità economica europea nonché i suoi Stati membri e la Confederazione svizzera, concernente i prodotti dell'orologeria</s2> NULL ({ 10 }) <s1>ADDITIONAL ({ 1 }) AGREEMENT ({ }) to ({ }) the ({ }) Agreement ({ }) concerning ({ }) products ({ 20 }) of ({ }) the ({ }) clock ({ 2 3 17 18 19 }) and ({ }) watch ({ }) industry ({ }) between ({ 4 }) the ({ 5 }) European ({ 6 }) Economic ({ 7 8 }) Community ({ }) and ({ 9 }) its ({ 11 }) Member ({ 13 }) States ({ 12 }) and ({ 14 }) the ({ 15 }) Swiss ({ 16 }) Confederation</s1> ({ 21 })
See also
Acknowledgements
This page wouldn't be possible without the kind assistance of 'spectie' on Freenode's #apertium. That said, all errors/typos are mine, not his.