Difference between revisions of "Comment démarrer avec les outils d'induction"

From Apertium
Jump to navigation Jump to search
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Getting started with induction tools|In English]]

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]].
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]].


Line 9: Line 11:
=== Paquets Ubuntu prérequis ===
=== Paquets Ubuntu prérequis ===


Ce n'est malheureusement pas une liste complète; je (l'auteur de la [[Getting started with induction tools|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 :
Ce n'est malheureusement pas une liste complète ; je (l'auteur de la [[Getting started with induction tools|version anglaise]] de cette page) m'attends à en rajouter to add one quand j'aurai fait une installation depuis une version Ubuntu d'origine. Malgré tout, ce qui suit devrait vous servir ; tous les outils sont nécessaires :


<pre>
<pre>
Line 28: Line 30:
=== Installation de lttoolbox ===
=== Installation de lttoolbox ===
<pre>
<pre>
$ svn co https://apertium.svn.sourceforge.net/svnroot/apertium/trunk/lttoolbox
$ svn co https://svn.code.sf.net/p/apertium/svn/trunk/lttoolbox
$ cd lttoolbox
$ cd lttoolbox
$ ./autogen.sh
$ ./autogen.sh
Line 39: Line 41:
(VOIR DÉJÀ LA COHÉRENCE DU LIEN SUR LA PAGE ANGLAISE) !
(VOIR DÉJÀ LA COHÉRENCE DU LIEN SUR LA PAGE ANGLAISE) !


=== Installation de Apertium ===
=== Installation d'Apertium ===


<pre>$ svn co https://apertium.svn.sourceforge.net/svnroot/apertium/trunk/apertium
<pre>$ svn co https://svn.code.sf.net/p/apertium/svn/trunk/apertium
$ cd apertium
$ cd apertium
$ ./autogen.sh
$ ./autogen.sh
Line 63: Line 65:


=== Installation de mkcls ===
=== Installation de mkcls ===
==== Ubuntu: ====
==== Ubuntu ====
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].
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>
Line 69: Line 71:
</pre>
</pre>


