:: Enseignements :: Licence :: L3 :: 2007-2008 :: Introduction à l'informatique linguistique ::
[LOGO]

Unification


Dans ce TP, nous allons voir la notion d'unification de structures de traits.

Unification avec NLTK

Lire la documentation la section 11.3 Computing with Feature Structures du document: http://nltk.org/doc/en/featgram.html.
Attention : ne pas oublier de faire import nltk pour faire fonctionner vos scripts python.

Exercice 1 - Bases de données et unification

Soit la base de données représentée par les trois tables suivantes :
np nom prenom ville
1 Dupond Luc Paris
2 Dupond Leon Marseille
3 Martin Luc Lyon
4 Cresus Louis Paris
Personne
ns nom type
1 football collectif
2 rugby collectif
3 judo individuel
4 tennis individuel
Sport
np ns
1 1
2 2
3 2
4 1
4 4
Pratiquer
  • Représenter chaque table par une liste de structures de traits (chaque ligne est une structure de traits).
  • À l'aide de l'opération d'unification, calculer la liste des personnes habitant à Paris.
  • À l'aide de l'opération d'unification, calculer la liste des personnes qui pratiquent un sport collectif.
  • À l'aide de l'opération d'unification, calculer la liste des personnes qui s'appellent Dupond et qui pratiquent un sport collectif.

Exercice 2 - Levée d'ambiguïté

Les contraintes d'accords peuvent servir à lever l'ambiguïté lexicale de certains mots. Par exemple, le verbe viens est ambigu : le verbe venir au présent soit à la première personne du singulier soit à la deuxième personne du singulier. Le contexte "je viens" et la contrainte d'accord permet de lever cette ambiguïté.
  • Écrire une fonction desamb qui prend comme paramètre une liste de structures de traits ambigus (ex. les deux structures de traits de la forme viens}), une structure de traits exprimant le contexte de levée d'ambiguïté (ex. la structure de traits associée à la forme je) et une contrainte (ex. accord). Cette fonction retournera la bonne analyse parmi l'ensemble des analyses possibles.

    Par exemple, desamb([viens1,viens2],je,"accord") retournera viens1, si :
    • viens1 est la structure de traits associée à la forme viens à la 1ère personne du singulier.
    • viens2 est la structure de traits associée à la forme viens à la 2ème personne du singulier.
    • je est la structure de traits associée à la forme je à la 1ère personne du singulier.
    • "accord" est l'attribut dont la valeur est une structure de traits représentant l'accord (cf cours).
  • Tester l'exemple ci-dessus.
  • Trouver d'autres exemples et appliquer les à l'aide de desamb.

Exercice 3 - Implantation d'un algorithme d'unification

Implémenter en Python l'algorithme d'unification vu en cours. Vous définirez votre propre représentation des structures de traits.