:: Enseignements :: Master :: M2 :: 2009-2010 :: Traitement Automatique des Langues ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Alignement mot à mot |
Dans ce TD, nous allons écrire un petit programme qui aligne les mots.
Corpus
Pour ce TP, vous disposez d'un corpus parallèle anglais-français aligné en phrases, issu du corpus europarl.
Il se situe dans le répertoire suivant: /home/ens/mconstan/corpus/europarl-light.
Il comporte deux sous-répertoires train et test contenant respectivement un corpus parallèle d'entrainement et un corpus parallèle de test.
Chacun d'eux a un répertoire en (pour l'anglais) et un répertoire fr (pour le français).
Chaque fichier du répertoire en correspond au fichier de même nom dans le répertoire fr (et vice-versa).
Les blocs de textes de chaque ligne des paires de fichiers sont alignés un à un.
Les fichiers sont encodés en utf-8.
Exercice 1 - Entrainement
Le but de cet exercice est de créer un index pour chaque langue qui pour chaque token-mot du corpus d'entrainement, associe la liste des phrases (identifiées par un numéro) dans lesquels il apparaît.
L'index est une table de hachage (ou dictionnaire) ayant pour clé une chaîne de caractères et pour valeur associée un ensemble de nombres entiers.
Pour cela, suivre les instructions suivantes :
- Ecrire une fonction tokenize qui prend une chaîne de caractères en paramètre et renvoie la liste de ses tokens-mots.
- Ecrire une fonction indexingFile qui prend comme paramètre un nom de fichier texte, un index et le numéro de la dernière ligne traitée.
Elle cherchera à lire les lignes du fichier et pour chacune d'elles à compléter l'index.
Elle retournera le nombre de lignes déjà traitées au total.
- Ecrire une fonction indexCorpus qui prend comme paramètres:
- le chemin du répertoire du corpus d'apprentissage
- les indexes pour l'anglais et le français
Elle indexera les différents textes du corpus et mettra à jour les deux indexes.
- Ecrire une fonction saveIndex qui sauvegarde l'index placé en paramètre dans un fichier.
Exercice 2 - Alignement
Etant donné un texte aligné avec un autre (deux fichiers textes en paramètres),
écrire un programme qui, pour chaque mot de la phrase en langue cible, associe (si possible) un mot en langue source.
Pour cela, suivre les instructions suivantes:
- Ecrire une fonction loadIndex qui charge un index.
- Ecrire une fonction dice qui calcule le coefficient de Dice pour deux mots passés en paramètres.
Indication: le nombre de fois que ces deux mots cooccurent est la taille de l'intersection entre les ensembles associés aux deux mots dans les indexes.
Le nombre d'occurrences d'un mot dans une langue est la taille de l'ensemble associé dans l'index.
- Ecrire une fonction alignBlocks qui prend deux textes et qui aligne ces deux textes par mots en utilisant une des deux méthodes vues en cours.
Elle renvoie l'alignement (rappel: un tableau).
- Ecrire une fonction alignFiles qui prend deux fichiers alignés par phrases en paramètres.
Cette fonction alignera les mots des différentes lignes correspondantes.
© Université de Marne-la-Vallée