Préparation de données pour Moses
Cette page donne une description sur la manière de pré-traiter un corpus en utilisant Apertium afin qu'il puisse être utilisé pour entraîner Moses "factoredly" (???).
Contents
Exigences[edit]
- Lttoolbox (français)
- Apertium (français)
tagger-to-factored.py
script de apertium SVN
Étapes[edit]
Télécharger et compiler les données[edit]
Pour le corpus parallèle, on va utiliser Europarl, la page corpora (seulement en anglais) en liste d'autres :
$ wget http://www.statmt.org/europarl/v5/da-en.tgz $ tar -xzf da-en.tgz
Et pour l'analyseur morphologique et le tagger, on va utiliser apertium-sv-da
et apertium-is-en
. Vous pouvez en trouver d'autres dans : Liste des paires de langues et list of dictionaries.
$ wget https://svn.code.sf.net/p/apertium/svn/trunk/apertium-sv-da/apertium-sv-da.da.dix $ wget https://svn.code.sf.net/p/apertium/svn/trunk/apertium-sv-da/da-sv.prob $ wget https://svn.code.sf.net/p/apertium/svn/trunk/apertium-is-en/apertium-is-en.en.dix $ wget https://svn.code.sf.net/p/apertium/svn/trunk/apertium-is-en/en-is.prob $ lt-comp lr apertium-sv-da.da.dix da-sv.automorf.bin final@inconditional 20 105 main@standard 9121 18055 unchecked@standard 4411 8130 $ lt-comp lr apertium-is-en.en.dix en-is.automorf.bin final@inconditional 97 2809 main@standard 22284 47423
The
Nettoyer et baliser chaque coté du corpus[edit]
Supprimer chaque ligne qui commence par des balises :
$ cat da-en/da/* | grep -v '^<' > europarl.da $ cat da-en/en/* | grep -v '^<' > europarl.en
Vérifier que les fichiers ont la même longueur.
$ wc -l europarl.* 1687533 europarl.da 1687533 europarl.en
Analyser et baliser le corpus :
$ cat europarl.da | apertium-destxt | lt-proc -w da-sv.automorf.bin | \ apertium-tagger -g -p da-sv.prob | apertium-retxt > tagged.da $ cat europarl.en | apertium-destxt | lt-proc -w en-is.automorf.bin | \ apertium-tagger -g -p en-is.prob | apertium-retxt > tagged.en
Notez que l'option -w
supporte la mise en minuscules du dictionnaire, c'est à dire, que le lemme est envoyé avec la casse qu'il a dans le dictionnaire, pas celle de la forme de surface.
Convertir dans le format "factored" pour Moses[edit]
Télécharger le tagger pour le script factored (???) :
$ wget https://svn.code.sf.net/p/apertium/svn/trunk/apertium-tools/tagger-to-factored.py
Alors convertir dans le format "factored" pour Moses :
$ cat tagged.da | python tagger-to-factored.py 2 > factored.da $ cat tagged.en | python tagger-to-factored.py 2 > factored.en
Note: Le nombre en option de tagger-to-factored.py
spécifie combien de balises vous voulez envoyer. En mettant 0
ça va seulement envoyer la forme de surface et le lemme. En mettant 1
ça va envoyer la forme de surface, le lemme et la première balise (qui est presque toujours la balise POS). Tout ce qui précède sera envoyé comme avant, mais un facteur supplémentaire sera envoyé comme le reste de l'information morphologique.
Par exemple:
$ echo "^der/der<adv>$ ^blev/blive<vblex><past><actv>$ ^ramt/ramme<vblex><pp>$^./.<sent>$" | python tagger-to-factored.py 0 der|der blev|blive ramt|ramme .|. $ echo "^der/der<adv>$ ^blev/blive<vblex><past><actv>$ ^ramt/ramme<vblex><pp>$^./.<sent>$" | python tagger-to-factored.py 1 der|der|adv blev|blive|vblex ramt|ramme|vblex .|.|sent $ echo "^der/der<adv>$ ^blev/blive<vblex><past><actv>$ ^ramt/ramme<vblex><pp>$^./.<sent>$" | python tagger-to-factored.py 2 der|der|adv|adv blev|blive|vblex|vblex.past ramt|ramme|vblex|vblex.pp .|.|sent|sent $ echo "^der/der<adv>$ ^blev/blive<vblex><past><actv>$ ^ramt/ramme<vblex><pp>$^./.<sent>$" | python tagger-to-factored.py der|der|adv|adv blev|blive|vblex|vblex.past.actv ramt|ramme|vblex|vblex.pp .|.|sent|sent
Après ça, vérifiez de nouveau que les fichiers ont la même longueur :
$ wc -l factored.*
Entraîner un modèle "factored" basé sur des phrases[edit]
Maintenant vous avez les données, vous pouvez entraîner un modèle "factored" basé sur des phrases avec Moses !