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/cleancorpusn.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 sontelles 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/ngramcount order 3 interpolate kndiscount unk text ../training/train.fr lm train.lm (info http://www.speech.sri.com/projects/srilm/manpages/ngramcount.1.html) Observez le fichier résultat 22 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/trainmodel.perl rootdir . externalbindir ../external corpus ../training/newscommentary.lowercased f fr e en alignment growdiagfinaland reordering msd bidirectionalfe lm 0:3:/home/Desktop/moses/training/newscommentary.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.fren/fren.A3.final et giza.enfr/enfr.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é ?