Cursus de Linguistique Informatique, Université Paris Diderot
Projets informatique de master 1, année 2009-2010



ELIZA en français

On vous propose d'implémenter une version française de ELIZA. ELIZA est historiquement le premier succès spectaculaire du TAL. Il s'agit d'un petit agent conversationnel qui simule une conversation entre vous et un psychanalyste de patience infinie. Exemple de conversation en français :

   Système : "Comment allez vous ?" 
   Utilisateur : "Je suis déprimé." 
   S : "Dites-moi pourquoi vous êtes déprimé." 
   U : "Je passe trop de temps avec les ordinateurs."   
   S : "Pourquoi mentionnez-vous les ordinateurs ?" 
   U : "Parce que tu en es un." 
   S : "Quels sont vos rapports avec les ordinateurs ?" 
   U : "Difficiles."  
   S : etc 

Ce petit agent fonctionne principalement à l'aide de techniques élémentaires de pattern matching (expressions régulières) et vous demande de manipuler une pile simulant sa mémoire. Le sujet se focalisera sur les points suivants :

Responsable : Grégoire Winterstein

Difficulté : difficile

Langage : Java

Groupe : 2 personnes

Détection de la langue d'un texte

Pour détecter la langue d'un texte, on peut constituer une base de connaissances à partir d'un corpus de textes classés par langue. Pour chaque langue, un premier programme (à écrire) recueillera des statistiques significatives, basées sur les lettres (par exemple, il y a plus de "w" en anglais qu'en français). Le choix du modèle probabiliste employé et de ses paramètres (bigrammes, trigrammes) devra être justifié dans le rapport. On peut en proposer plusieurs et discuter de leurs avantages et inconvenients (rapport entre précision de la reconnaissance et volume de la base de connaissances ou longueur du texte nécessaire pour reconnaître sa langue).

Un deuxième programme (à écrire), utilisera ces bases de connaissances pour reconnaître la langue d'un texte.

Vous utiliserez un corpus d'apprentissage comprenant des textes plus ou moins variés d'un certain nombre de langues (le plus de langues possible, au moins 4). Le corpus de test ne devra pas contenir de texte appartenant au corpus d'apprentissage.

Amélioration possible : gérer des textes dans différents encodages, pour les langues à alphabet non latin.

Responsable : Grégoire Winterstein

Langage : Java

Groupe : 2 personnes

Difficulté :Facile à moyen

Correcteur orthographique (approche graphémique)

On se propose de réaliser un correcteur orthographique (lexical), qui, disposant d'un dictionnaire de formes fléchies, détecte les mots mal orthographiés, et propose si possible une correction.

Le programme prend un texte (ASCII brut) en entrée, et pour chaque forme non présente dans le dictionnaire, propose à l'utilisateur :

Les remplaçants proposés par le programme (premier cas plus haut) seront des mots figurant dans le dictionnaire, et ayant une certaine proximité avec le mot fautif.

Pour la recherche des mots proches, on appliquera diverses heuristiques, basées sur la forme du mot :

Ces heuristiques, qui peuvent être plus nombreuses, seront étudiées linguistiquement afin de déterminer précisément leurs conditions d'application.

Ressources :

Responsable : Grégoire Winterstein

Langage : Java

Groupe : 2 personnes

Réaccentuation

Le programme est chargé de remettre les accents et autres signes diacritiques manquant dans un texte fourni en typographie dite pauvre.

On s'aidera d'un lexique de formes fléchies fourni. Bien sûr, certaines formes peuvent être réaccentuées directement, et d'autres sont ambigues. Une fois que l'algorithme principal sera établi, on envisagera des heuristiques pour lever les ambiguïtés. Exemple :

La ou le francais n'est pas accentue,
il y a de la gene,
mais quand le systeme m'accentue,
je suis moins gene!

Ressources :

Responsable : Grégoire Winterstein

Langage : Java

Groupe : 2 personnes

Entités Nommées

On regroupe sous le terme "entités nommées" les noms de personnes, de lieux, de dates, noms d'entreprises, adresses, etc. Il s'agit d'expressions qui dénotent une entité unique de façon presque indépendante du contexte. On s'intéresse aux entités nommées pour plusieurs raisons :

Il s'agit dans ce projet de repérer de la façon la plus complète possible dans un texte étiqueté ou non, les entités de type "personne". Pour cela, on envisagera un algorithme en deux étapes (qui peuvent se répéter) :

L'idée est que le programme s'enrichit au fur et à mesure qu'il est utilisé.

Responsable : Grégoire Winterstein

Difficulté : Facile à très difficile

Langage : Java

Groupe : 2 ou 3 personnes

Extraction de collocations en corpus

Les collocations sont des ensembles de deux ou plusieurs mots qui sont plus fréquemment coocurrents que la normale. Il s'agit de constructions qui ont une syntaxe classique mais une sémantique qui n'est pas complètement compositionnelle.

Par exemple on considère que thé fort est une collocation car ces deux mots apparaissent assez souvent en même temps et le sens de fort dans cette séquence est légèrement altéré : il ne s'agit pas d'une grande force physique mais plutôt d'une forte concentration d'un agent du thé.

Ce sujet propose de partir à la découverte de différentes méthodes connues de détection de collocations en corpus reposant sur des tests d'hypothèses statistiques (comme par exemple le test du Chi2 ou le test exact de Fisher) en utilisant des logiciels d'analyse de données appropriés.

Responsable : Grégoire Winterstein

Difficulté : Moyen

Langage : Java ou langage de script (python ou Perl) et initiation au langage R (facultatif)

Groupe : 2 personnes

Clavier Téléphone (T9)

La plupart des téléphones associent à chaque touche un certain nombre de lettres, permettant ainsi de transmettre des messages. Du fait qu'un chiffre ne correspond pas à une seule lettre, une suite de chiffres peut être ambiguë (elle peut correspondre à plus d'un mot). La suite 7-6-8-7, par exemple, correspond aux mots pour, sous et pots. Le but du projet est de réaliser un programme qui prend en entrée une suite de chiffre et un dictionnaire de formes fléchies et qui propose en sortie la liste des mots du dictionnaire qui correspondent à la suite des chiffres. Ces mots seront classés selon une fréquence représentée dans le dictionnaire. On attachera un soin particulier au choix de la structure de données, et à l'algorithme, qui doit faire le calcul en un temps raisonnable.

Responsable : Grégoire Winterstein

Difficulté : Moyen

Langage : Java ou langage de script (python ou Perl)

Groupe : 2 personnes