View
112
Download
0
Category
Preview:
Citation preview
Cours 10
Réseaux sémantiques
Relations sémantiques
WordNet
Parcours d'un réseau sémantique
Levée d'ambiguïtés
Cooccurrence
AmbiguïtésQuand un mot est ambigu, ses utilisations correspondent à des sens
différentsLuc a perdu la première mancheLa chemise a perdu sa manche gaucheLa pioche a perdu son mancheChaque utilisation correspond à un sens précisVienne est la capitale de l'AutricheVienne est près de ValenceLa Vienne fait partie de la région Poitou-CharentesLa Vienne se jette dans la LoireIl faut absolument qu'il vienne
Synonymes
C'est un gros avion C'est un grand avion
C'est un gros achat ?C'est un grand achat
Luc est trop gros Luc est trop grand
Critère
Possibilité de remplacer un mot par l'autre dans au moins un contexte sans "trop" changer le sens
GranularitéLes étiquettes lexicales (catégorie grammaticale, genre, nombre)
permettent déjà de distinguer 2 des 3 sens
Luc a perdu la première manche N:fs
La chemise a perdu sa manche gauche N:fs
La pioche a perdu son manche N:ms
mais cela ne distingue pas les 2 premiers qui sont pourtant très différents
La granularité n'est pas suffisante
Réseau sémantiqueComme un lexique mais- plusieurs entrées différentes pour un mot ambigu- une seule entrée pour plusieurs synonymes
Exemples d'entrées1. couillon - gogo - naïf - pigeon2. bar - loup - loup de mer - perche de mer3. bar - bistro - brasserie - café - estaminetUne entrée = un ensemble de synonymes (synset)Membres d'un synset- lemmes et non formes fléchies- mots et non tokens (loup de mer : mot composé)
Relations sémantiques
Relations entre synsets
X est une sorte de Ybar - loup - loup de mer - perche de mer X
poisson - poiscaille Yanimal - bête Z
Y est une sorte de Xbar - bistro - brasserie - café - estaminet X
bar à vins Y
Relations sémantiques
X est une partie de Y
mets - plat
repas
Y est une partie de X
poiscaille - poisson
écaille
nageoire
ligne latérale
ouïe
Relations sémantiques
contraire
gagnant - vainqueur
perdant
WordNet
Anglais
Version 3.0 : 120 000 synsets
Miller, 1995 - Fellbaum, 1998
Le réseau sémantique le plus utilisé au monde
Développement à partir de 1985 - Première version 1991
4 sous-réseaux : noms, verbes, adjectifs, adverbes
La granularité de WordNet est beaucoup plus fine, parfois trop
Ex. : 4 sens pour tribe "tribu"
WordNet
Principales relations entre synsets
est un V/V exhale/breathe; inhale/breathe
est un N/N cat/feline
instance N/N Eiffel Tower/tower
partie N/N France/Europe
membre N/N France/European Union
similaire A/A dying/moribund
WordNet
Principales relations entre lemmes
contraire A/A good/bad
appartenance A/N academic/academia
appartenance Adv/A boastfully/boastful
dérivé N/V killing/kill
dérivé A/N dark/darkness
Hyperonymes
Le synset de breathe est un hyperonyme de ceux de exhale et inhale
Le synset de feline est un hyperonyme de celui de cat
Un synset a souvent un seul synset hyperonyme, mais peut en avoir plusieurs
Exemple
eat "manger" a deux hyperonymes :
eat "prendre un repas" (contestable)
et consume/ingest/take in/take/have
Le synset de cat est un hyponyme de celui de feline
Hyperonymes
timepiece/timekeeper/horologe
atomic clock
clock
sandglasssundial
timer
watch/ticker
ammonia clock
caesium clock
alarm clock/alarmegg timer
hourglass
chronograph
parking meter
stopwatch/stopo watch
...
...
Coordonnés
Coordonnés d'un synset : les synsets qui ont un même hyperonyme
Coordonnés de watch/ticker
atomic clock
clock
sandglass
sundial
timer
Les coordonnés d'un synset ne sont pas directement accessibles par les fonctions NLTK d'accès à WordNet
Rechercher les hyperonymes puis les hyponymes
Autres WordNets
EuroWordNetFrançais (23 000 synsets), anglais, néerlandais, italien, espagnol,
allemand, tchèque, estonienLiens entre langues et avec l'anglaisBalkaNetTchèque, roumain, grec, turc, bulgare, serbeOntologiesRéseaux sémantiques plus structurésLes noeuds ne sont pas forcément des synsets, ex.
AlcoholicBeverageContiennent des connaissances formalisées, ex. toute boisson est un
liquide, tout ce que quelqu'un boit est une boisson...
Parcours d'un réseau sémantique
Entrée : un synset
Sorties : des ensembles de lemmes "associés" au synset d'entrée
synset.assoc(1) = les hyponymes de synset
synset.assoc(2) = les hyperonymes de synset
synset.assoc(3) = les coordonnés de synset
synset.assoc(4) = les hyponymes des éléments de synset.assoc(3)
pour i de 1 à 4
synset.assocLemmas(i) = union des éléments de synset.assoc(i)
ExempleEntrée : sandglass
synset.assoc(1) = egg timer, hourglasssynset.assoc(2) = timepiece/timekeeper/horologesynset.assoc(3) = atomic clock, clock, sundial, timer, watch/tickersynset.assoc(4) = ammonia clock, caesium clock, alarm clock/alarm,
chronograph, parking meter, stopwatch/stopo watch...
synset.assocLemmas(1) = egg timer, hourglasssynset.assocLemmas(2) = timepiece, timekeeper, horologesynset.assocLemmas(3) = atomic clock, clock, sundial, timer, watch,
tickersynset.assocLemmas(4) = ammonia clock, caesium clock, alarm clock,
alarm, chronograph, parking meter, stopwatch, stopo watch...
Levée d'ambiguïtés
Pour chaque mot ambigu, pour chaque occurrence, déterminer le sens précis
ObjectifsRecherche d'informations, traduction...Le sens précis sera représenté par un synsetHypothèseBeaucoup de voisins d'un mot sont des hyponymes, des
hyperonymes ou des coordonnésMéthodePour chaque synset contenant le mot ambigu, compter les
hyponymes, hyperonymes et coordonnés dans le voisinage
Cooccurrence
Cooccurrence du premier ordre
Deux mots sont cooccurrents du premier ordre s'ils sont souvent voisins
Exemple : vendre/produit
Cooccurrence du second ordre
Deux mots sont cooccurrents du second ordre s'ils ont souvent les mêmes voisins
Exemple : vendre/acheter
Voisins communs : produit, prix, fournisseur, client...
Cooccurrence du premier ordre
On utilise un corpus de référence qui peut être lemmatisé
Deux mots m1 et m2
On calcule nb_occ(m1), nb_occ(m2)
nb_occ(m1, m2) : nombre d'occurrences de m1 et m2 dans le même paragraphe ou dans le même document ou à une distance inférieure à un seuil (5 à 10 tokens)
nb_occ(m1, m2)/nb_occ(m1) x nb_occ(m2)
valeur comprise entre 0 et 1
Plus m1 et m2 apparaissent souvent ensemble, plus cette valeur se rapproche de 1
Cooccurrence du second ordre
On utilise un corpus de référence qui peut être lemmatisé
Deux mots m1 et m2
On calcule voisins(m1) et voisins(m2), sacs de motsCritères :
- paragraphe ou distance
- différents de m1 ou m2
- catégorie nom ou pertinence D/d(v)On calcule la similarité entre les deux vecteurs (cosinus de l'angle)
Plus m1 et m2 apparaissent avec les mêmes voisins, plus cette valeur est élevée
Levée d'ambiguïtés avec WordNetEntrée : un texte étiqueté et lemmatisé ; WordNet ; un corpus de référence
Sortie : pour chaque mot ambigu du texte, un synset
pour chaque mot du texte
si mot appartient à plusieurs synsets
sélectionner des voisins v de mot dans le texte (critères :
- paragraphe ou distance
- différents de mot
- catégorie nom ou pertinence D/d(v))
pour chaque synset
synset.assoc = union synset.assoc(i) pour i de 1 à 4
synset.score = nombre de v dans synset.assoc
mot.synset = le synset dont synset.score est maximal
Apprentissage supervisé de la levée d'ambiguïtés
On utilise un corpus d'apprentissage dans lequel on a indiqué à la main pour chaque mot ambigu le synset pertinent
Après l'apprentissage, le système appliqué à un nouveau texte choisit pour chaque mot ambigu un des synsets correspondants
Informations utilisées par le système pour choisir
- les nombres d'occurrences de certains mots dans le voisinage (les mots les plus fréquents et pertinents proches du mot ambigu dans le corpus)
- le lemme et la catégorie grammaticale de 2 mots avant et après le mot ambigu
Pour chaque synset possible s, on recueille les informations o ci-dessus
P(s|o) : probabilité que le synset pertinent soit s connaissant o
Rappel : la formule de Bayes
P(s|o)valeur : entre 0 et 1
argmaxsS P(s|o)la valeur de sS pour laquelle P(s|o) est maximal
P(s|o) P(o) = P(o|s) P(s)formule de Bayes
argmaxsS P(s|o) = argmaxsS P(o|s) P(s) /P(o)
= argmaxsS P(o|s) P(s)car P(o) ne dépend pas de s
Application
o est un vecteur à n composantes o1 ... on
argmaxsS P(s|o) = argmaxsS P(o|s) P(s)
argmaxsS P(s) 1inP(oi|s)
On estime ces valeurs à l'aide du corpus d'apprentissage :P(s) = nb_occ(s, mot)/nb_occ(mot)nb_occ(s, mot) : nombre d'occurrences de mot avec le sens s
P(oi|s) = nb_occ(oi, s)/nb_occ(s)
nb_occ(oi, s) : nombre d'occurrences du sens s où la ie composante du vecteur vaut oi
Apprentissage non supervisé
On n'utilise pas de réseau sémantique
Apprentissage
On associe à chaque occurrence du mot dans un corpus d'apprentissage un vecteur qui représente ses voisins (critères :
- paragraphe ou distance
- différents du mot
- catégorie nom ou pertinence D/d(v))
On met chaque vecteur dans un groupe-singleton
Itérativement, on fusionne les deux groupes les plus proches si leur similarité (cosinus de l'angle entre les vecteurs) est supérieure à un seuil
On s'arrête quand toutes les similarités sont inférieures au seuil
Apprentissage non supervisé
Chaque groupe représente un sens
Levée d'ambiguïtés
Pour une occurrence du mot dans un nouveau texte
- on représente ses voisins par un vecteur (comme pour l'apprentissage)
- on compare le vecteur à chacun des groupes
On choisit le sens correspondant au groupe le plus similaire au vecteur
Apprentissage non supervisé et WordNet
Graphe de similarité
Noeuds : les mots
Arcs : relient les paires de mots dont la similarité (cooccurrence du second ordre dans le corpus de référence) est supérieure à un seuil
Les arcs sont étiquetés par ces similarités
Classes dans le texte
Sélectionner des mots du texte à traiter (catégorie nom, ou fréquence, ou pertinence)
Relier ces mots par les mêmes arcs que dans le graphe de similarité
Chaque composante connexe du graphe obtenu définit un groupe
Apprentissage non supervisé et WordNet
Comparaison à WordNet
Pour chaque groupe, sélectionner les synsets dont la similarité avec la classe (similarité des vecteurs) est inférieure à un seuil
Si un seul synset est sélectionné, on associe au synset tous les mots qui appartiennent à la fois au groupe et au synset
Recommended