==== Mac: ====
==== Mac ====
Récupérez giza-pp depuis [http://code.google.com/p/giza-pp/ http://code.google.com/p/giza-pp/], puis faites
Récupérez giza-pp depuis [http://code.google.com/p/giza-pp/ http://code.google.com/p/giza-pp/], puis faites
<pre>
<pre>
Line 94: Line 96:




== Creation des dictionnaires bilingues. ==
== Création des dictionnaires bilingues ==


=== Obtention d'un corpus (et getAlignmentWithText.pl) ===
=== Obtention d'un corpus (et getAlignmentWithText.pl) ===
Line 101: Line 103:
</pre>
</pre>


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 [http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/alignments/] et [http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/corpus/].
Choisissez une paire de langues. Pour cet exemple, nous prendrons l'italien (it) et l'anglais (en). Pour utiliser une autre paire, trouvez les noms de fichiers depuis le navigateur [http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/alignments/] et [http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/corpus/].


Récupérez le corpus associé et les fichiers d'alignement.
Récupérez le corpus associé et les fichiers d'alignement.
Line 109: Line 111:
$ wget http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/corpus/jrc-it.tgz
$ wget http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/corpus/jrc-it.tgz
</pre>
</pre>
Le corpus doit être désarchivé, et inseré dans un nouveau répertoire commun.
Le corpus doit être désarchivé et placé dans un nouveau répertoire commun.
<pre>
<pre>
$ tar xvzf jrc-en.tgz
$ tar xvzf jrc-en.tgz
Line 122: Line 124:
</pre>
</pre>


=== Extraction des sous ensembles du fichier d'alignement ===
=== Extraction de 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 :
À ce stade, on 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 de chaque langue devrait être extrait dans des fichiers spécifiques :


<pre>
<pre>
Line 131: Line 133:
</pre>
</pre>


Une étape optionnelle peut être utile. Si vous testez juste pour voir si ça marche, ou si vous avez une vieille machine, c'est mieux de n'utiliser qu'un sous ensemble des données, comme ça, elles pourront être analysées en 2 heures plutôt qu'en plusieurs jours. L'utilisation de 10,000 lignes pour chaque language a prit environ 2 hours sur mon Athlon 1.8 Ghz avec 512 MO de RAM. D'autres nombres de ligne conviennent aussi, mais utilisez le même nombre pour les deux fichiers.
Une étape facultative peut être utile. Si vous testez simplement pour voir si cela marche ou si vous avez une vieille machine, il est préférable de n'utiliser qu'un sous-ensemble des données, de telle sorte qu'elles pourront être analysées en 2 heures plutôt qu'en plusieurs jours. L'utilisation de 10.000 lignes pour chaque langue a pris environ 2 heures sur mon Athlon 1.8 Ghz avec 512 Mo de RAM. D'autres quantités de lignes conviennent aussi, mais utilisez le même nombre de lignes pour les deux fichiers.


<pre>
<pre>
Line 154: Line 156:
</pre>
</pre>


Si ça s'arrête en moins d'une minute, à moins que les dossiers d'entrée aient été minuscules, regardez le log - il est presque certain que la commande ait échoué.
Si le traitement prend fin après moins d'une minute, sauf si les dossiers d'entrée étaient minuscules - vérifiez le journal -, il est presque certain que la commande a échoué.


Si ça marche, un certain nombre de fichiers seront créés. Le plus intéressant est dictionary.A3.final, qui contient les informations d'alignement.
Si le traitement fonctionne, une série de fichiers seront créés. Le plus intéressant est dictionary.A3.final, qui contient les informations d'alignement.


Les 3 premières lignes de dictionary.A3.final, dans cet exemple de corpus, sont les suivantes. Elles ne sont apparemment pas particulièrement bonnes, probablement à cause du petit corpus.
Les 3 premières lignes de dictionary.A3.final, dans cet exemple de corpus, sont les suivantes. Elles ne sont apparemment pas particulièrement bonnes, probablement à cause de la taille réduite du corpus.
<pre>
<pre>
# Sentence pair (1) source length 26 target length 21 alignment score : 7.66784e-37
# Sentence pair (1) source length 26 target length 21 alignment score : 7.66784e-37
Line 173: Line 175:


== Acknowledgements ==
== 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.
This page wouldn't be possible without the kind assistance of 'spectie' on OFTC's #apertium. That said, all errors/typos are mine, not his.





Latest revision as of 02:52, 20 May 2021

In English

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.

Installation des programmes nécéssaires[edit]

Paquets Ubuntu prérequis[edit]

Ce n'est malheureusement pas une liste complète ; je (l'auteur de la version anglaise de cette page) m'attends à en rajouter to add one quand j'aurai fait une installation depuis une version Ubuntu d'origine. Malgré tout, ce qui suit devrait vous servir ; tous les outils sont nécessaires :

sudo apt-get install automake libtool libxml2-dev flex libpcre3-dev

Installation de Crossdics[edit]

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[edit]

$ svn co https://svn.code.sf.net/p/apertium/svn/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 d'Apertium[edit]

$ svn co https://svn.code.sf.net/p/apertium/svn/trunk/apertium
$ cd apertium
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

Installation de ReTraTos[edit]

$ 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[edit]

Ubuntu[edit]

Récupérez le paquet Debian approprié pour votre version d'Ubuntu sur ubuntu-nlp.

$ dpkg --install mkcls*.deb

Mac[edit]

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++[edit]

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


Création des dictionnaires bilingues[edit]

Obtention d'un corpus (et getAlignmentWithText.pl)[edit]

$ wget http://wt.jrc.it/lt/Acquis/JRC-Acquis.3.0/alignments/getAlignmentWithText.pl

Choisissez une paire de langues. Pour cet exemple, nous prendrons l'italien (it) et l'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 placé 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[edit]

$ perl getAlignmentWithText.pl -acquisDir acquis/ jrc-en-it.xml > alignement

Extraction de sous-ensembles du fichier d'alignement[edit]

À ce stade, on 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 de chaque langue devrait être extrait dans des fichiers spécifiques :

$ grep s1 alignement > en
$ grep s2 alignement > it

Une étape facultative peut être utile. Si vous testez simplement pour voir si cela marche ou si vous avez une vieille machine, il est préférable de n'utiliser qu'un sous-ensemble des données, de telle sorte qu'elles pourront être analysées en 2 heures plutôt qu'en plusieurs jours. L'utilisation de 10.000 lignes pour chaque langue a pris environ 2 heures sur mon Athlon 1.8 Ghz avec 512 Mo de RAM. D'autres quantités de lignes conviennent aussi, mais utilisez le même nombre de lignes pour les deux fichiers.

 
$ head -n 10000 en > en.10000
$ head -n 10000 it > it.10000

Exécution de plain2snt.out[edit]

Les noms de fichiers peuvent varier selon qu'on réalise ou non l'étape optionelle.

$ plain2snt.out en.10000 it.10000


Exécution de GIZA++[edit]

Article principal : Utiliser GIZA++

$ GIZA++ -S en.10000.vcb -T it.10000.vcb -C en.10000_it.10000.snt -p0 0.98 -o dictionary >& dictionary.log

Si le traitement prend fin après moins d'une minute, sauf si les dossiers d'entrée étaient minuscules - vérifiez le journal -, il est presque certain que la commande a échoué.

Si le traitement fonctionne, une série de fichiers seront créés. Le plus intéressant est dictionary.A3.final, qui contient les informations d'alignement.

Les 3 premières lignes de dictionary.A3.final, dans cet exemple de corpus, sont les suivantes. Elles ne sont apparemment pas particulièrement bonnes, probablement à cause de la taille réduite du 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[edit]

Acknowledgements[edit]

This page wouldn't be possible without the kind assistance of 'spectie' on OFTC's #apertium. That said, all errors/typos are mine, not his.