:: Enseignements :: Licence :: L3 :: 2007-2008 :: Introduction à l'informatique linguistique ::
| Réseaux sémantiques, levée d'ambiguïté et clusters de mots |
Dans ce TP, nous allons manipuler Wordnet un réseau sémantique à l'aide de NLTK pour faire de la levée d'ambiguïté.
Puis, nous implémenterons un outil pour extraire les différents sens d'un mot.
Exercice 1 - Prise en main de Wordnet avec NLTK
Lire la
documentation liée à Wordnet dans NLTK.
Essayer les exemples de la documentation.
Exercice 2 - Manipulation de Wordnet
- Ecrire un script python pour obtenir l'ensemble des synsets du nom resistance.
- Ecrire une fonction qui prend un synset en paramètre et qui renvoie la liste des mots contenus dans le synset.
- Ecrire une fonction qui prend un synset en paramètre et qui renvoie la liste de ses hyperonymes (les mots contenus dans les synsets hyperonymes).
- Ecrire une fonction qui prend un synset en paramètre et renvoie la liste des hyponymes de ses hyperonymes.
- Ecrire une fonction qui prend un synset en paramètre et renvoie la liste des hyponymes des hyponymes de ses hyperonymes.
- Ecrire une fonction voisins qui prend un synset en paramètre et renvoie l'union de l'ensemble de ses hyperonymes, de l'ensemble des hyponymes de ses hyperonymes et l'ensemble des hyponymes des hyponymes de ses hyponymes.
Exercice 3 - Levée d'ambiguïté sémantique avec Wordnet
Le nom
resistance a 10 sens dans Wordnet.
Le but de l'exercice est d'assigner automatiquement le bon sens de
resistance à toutes les occurrences dans le texte
wsd-data1.txt.
Chaque ligne du texte contient un paragraphe comprenant au moins une occurrence de
resistance.
Chacune de ces lignes est suivie d'un séparateur de paragraphes sur une autre ligne.
Pour chacune des occurrences de
resistance, il s'agira d'extraire la liste des noms voisins dans le texte et d'évaluer le recouvrement avec la liste des mots "voisins" dans Wordnet pour chacun des sens (synsets) possibles.
Le sens sélectionné sera celui qui a le meilleur recouvrement.
Pour cela, vous vous aiderez de la classe wsdData dans
wsd.py (cf. exemple d'utilisation
td10.py).
La classe
wsdData permet pour chacun des paragraphes d'un texte d'extraire la liste des noms (méthode
getInstances) et le
textVector associé (méthode
getInstanceVectors).
Attention: penser à mettre dans votre répertoire de travail les scripts
tagging.py et
textSpaceVector.py vus dans les tds précédents.
Nous supposons que les voisins d'un sens d'un mot dans Wordnet est la liste renvoyée par la fonction voisins implémentée ci-dessus.
- Ecrire un script python qui permet d'assigner à chaque occurrence de resistance dans le texte un sens (un synset).
- Evaluer les résultats.
- N'y a-t-il pas moyen d'améliorer ces résultats ? Implémenter vos solutions.
© Université de Marne-la-Vallée