Projet TAL : traduction français-sms 1 Objectif L objectif de ce projet est de concevoir un logiciel permettant de traduire un texte écrit en langage SMS vers le français. La traduction sera effectuée comme la composition de la phrase d entrée avec une série de transducteurs réalisant chacun une étape de la traduction. Les étapes à mettre en œuvre sont les suivantes : transformation de la phrase d entrée en un automate séquentiel comportant une transition pour chaque caractère découpage du texte en unités typographiques appelées tokens ; application d un dictionnaire de traductions possibles ; traitement des mots inconnus ; estimation du poids des traductions par un modèle de langage bigramme ; extraction et affichage de la meilleure traduction. Vous utiliserez un ensemble de phrases qui ont été traduites à la main pour évaluer la qualité des traductions produites. Vous avez quatre séances pour réaliser ce TP, à l issue desquelles votre travail sera évalué sur des critères d avancement, de justesse et de clarté de vos explications. 2 Automate d entrée Le rôle de cette étape est de convertir une chaîne de caractères représentant une phrase SMS en un reconnaisseur qui accepte la séquence de caractères composant cette phrase. Pour cela, vous écrirez dans le langage de votre choix, un programme appelé auto qui prend en entrée une chaîne de caractère et produit le reconnaisseur souhaité. L automate construit commencera par une transition étiquetée <p> qui matérialise le début d une phrase et se terminera par une transition étiquetée </p>. De plus, les caractères d espacement seront représentés par le symbole <espace>. Par exemple : echo "Pq tu dis ca"./auto produit l automate P suivant : 1 2 P 2 3 q 3 4 <espace> 4 5 t 5 6 u 6 7 <espace> 7 8 d 8 9 i 9 10 s 10 11 <espace> 11 12 c 12 13 a 13 14 </p> 14 1
Lecture des caractères accentués Pour la lecture des caractères accentués, il faut utiliser le type wint_t ainsi que la fonction fgetwc, comme dans l exemple ci-dessous : #include <stdio.h> #include <wchar.h> #include <locale.h> int main() { wint_t c; setlocale(lc_all, ""); while(weof!= (c = fgetwc(stdin))) { wprintf(l"%d [%lc]\n", c, c); } return 0; } 3 Découpage en tokens Le transducteur D doit prendre en entrée une séquence de caractères et y ajouter en sortie des balises de début et fin de token. Il doit implémenter les règles suivantes : La première lettre d un token doit être précédée du symbole <t> ; la dernière lettre est suivie de </t>. Les séparateurs de tokens sont les espaces et la ponctuation, à l exception du tiret. La composition de l automate P avec D produira : 1 2 <t> 2 3 P 3 4 q 4 5 </t> 5 6 <espace> 6 7 <t> 7 8 t 8 9 u 9 10 </t> 10 11 <espace> 11 12 <t> 12 13 d 13 14 i 14 15 s 15 16 </t> 16 17 <espace> 17 18 <t> 18 19 c 19 20 a 20 21 </t> 21 22 </p> 22 4 Traduction des mots SMS connus Le fichier traductions.txt contient un petit dictionnaire de traduction entre la langue SMS et le français. Le but de cette étape est de remplacer les séquences de caractères correspondant à un mot SMS présent dans le fichier traductions.txt en sa traduction en français. Pour cela, nous procèderons en trois étapes. 2
4.1 Identification des mots SMS présents dans le dictionnaire Cette étape consiste à remplacer les balises <t> et </t> qui encadrent un token correspondant à un mot SMS présent dans le dictionnaire par les balises <m> et </m>. Certains mots SMS sont composés de plusieurs tokens. Dans ce cas, ces différents tokens devront être regroupés ensemble entre balises <m> et </m>. La suite des deux tokens A bientôt, par exemple, doivent être regroupés sous la forme d un mot. Comme illustré dans l exemple ci-dessous : 1 2 <t> 2 3 A 2 3 A 3 4 </t> 3 4 <espace> 6 7 b 4 5 b 7 8 i 5 6 i 8 9 e 6 7 e 9 10 n 7 8 n 10 11 t 8 9 t 11 12 ^o 9 10 ^o 12 13 t 10 11 t 13 14 </t> 11 12 </m> 14 15 </p> 12 13 </p> 15 13 Cette étape sera réalisée par composition avec un transducteur appelé I. 4.2 Remplacement des suites de caractères composant un mot en un mot A l issue de l étape précédente, certains tokens ont été regroupés au sein de balises <m> et </m> pour indiquer qu ils correspondent à des mots SMS. Lors de cette étape, les séquences de transitions qui constituent un mot vont être remplacées par une transition unique étiquetée par un mot. Cette étape sera réalisée par composition avec un transducteur appelé R. Pour reprendre notre premier exemple, le résultat de la composition P D I R produira : 2 3 Pq 6 7 t 7 8 u 8 9 </t> 9 10 <espace> 10 11 <t> 11 12 d 12 13 i 13 14 s 14 15 </t> 15 16 <espace> 16 17 <m> 17 18 ca 19 20 </m> 20 21 </p> 21 4.3 Traduction La dernière étape consiste à effectuer la traduction des mots SMS en leur équivalent en français, tel que décrit dans le fichier traduction.txt. Cette étape ne va traduire que les mots compris entre balises <m> et </m>. Cette 3
étape est réalisée par un transducteur A. Notez que certains mots peuvent être traduits de manières différentes (comme 1 qui peut être un, une ou 1 en français). Donc il faudra prendre en compte cette ambiguïté dans le transducteur A. le résultat de la composition P D I R A produira : 2 3 pourquoi 6 7 t 7 8 u 8 9 </t> 9 10 <espace> 10 11 <t> 11 12 d 12 13 i 13 14 s 14 15 </t> 15 16 <espace> 16 17 <m> 17 18 ça 19 20 </m> 20 21 </p> 21 5 Détection des mots français L étape précédente a traduit certains tokens en mots SMS. Le but de cette étape est de détecter les tokens non traduits à l étape précédente et qui correspondent à des mots du français. 2 3 pourquoi 5 6 <m> 6 7 tu 7 8 </m> 8 9 <espace> 9 10 <m> 10 11 dis 11 12 </m> 12 13 <espace> 13 14 <m> 14 15 ça 15 16 </m> 16 17 </p> 17 6 Traduction des mots inconnus Le dictionnaire traduction.txt ne comporte qu une partie du vocabulaire SMS. Le but de cette étape est d essayer de déchiffrer des mots SMS absents de traduction.txt. Pour cela, on va utiliser la transcription phonétique des mots (la manière dont ils se prononcent) pour essayer de retrouver des mots français correspondants. 4
Par exemple, le mot SMS fot sera transcrit de la manière suivante fot qui sera traduit en français par faute grâce au dictionnaire phonétique dico-fr.txt. Vous devez implémenter les règles de transformation suivantes : Chiffres : 1 un, 2 de, 8 hui Sons : k que, K ca ; é et, T té De plus, vous pourrez utiliser le dictionnaire de phonétisation phonemes.txtje ne l ai pas trouvé 1 pour associer des sons à une séquence de charactères. Ce dictionnaire utilise l alphabet phonétique international pour représenter les sons qui composent un mot. Il faudra par la suite filtrer les possibilités à l aide de dico-fr.txt afin de ne garder que des mots français corrects. 7 Modèle de langage Nous utiliserons le modèle de langage bigramme suivant : Avec : P (w 1... w n ) = P (w 1 ) P (w 2 w 1 ) P (w n w n 1 ) P (w i w i 1 ) = nb(w i 1w i ) nb(w i 1 ) Vous calculerez nb(w i ) à partir du fichier corpus-fr-train.txt. La probabilité des bigrammes contenant des mots inconnus et des bigrammes non observés sera fixée à 10 7. Ensuite, il faudra créer un transducteur qui a chaque séquence de mots associe sa probabilité. 8 Phrase traduite Par l opération inverse de création de l automate d entrée, vous devrez recréer la phrase traduite depuis la séquence de caractères de meilleure probabilité selon le modèle de langage. Vous devrez modifier l étape de création des l automate d entrée et de génération de la phrase en sortie pour traiter plusieurs phrases grâce aux commandes farcompiletrings, farfilter et farprintstrings. 9 Évaluation Traduisez les phrase du fichier corpus-sms-test.txt à l aide de votre séquence de transducteurs. Puis comparez les aux phrases de corpus-fr-test.txt. Pour celà, construisez un automate qui calcule le nombre de mots en commun entre votre traduction et la référence. Puis, déduisez en un taux de réussite en divisant ce nombre par la longueur de la phrase en français. Comparez l approche qui utilise uniquement un dictionnaire de traduction à celle qui considère tous les mots comme inconnus et passe par leur phonétisation et enfin l approche hybride qui applique d abord le dictionnaire puis traite les mots restants à l aide de leur prononciation. 1. produit à partir de la page wikipedia http://fr.wikipedia.org/wiki/liste_des_graphies_des_phonmes_du_franais 5