Projet informatique de licence (LI312), 1996-97
Sujet
Au choix parmi les sujets 1 et 2 proposés, ou sujet à votre initiative1, après accord de
l'enseignant.
Organisation
Rapport
Un rapport (une vingtaine de pages, plus les listings) est demandé.
Il devra décrire les choix effectués sur les plans linguistique et
informatique, et expliquer les programmes développés.
Une part importante de la note finale reposera sur la lisibilité des
programmes. Il est donc conseillé de commenter et de décomposer, sous
forme de fonctions et procédures, vos programmes.
Projet n° 1
Écriture d'un programme permettant :
- d'extraire des phrases correspondant à des séquences données,
- de corriger des étiquettes grammaticales à partir de règles à
définir.
1. Extraction de phrases correspondant à des séquences données
Disposant d'un corpus étiqueté et lemmatisé
(chaque mot du corpus est accompagné de son étiquette grammaticale et
du lemme lui correspondant), il s'agit, dans un premier temps,
d'extraire les phrases de ce corpus comportant des séquences
d'étiquettes et/ou de lemmes données.
1.1. Les séquences
Les séquences représentent des suites admissibles d'étiquettes
grammaticales et/ou de lemmes que l'on peut représenter sous forme
d'expressions régulières.
Deux symboles ont une signification particulière dans les séquences:
- *
- signifie zéro ou plusieurs occurrences de l'entité (étiquette
grammaticale ou lemme) précédente,
- +
- signifie une ou plusieurs occurrences de l'entité
précédente.
Voici quelques exemples de séquences accompagnées de leur
interprétation :
SUBS ADJ | un substantif, suivi d'un adjectif |
SUBS ADJ* PREP | un substantif, suivi d'un
nombre quelconque d'adjectifs, suivi d'une préposition |
SUBS ADJ+ PREP | un substantif, suivi d'au
moins un adjectif, suivi d'une préposition. |
1.2. Exemple de phrase à extraire
Considérons la phrase suivante extraite du corpus :
ce | DETRMS | ce |
paragraphe | SUBSMS | paragraphe |
résume | VER3B | résumer |
les | DETRMP | les |
problèmes | SUBMP | problème |
qui | PRELMP | qui |
doivent | VERB6 | devoir |
être | AUXE | être |
résolus | PPASMP | résoudre |
pour | PREP | pour |
exploiter | VINF | exploiter |
des | PDES | des |
liaisons | SUBSFP | liaison |
de | PDEA | de |
télécommunicatio | SUBSFS | télécommunication |
par | PREP | par |
satellite | SUBSMS | satellite |
Cette phrase doit être extraite si la séquence recherchée est
VINF des SUBS mais ne doit pas l'être si la séquence recherchée est
SUBS ADJ des SUBS.
1.3. Extraction des phrases
Il vous est ici demandé d'extraire du corpus les phrases correspondant aux
séquences suivantes :
- VINF des SUBS
- PREP VINF des ADJ* SUBS
- PREP des ADV* ADJ* SUBS
- SUBS ADJ+ des ADV* ADJ* SUBS
A chaque séquence sera associé un fichier dans lequel vous rangerez les
phrases correspondant à la séquence.
Remarques
- les étiquettes grammaticales utilisées dans les séquences
sont plus générales que celles utilisées dans le corpus. En particulier, aucune
information de genre et de nombre n'est donnée dans ces séquences,
- les prépositions ``à'' et ``de'' sont étiquetées PDEA dans le
corpus sur lequel vous travaillerez mais doivent être considérées comme
des prépositions.
Indication Il est possible de représenter les séquences
sous forme de tableau où chaque élément correspond à une entité. La
séquence SUBS ADJ+ PREP peut ainsi être représentée par le
tableau suivant, dans lequel l'élément ``+'' indique qu'on peut répéter
l'élément précédent. Une séquence est reconnue dans une phrase
lorsqu'on a réussi à parcourir tout le tableau en lisant la phrase.
2. Correction des étiquettes grammaticales
Il s'agit ici d'écrire des règles et un programme permettant de corriger les
éventuelles erreurs d'étiquetage que vous aurez pu relever sur le mot ``des''.
Les règles auront la forme suivante :
Changer l'étiquette Yl du mot X en Y2 si les étiquettes Zl et Z2 sont présentes
dans le contexte de X, le contexte étant défini comme l'ensemble des cinq
mots précédant et des cinq mots suivant X.
Vous pourrez ajouter des contraintes sur ces règles (comme par exemple le
fait que Zl et Z2 doivent se suivre).
Il vous faudra vérifier que les règles que vous écrivez ne génèrent pas plus
d'erreurs qu'elles n'en corrigent.
3. Extension
Vous pourrez definir de nouvelles séquences associées à ``des'' si vous le
jugez utile (ou si vous avez terminé le projet en avance). Vous pourrez
également vous intéresser à d'autres mots que ``des''.
Projet n° 2
Écriture d'un programme permettant :
- d'extraire des pseudo-affixes en vue de sélectionner les
séquences à abréger,
- de générer automatiquement des codes correspondant aux
séquences retenues,
- de prendre en compte ces codes pour simplifier l'écriture d'un
mot.
1. Extraction de pseudo-affixes
Il s'agit ici de trouver, à partir des mots présents dans un corpus, les
séquences de caractères les plus représentées. Seules les séquences
supérieures à n (à choisir et/ou déterminer) caractères seront
considérées. Il faudra classer les séquences obtenues par ordre
décroissant du nombre d'occurrences.
L'extraction reposera sur l'algorithme présenté dans l'article de Nagao et
Mori ci-joint. Vous commencerez par vous intéresser aux séquences finales,
qu'on pourrait qualifier de pseudo-suffixes. Le corpus sur lequel vous
travaillerez est un corpus étiqueté et lemmatisé identique à celui décrit dans
le projet 1.
Une fois les séquences extraites, vous devrez en choisir un certain nombre
sur lesquelles vous travaillerez, ce choix devant être motivé.
Remarque Il vous faudra choisir entre un travail sur
formes fléchies et sur lemmes pour extraire vos séquences. Vous pouvez
choisir l'un ou l'autre (les deux présentent un intérêt), mais vous
devez indiquer les raisons de votre choix.
2. Génération automatique de codes
A partir des séquences retenues, il vous est ici demandé de générer
automatiquement un code pour chacune d'elles. Ce code prendra la forme
d'une suite de ``a'' et de ``b''. La séquence ``ment'' peut par exemple être
représentée par la suite ``aa'', de telle sorte que pour signifier ``changement''
on peut se contenter de taper ``changeaa''. Le gain en lettres est ici faible,
mais il faut tenir compte du fait que le code généré doit être non ambigu.
Ainsi, si l'on avait choisi ``a'' pour représenter la séquence ``ment'', on
n'aurait pu décider si ``changea'' représentait ``changement'' ou le passé
simple du verbe ``changer''.
Vous pourrez vous inspirer de l'algorithme de Huffman pour générer les
codes. Je vous fournirai cet algorithme en temps utile.
3. Prise en compte des codes
Cette partie concerne le remplacement automatique des codes par les
séquences associées. Il s'agit ici d'écrire une fonction lisant un mot, fourni
par l'utilisateur, éventuellement incomplet mais comportant un code et
renvoyant le mot complet. Suivant le code généré précédemment, plusieurs
stratégies peuvent être utilisées. Si le code reste ambigu, on peut demander à
l'utilisateur de séparer le mot incomplet du code par un caractère de
contrôle (``?'', par exemple, qui n'est attesté à l'intérieur d'aucun mot de la
langue française). Si le code généré est non ambigu, un tel caractère est
superflu.
4. Extension
On peut envisager le même traitement sur les séquences initiales des mots
(pseudo-préfixes), voire sur des séquences quelconques. La non ambiguïté
du code devient alors un critère de première importance. Essayer
d'envisager un tel traitement.
Le corpus de travail (fichier ASCII
ISO-8859, de 60 K), (version ASCII IBM
PC, de 60 K) ; et une version anglaise comparable, pour ceux qui
préfèrent (fichier ASCII, de 40 K).
1. Il faut en faire une description rédigée
d'une ou deux pages, suffisamment détaillée.