Initiation à la traduction automatique TP1

Transcription

Initiation à la traduction automatique TP1
Initiation à la traduction automatique
TP1-Master 2 – ATAL
Amir HAZEM
Préambule :
La traduction automatique est devenue une technologie incontournable. Plusieurs approches
existent, mais depuis quelques années la traduction automatique statistique est considérée comme la
plus prometteuse. Dans cette approche, toutes les connaissances sont extraites automatiquement à
partir d'exemples de traductions, appelés textes ou corpus parallèles. La traduction automatique
statistique est fondée sur l'apprentissage de modèles à partir de corpus parallèles bilingues. Le but
de ce TP est de construire un système de traduction automatique statistique fondé sur les séquences
(phrase-based translation).
Matériel nécessaire
1- Téléchargez le fichier traduction_automatique.zip
2- Lancer dans la racine le script ./install.sh
Liens utiles :
http://www.statmt.org/moses/?n=Development.GetStarted
http://code.google.com/p/giza-pp/downloads/list
1- Préparation des données (Pré-traitements)
- Créez un répertoire de travail (work par exemple) et récupérez les données d'entrainement.
(http://www-lium.univ-lemans.fr/~barrault/COURS/M2-Trad/)
- Tokenizez les données d’entraînement (en-fr)
gzip ­cd train.en.gz | perl ../scripts/tokenizer.perl ­l en > train.tok.en
ou perl ../scripts/tokenizer.perl ­l en < train.en > train.tok.en
­ Filtrez les phrases longues.
perl ../mosesdecoder/scripts/training/clean­corpus­n.perl train.tok fr en train.tok.clean 1 40
­ Passez
le vocabulaire en minuscule.
perl ../scripts/lowercase.perl < train.tok.clean.en > ../training/train.lowercased.en
­ Toutes ces étapes sont­elles nécessaires ? Justifiez votre réponse.
2- Introduction au système de traduction automatique Moses
2-1- Alignement (GIZA++)
Un alignement mot à mot entre une phrase et sa traduction consiste à extraire des relations
d’appariement entre les mots de la phrase source et les mots de sa traduction. Aujourd’hui le
principal système d’alignement état de l’art, Giza++, repose sur une combinaison
des modèles génératifs IBM.
1) Voici un échantillon d'un corpus parallèle d'apprentissage anglais/français :
Partie anglaise
Partie française
Taming Politicians on Both Sides of the Atlantic.
Apprivoiser les politiciens des deux côtés de
l'Atlantique.
The US Federal Reserve Board is, of course, very
independent.
La Réserve fédérale américaine est bien entendu
extrêmement indépendante.
This is far more difficult!
C'est une tâche bien plus difficile !
1 ) Peut-on exploiter cet échantillon tel quel pour apprendre un modèle via GIZA++ ?
- Si non, quelles sont les modifications à apporter à ce corpus ?
2) Lancez la commande plain2snt.out pour obtenir les fichiers du vocabulaire source et cible
(.vcb) ainsi que le fichier des couples de phrases (.snt). Observez les fichiers résultats.
Ex : ../giza-pp/GIZA++-v2/plain2snt.out train.en train.fr
3) Construisez un fichier de co-occurrences à l'aide de la commande snt2cooc.out
Ex : ../giza-pp/GIZA++-v2/snt2cooc.out train.fr.vcb train.en.vcb train.fr_train.en.snt > file.cooc
4) Produisez un alignement à l'aide de Giza++
Ex : ../giza-pp/GIZA++-v2/GIZA++ -s train.fr.vcb -t train.en.vcb -c train.fr_train.en.snt -CoocurrenceFile
file.cooc
Observez les fichiers résultats.
2-2 Entrainement d'un système de traduction
Nous allons suivre les étapes listées dans la page d’accueil :
http://www.statmt.org/moses/?n=FactoredTraining.HomePage
1- Préparation des données (Pré-traitements)
2-
Construction du modèle de langage et du modèle de traduction
2-1- Création du modèle de langage en langue cible (Français)
- Configurez srilm (voir le makefile)
- Construisez un simple modèle trigrammes en exécutant la commande suivante :
../srilm/bin/i686/ngram­count ­order 3 ­interpolate ­kndiscount ­unk ­text ../training/train.fr ­lm train.lm
(info http://www.speech.sri.com/projects/srilm/manpages/ngram­count.1.html) ­ Observez le fichier résultat 2­2­ Apprentissage du modèle de traduction (Entraînement)
­ Copiez dans le répertoire external les exécutables de GIZA++ et mkcls (GIZA++, mkcls, plain2snt.out, snt2cooc.out et snt2plain.out)
­ Lancez la commande d'apprentissage suivante : perl ../mosesdecoder/scripts/training/train­model.perl ­root­dir . ­external­bin­dir ../external ­corpus ../training/news­commentary.lowercased ­f fr ­e en ­alignment grow­diag­final­and ­reordering msd­
bidirectional­fe ­lm 0:3:/home/Desktop/moses/training/news­commentary.lm >& training.out & ­ Vous pouvez observer les fichiers du vocabulaire source et cible (.vcb) ainsi que le fichier des couples de phrases (.snt). ­ Vous pouvez aussi observer les alignements dans giza.fr­en/fr­en.A3.final et giza.en­fr/en­fr.A3.final
3- Test du modèle de langage
- Filtrez la table de décodage pour ne pas tout charger en mémoire
../mosesdecoder/scripts/training/filter-model-given-input.pl out model/moses.ini test.en
- Lancez le décodeur sur le fichier de test (test.en par exemple)
../mosesdecoder/bin/moses -f out/moses.ini < test.en > res.fr
Que constatez vous ?
4- Correction d'erreurs
- Testez la démo en ligne de Moses : http://demo.statmt.org/index.php
- La démo vous offre la possibilité de corriger une traduction erronée et de la ressoumettre au
système. Testez cette fonctionnalité. Que constatez vous ?
- Pourriez-vous proposer une méthode pour prendre en compte les corrections de manière quasiinstantané ?