Title: Syntaxe%20et%20analyse%20syntaxique%20R
1Syntaxe et analyse syntaxiqueRéseaux sémantiques
Eric LaporteInstitut Gaspard-MongeUniversité
Paris-Est Marne-la-ValléeFrancehttp//igm.univ-
mlv.fr/laporte/
2Syntaxe et analyse syntaxiqueRéseaux sémantiques
- Unification
- Analyse syntaxique par l'algorithme d'Earley
- Réseaux sémantiques
- Relations sémantiques
- WordNet
3Accord grammatical (1/4)
- P --gt GN attend Le public attend
- Le GN est obligatoirement au singulier
- Les spectateurs attend
- P --gt GN attendent Les spectateurs attendent
- Le GN est obligatoirement au pluriel
- Le public attendent
- On veut éviter d'avoir deux symboles distincts
pour les GN au singulier et les GN au pluriel
4Accord grammatical (2/4)
- P --gt GN attend GN.nombre "singulier"
- P --gt GN attendent GN.nombre "pluriel"
- On considère les traits du GN comme des attributs
du symbole GN - On ajoute des attributs aux symboles et des
équations aux règles - On veut éviter d'avoir deux règles distinctes
5Accord grammatical (3/4)
- P --gt GN ltattendregt
- GN.nombre ltattendregt.nombre
- GN.personne ltattendregt.personne
- Le public attend - Les spectateurs attendent -
Vous attendez - On considère les traits de attendre comme des
attributs aussi
6Accord grammatical (4/4)
- Vérification des équations
- P --gt GN ltattendregt
- GN.nombre ltattendregt.nombre
- GN.personne ltattendregt.personne
- On ne sait pas si on connaîtra la valeur de
GN.nombre avant celle deltattendregt.nombre ou le
contraire - On veut pouvoir vérifier l'équation avant de
connaître aucun des deux attributs - On vérifie les équations par unification
7Unification (1/7)
- Unification entre GN.nombre etltattendregt.nombre
- Avant GN.nombre x
- ltattendregt.nombre "singulier"
- Après GN.nombre "singulier"
- ltattendregt.nombre "singulier"
- Les valeurs à unifier peuvent être des constantes
ou des variables
8Unification (2/7)
- Avant GN.nombre x
- ltattendregt.nombre y
- Après GN.nombre x
- ltattendregt.nombre x
- En fait, après unification, les deux valeurs sont
représentées par des objets distincts mais
équivalents - Plus tard, si une autre unification précise l'une
des deux, cela changera automatiquement l'autre
aussi
9Unification (3/7)
- Formalisation de l'équivalence
- Chaque valeur a un champ "ensemble" qui contient
un pointeur - GN.nombre.ensemble 0
- ltattendregt.nombre.ensemble GN.nombre
- Dans chaque classe d'équivalence, une des valeurs
sert d'élément canonique - Pour la valeur canonique, le champ ensemble est
le pointeur nul - Pour toutes les autres valeurs, le champ ensemble
pointe directement ou indirectement sur la valeur
canonique
10Unification (4/7)
- Unification entre GN.nombre etltattendregt.nombre
- Avant GN.nombre "pluriel"
- ltattendregt.nombre "singulier"
- Après GN.nombre "pluriel"
- ltattendregt.nombre "singulier"
- L'unification peut échouer
- L'algorithme d'unification renvoie un booléen
- L'unification est destructrice elle peut
changer les deux valeurs à unifier, même si
l'unification échoue
11Unification (5/7)
- Unifier deux valeurs a et b, c'est construire une
valeur qui contient toutes les contraintes
spécifiées dans a et dans b en vérifiant qu'elles
sont compatibles
12Unification (version 1)
- booléen unifier(valeur a, valeur b)
- A trouver-canonique(a)
- B trouver-canonique(b)
- si (A B) renvoyer vrai
- sinon si (A et B sont la même constante)
renvoyer vrai - sinon si (A ou B est une variable) unir(A, B)
renvoyer vrai - sinon renvoyer faux
-
- unir(valeur A, valeur B)
- si A est une variable A.ensemble B
- sinon B.ensemble A
13Unification (7/7)
- trouver-canonique(valeur a)
- Renvoie l'élément canonique de la classe
d'équivalence de a - unir(valeur A, valeur B)
- Fusionne les classes d'équivalence de A et B
- Préconditions
- - A et B sont les éléments canoniques de leurs
classes d'équivalence - - L'unification entre A et B réussit
- Si l'une des deux valeurs est une constante,
c'est elle qui doit être devenir l'élément
canonique de l'autre - Cela fait pointer la variable vers la constante
14Accord grammatical (1/2)
- P --gt GN ltattendregt
- GN.nombre ltattendregt.nombre
- GN.personne ltattendregt.personne
- si (unifier(GN.nombre, ltattendregt.nombre)
- et unifier (GN.personne, ltattendregt.personne))
l'analyse syntaxique peut continuer
15Accord grammatical (2/2)
- GN --gt Dét N Dét.nombre N.nombre
- GN.nombre N.nombre
- GN.personne "3"
- si (unifier(Dét.nombre, N.nombre)
- et unifier(GN.nombre, N.nombre)
- et unifier(GN.personne, "3"))
- l'analyse syntaxique peut continuer
- GN.personne "3" n'est pas une simple
affectation - Si on connaît GN.personne par une autre équation
avant de traiter cette règle, c'est bien une
équation à vérifier
16Avec des RTN
- On attache les attributs
- - à des noeuds du graphe .nombre
- - au graphe nombre, personne
- Fonctionnalité disponible avec Outilex, pas
encore avec Unitex
17Unification d'arbres (1/3)
- P --gt GN ltattendregt
- GN.nombre ltattendregt.nombre
- GN.personne ltattendregt.personne
- On veut regrouper les deux attributs en un seul
- P --gt GN ltattendregt
- GN.accord ltattendregt.accord
- La valeur de l'attribut est maintenant un arbre
18Unification d'arbres (2/3)
- P --gt GN ltattendregt
- GN.accord ltattendregt.accord
GN.accord
ltattendregt.accord
structure de traits
structure de traits
nombre
personne
nombre
personne
x
"3"
"singulier"
y
19Unification d'arbres (3/3)
GN.accord
ltattendregt.accord
structure de traits
structure de traits
Avant
nombre
personne
nombre
personne
x
"singulier"
"3"
y
GN.accord
ltattendregt.accord
structure de traits
structure de traits
Après
nombre
personne
nombre
personne
"singulier"
"singulier"
"3"
"3"
20Formalisation des arbres
- Un noeud peut être
- - une constante ("singulier")
- - une variable
- - une structure de traits (feature structure) qui
a 0, 1 ou plusieurs attributs dont les valeurs
sont des noeuds
GN.accord
structure de traits
nombre
personne
x
"3"
21Unification (version 2)
- booléen unifier(noeud a, noeud b)
- A trouver-canonique(a)
- B trouver-canonique(b)
- si (A B) renvoyer vrai
- sinon si (A et B sont la même constante)
renvoyer vrai - sinon si (A ou B est une variable) unir(A, B)
renvoyer vrai - sinon si (A et B sont des structures de traits)
- unir(A, B) / B.ensemble A /
- pour chaque trait t de A ou de B
- si (unifier(A.t, B.t) faux) renvoyer faux
- renvoyer vrai
- sinon renvoyer faux
22Résultat de l'unification
- Les pointillés représentent les équivalences et
pointent vers le membre canonique
GN.accord
ltattendregt.accord
structure de traits
structure de traits
nombre
personne
nombre
personne
x
"3"
"singulier"
y
23Subsomption (1/2)
- x subsume "singulier" x ? "singulier"
- "3" subsume "3" "3" ? "3"
- Le cas général subsume le cas particulier
- La notation "?" s'explique si on considère qu'un
symbole "contient" des spécifications de
contraintes
GN.accord
GN.accord
structure de traits
structure de traits
?
nombre
personne
nombre
personne
x
"singulier"
"3"
"3"
24Subsomption (2/2)
- Si S1 est une constante
- S1 ? S2 si et seulement si S1 S2
- Si S1 est une variable ?S2 S1 ? S2
- Si S1 est une structure de traits
- S1 ? S2 si et seulement si pour tout trait t de
S1 ou de S2, S1.t ? S2.t - Les contraintes précisées dans S1 doivent être
précisées aussi dans S2 sans contradiction - S2 peut préciser des contraintes supplémentaires
25Subsomption et unification
- S1 ? S2 est l'arbre le plus général S3 tel que S1
? S3 et S2 ? S3 - S1 ? S2 spécifie toutes les contraintes de S1 et
de S2
26Têtes des constituants
- Le mot le plus important de chaque constituant
est appelé sa tête
P (préfère)
GN (compagnie)
GN (Luc)
Det (cette)
N (compagnie)
préfère
cette
Luc
compagnie
27Grammaires de dépendance
- On remplace chaque symbole non terminal par la
tête correspondante, puis on supprime le noeud
redondant - Arbre de dépendance
préfère
préfère
compagnie
compagnie
Luc
Luc
compagnie
cette
cette
préfère
Luc
cette
compagnie
28Grammaires de dépendance
- Informations perdues
- - étiquettes des constituants (on compense en
ajoutant des étiquettes aux arêtes) - - ordre des mots (on compense si nécessaire en
ajoutant des contraintes sur l'ordre des mots)
préfère
objet
sujet
compagnie
Luc
déterminant
cette
29Lexicalisation
- Lorsqu'un mot a des compléments, la forme des
compléments dépend du mot - P --gt GN ltpréférergt GN à GN
- Luc préfère cette compagnie à la concurrence
- P --gt GN ltquittergt GN Luc quitte Paris
- P --gt GN ltpartirgt Prép GN Luc part pour Toulouse
- Nombre de compléments
- Prépositions devant les compléments
- Grammaire lexicalisée
- Chaque règle comporte au moins un mot du lexique
(la tête en général) - Nombre de règles nombre de mots x nombre de
constructions
30Grammaires non lexicalisées
- On regroupe tous les mots qui entrent dans une
même construction - On fait une règle commune
- P --gt GN V GN à GN V.N1àN2 ""
- Luc préfère cette compagnie à la concurrence
- P --gt GN V GN V.N1 ""
- Luc quitte Paris
- Luc préfère cette compagnie
- P --gt GN V Prép GN
- V.PrépN1 "" V.Prép Prép
- Luc part pour Toulouse
31Analyse syntaxique
- Parsing
- Entrées une phrase étiquetée et une grammaire
algébrique - Sorties le ou les arbres de dérivation de la
phrase - Algorithmes
- Ascendants
- Descendants
- Programmation dynamique
- Cascade de transducteurs
32L'algorithme d'Earley (1970)
- Analyse descendante
- Sauvegarde dans un tableau tous les résultats
intermédiaires réutilisables (programmation
dynamique) - Tableau indicé par les tokens de la phrase
- Phrase Les orchestres aiment cette mélodie
- Indices 0 1 2
3 4 5 - Pour chaque indice, le tableau contient un
ensemble de sous-arbres correspondant à des
analyses partielles - On remplit le tableau de gauche à droite, sans
retours en arrière - On ne détruit jamais des sous-arbres déjà créés
- Pour construire les arbres de dérivation, on
combine les sous-arbres du tableau
33Les sous-arbres
- Un sous-arbre est représenté par
- - une règle pointée (le point indique jusqu'où on
a analysé) - - deux positions dans la phrase, correspondant
- - au début de la règle
- - et au point jusqu'où on a analysé
- Exemple 1
- P --gt GN ltaimergt . GN
- 0-3
P
GN
GN
Det
Det
N
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
0 1 2 3 4 5
34Les sous-arbres
- Exemple 2
- GN --gt Det N .
- 0-2
- Exemple 3
- GN --gt . Det N
- 3-3
- Si la 2e position d'un sous-arbre est j, ce
sous-arbre est rangé à l'indice j dans le tableau - Exemple 2 rangé à l'indice 2 Exemple 3 rangé
à l'indice 3
P
GN
GN
Det
Det
N
N
ltlegt
ltorchestregt
ltaimergt
ltcegt
ltmélodiegt
0 1 2 3 4 5
35L'algorithme
- On parcourt le tableau de gauche à droite
- Quand on est à l'indice i, on parcourt les
sous-arbres et on crée de nouveaux sous-arbres à
l'indice i (queue FIFO) et à l'indice i 1 - On suppose que l'axiome de la grammaire apparaît
une seule fois, dans une règle P0 --gt P - Début P0 --gt . P
- 0-0
- Fin P0 --gt P .
- 0-n (n nombre de tokens dans la phrase)
- Règle pointée complétée règle dont le point est
à la fin
36L'algorithme
- analyseur.table0.enfiler(P0 --gt . P, 0, 0)
- pour i de 0 à n
- pour chaque sousArbre dans tablei
- si sousArbre.complétée()
- analyseur.compléter(sousArbre)
- sinon si sousArbre.prochainSymbole() est
terminal - analyseur.vérifier(sousArbre)
- sinon analyseur.prédire(sousArbre)
- si analyseur.tablen.contient(P0 --gt P ., 0, n)
- analyseur.construireArbres(n)
-
37L'algorithme
- compléter(B --gt w ., j, k)
- pour chaque (A --gt u . B v, i, j) dans tablej
- tablek.enfiler(A --gt u B . v, i, k)
- vérifier(A --gt u . t v, i, j)
- si t correspond à tokenj
- tablej 1.enfiler(A --gt u t . v, i, j 1)
- prédire(A --gt u . B v, i, j)
- pour chaque (B --gt w) dans règles(B)
- tablej.enfiler(B --gt . w, j, j)
38Algorithme d'Earley et RTN
- Woods (1969) a adapté l'algorithme d'Earley aux
RTN
39Synonymes
- 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
40Réseau sémantique
- Comme un lexique mais
- - plusieurs entrées différentes pour un mot
ambigu - - une seule entrée pour plusieurs synonymes
- Exemples d'entrées
- 1. couillon - gogo - naïf - pigeon
- 2. bar - loup - loup de mer - perche de mer
- 3. bar - bistro - brasserie - café - estaminet
- Une 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é)
41Relations sémantiques
- Relations entre synsets
- X est une sorte de Y
- bar - loup - loup de mer - perche de mer X
- poisson - poiscaille Y
- animal - bête Z
- Y est une sorte de X
- bar - bistro - brasserie - café - estaminet X
- bar à vins Y
- Hyponyme - hyperonyme
42Relations 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
- Méronyme - holonyme
43Relations sémantiques
- contraire
- gagnant - vainqueur
- perdant
- Antonyme
44WordNet
- 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
45WordNet
- 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
46WordNet
- 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
47Hyperonymes
- 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
48Hyperonymes
timepiece/timekeeper/horologe
atomic clock
watch/ticker
sandglass
ammonia clock
sundial
...
caesium clock
timer
hourglass
clock
egg timer
alarm clock/alarm
chronograph
stopwatch/stopo watch
...
parking meter
49Coordonné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
50Autres WordNets
- EuroWordNet
- Français (23 000 synsets), anglais, néerlandais,
italien, espagnol, allemand, tchèque, estonien - Liens entre langues et avec l'anglais
- BalkaNet
- Tchèque, roumain, grec, turc, bulgare, serbe