Utiliser GIZA++
GIZA++ est un programme pour aligner les mots et les séquences de mots dans les corpus de phrases alignées. Si vous avez un corpus parallèle vous pouvez utiliser GIZA++ pour faire des dictionnaires bilingues pour Apertium (par exemple en utilisant l'outil ReTraTos).
Compilation
Téléchargez et compilez GIZA++.
Note: Si vous utilisez un système de fichiers qui ne distingue pas majuscules et minuscules (typiquement pour Mac OS) il vous faudra éditer le fichier model3.cpp
avant de le compiler, car il génère deux fichiers appelés foo.a3.final
et foo.A3.final
. Donc avant de compiler, changer par exemple les lignes 321--322 :
alignfile = Prefix + ".A3." + number ; test_alignfile = Prefix + ".tst.A3." + number ;
en quelque-chose comme
alignfile = Prefix + ".AA3." + number ; test_alignfile = Prefix + ".tst.AA3." + number ;
Utilisation
Téléchargez votre corpus, et convertissez-le avec une phrase par ligne.
Utilisez plain2snt.out
pour convertir votre corpus dans le format GIZA++ :
$ plain2snt.out sv-text.txt da-text.txt w1:sv-text w2:da-text sv-text -> sv-text da-text -> da-text
Vous pourriez obtenir quelques avertissements au sujet des phrases vides comme ceux-ci :
WARNING: filtered out empty sentence (source: sv-text.txt 23 target: da-text.txt 0). WARNING: filtered out empty sentence (source: sv-text.txt 34 target: da-text.txt 0).
Si c'est un gros corpus vous pourrez obtenir beaucoup d'avertissements... — si vous avez beaucoup d'avertissements, envisagez de changer le corpus.
Après l'avoir fait, vous devriez avoir un couple de fichiers .snt
et un couple de fichiers .vcb
.
Ensuite il vous faut générer les classes de mots, en utilisant mkcls
:
$ mkcls -m2 -psv-text.txt -c50 -Vsv-text.vcb.classes opt >& mkcls1.log $ mkcls -m2 -pda-text.txt -c50 -Vda-text.vcb.classes opt >& mkcls1.log
Maintenant utilisez GIZA++ pour fabriquer votre dictionnaire (-S
est la langue source, -T
est la langue cible, -C
est le fichier texte aligné généré, et -o
est le préfixe de fichier de sortie ):
$ GIZA++ -S sv-text.vcb -T da-text.vcb -C sv-text_da-text.snt -p0 0.98 -o dictionnaire >& dictionnaire.log
et attendez... Vous pouvez observer le log dans dictionnaire.log
... mais l'entraînement est susceptible de prendre plus de 10 heures (au plus quelques jours), donc ayez autre-chose de planifié.
L'alignement final peut être trouvé dans le fichier dictionnaire.A3.final
trainGIZA++.sh
- Note: Ces changements s'appliquent seulement si vous ne prévoyez pas d'utiliser l'outil Moses
Pour utiliser le script trainGIZA++.sh
, vous avez besoin de faire quelques modifications avant de compiler :
Dans Makefile
changez :
CFLAGS_OPT = $(CFLAGS) -O3 -DNDEBUG -DWORDINDEX_WITH_4_BYTE -DBINARY_SEARCH_FOR_TTABLE
en :
CFLAGS_OPT = $(CFLAGS) -O3 -DNDEBUG -DWORDINDEX_WITH_4_BYTE
et dans trainGIZA++.sh
lui-même, changez :
if( $# != 3 )
en :
if( $#argv != 3 )