Utiliser GIZA++

From Apertium
Revision as of 19:34, 18 March 2012 by Bech (talk | contribs) (Création page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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 )

Voir aussi

Liens externes (en anglais)