Logo Paris 7 haut Cursus de Linguistique Informatique UFR de Linguistique
Logo Paris 7 bas




Responsable : Marie Candito prenom.nom@linguist.jussieu.fr

Projets L3

Le sujet peut être choisi parmi les sujets proposés suivants, ou il peut s'agir d'un sujet à l'initiative de l'étudiant, auquel cas il faut en fournir une description rédigée d'une à deux pages, et obtenir l'accord de l'enseignant.

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 :

  • Identifier un mot clé et axer la réponse sur ce mot clé (exemple : retenir un groupe de deux mots commençant par un déterminant, "les ordinateurs" dans "Je passe trop de temps avec les ordinateurs"),
  • Revenir à un mot clé quand l'énoncé courant ne permet de générer aucune réponse,
  • Exploiter des phrases à trou (exemple : "Pourquoi mentionnez-vous" + mot clé),
  • Traduire les mots référant aux interlocuteurs : "je", "vous", "moi", "me", etc. (exemple : "je suis déprimé" devient "vous êtes déprimé" dans "Dites-moi pourquoi vous êtes déprimé").
  • Sortir des réponses types au hasard (exemple : "Comment allez-vous ?").

Responsable : Benoit Crabbé

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 : Marie Candito

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 :

  • de choisir un de ces remplaçants
    • pour l'occurrence, ou pour toutes les occurrences
  • de fournir un remplaçant
    • pour l'occurrence, ou pour toutes les occurrences
    • si le remplaçant n'est pas dans le lexique,
      • de l'insérer dans le lexique pour ce texte,
      • de l'insérer dans le lexique stable
  • d'ignorer la correction, c'est-à-dire conserver le mot initial, pour cette occurrence ou pour toutes, en l'insérant ou non dans le lexique.

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 :

  • repérage des bigrammes ou trigrammes impossibles en français
  • redoublement ou dé-doublement de consonnes
  • suppression/insertion de diacritiques
  • distance d'édition
  • etc

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

Ressources :

Responsable : Marie Candito

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 : Benoit Crabbé

Langage : Java

Groupe : 2 personnes

Extraction de sigles

L'objectif est d'être capable de construire, semi-automatiquement, la liste des sigles (acronymes) (par exemple EDF), et de leur forme développée (par exemple Electricité de France), utilisés dans un texte donné. Le programme aura deux fonctions :

  1. Création (extraction) de la liste (triée, normalisée) des sigles du texte donné. Attention aux formes diverses d'un même sigle (Inalf, I.N.A.L.F, INaLF).
  2. Proposition (interactive) de syntagmes candidats pour la forme développée, quand on en trouve dans le texte.

Le texte fourni est en ASCII brut.

Ressources :

Responsable : Marie Candito

Langage : Java

Groupe : 2 personnes

Justification et césure

Il s'agit de réaliser un programme qui justifie (au sens des traitements de texte) un texte fourni en ASCII, sur un nombre de colonnes donné, en ajoutant des espaces entre les mots et/ou en découpant les mots selon les règles en usage pour le français.

On supposera que tous les caractères ont la même dimension (« fonte fixe »).

Pour le découpage (éventuel) des mots (césure), on prendra bien garde de distinguer les règles, qui seront stockées dans un fichier, du programme lui-même. On s'autorisera à utiliser un dictionnaire d'exceptions.

Ressource :

Responsable : Benoit Crabbé

Langage : Java

Groupe : 2 personnes