49
Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France http://igm.univ-mlv.fr/~laporte/ Syntaxe et analyse syntaxique Réseaux sémantiques

Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Embed Size (px)

Citation preview

Page 1: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Eric LaporteInstitut Gaspard-Monge

Université Paris-Est Marne-la-ValléeFrance

http://igm.univ-mlv.fr/~laporte/

Syntaxe et analyse syntaxiqueRéseaux sémantiques

Page 2: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Syntaxe et analyse syntaxiqueRéseaux sémantiques

UnificationAnalyse syntaxique par l'algorithme

d'EarleyRéseaux sémantiquesRelations sémantiquesWordNet

Page 3: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Accord grammatical (1/4)

P --> GN attend Le public attendLe GN est obligatoirement au singulier :

* Les spectateurs attend

P --> 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

Page 4: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Accord grammatical (2/4)

P --> GN attend { GN.nombre = "singulier" }P --> 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

Page 5: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Accord grammatical (3/4)

P --> GN <attendre> {GN.nombre = <attendre>.nombre ;GN.personne =

<attendre>.personne ; }Le public attend - Les spectateurs attendent -

Vous attendezOn considère les traits de attendre comme des

attributs aussi

Page 6: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Accord grammatical (4/4)

Vérification des équationsP --> GN <attendre> {

GN.nombre = <attendre>.nombre ;GN.personne =

<attendre>.personne ; }On ne sait pas si on connaîtra la valeur de

GN.nombre avant celle de<attendre>.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

Page 7: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification (1/7)

Unification entre GN.nombre et<attendre>.nombre

Avant :GN.nombre = x <attendre>.nombre = "singulier"

Après :GN.nombre = "singulier" <attendre>.nombre = "singulier"

Les valeurs à unifier peuvent être des constantes ou des variables

Page 8: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification (2/7)

Avant :GN.nombre = x <attendre>.nombre = yAprès :GN.nombre = x <attendre>.nombre = xEn 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

Avant unification, chaque valeur n'est équivalente qu'à elle-même

Page 9: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification (3/7)

Formalisation de l'équivalenceChaque valeur a un champ "ensemble" qui contient un

pointeurGN.nombre.ensemble := 0<attendre>.nombre.ensemble := GN.nombre

Dans chaque classe d'équivalence, une seule des valeurs est choisie comme é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

Page 10: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification (4/7)

Unification entre GN.nombre et<attendre>.nombre

Avant :GN.nombre = "pluriel" <attendre>.nombre = "singulier"

Après :GN.nombre = "pluriel" <attendre>.nombre = "singulier"

L'unification peut échouerL'algorithme d'unification renvoie un booléenL'unification est destructrice : elle peut changer les

deux valeurs à unifier, même si l'unification échoue

Page 11: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification (5/7)

Unifier deux valeurs a et b, c'est construire une valeur qui contient toutes les restrictions de a et de b en vérifiant qu'elles sont compatibles

Page 12: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification (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 n'est pas une variable { B.ensemble := A ; } sinon { A.ensemble := B ; }}

Page 13: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification (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 BPréconditions :- A et B sont les éléments canoniques de leurs classes

d'équivalence- L'unification entre A et B réussitSi l'une des deux valeurs est une constante, c'est elle qui doit

être devenir l'élément canonique de l'autreCela revient à remplacer la variable par la constante

Page 14: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Accord grammatical (1/2)

P --> GN <attendre> {GN.nombre = <attendre>.nombre ;GN.personne =

<attendre>.personne ; }

si (unifier(GN.nombre, <attendre>.nombre)et unifier (GN.personne, <attendre>.personne)) { l'analyse syntaxique peut continuer }

Page 15: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Accord grammatical (2/2)

GN --> 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 }

On a l'impression que GN.personne = "3" est 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

Page 16: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Avec des RTN

On attache les attributs- à des noeuds du graphe : $$.nombre- au graphe : nombre, personne

Fonctionnalité disponible avec Outilex, pas encore avec Unitex

Page 17: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification d'arbres (1/3)

P --> GN <attendre> {GN.nombre = <attendre>.nombre ;GN.personne = <attendre>.personne ; }

On veut regrouper les deux attributs en un seul

P --> GN <attendre> {GN.accord = <attendre>.accord ; }

La valeur de l'attribut est maintenant un arbre

Page 18: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification d'arbres (2/3)

P --> GN <attendre> {GN.accord = <attendre>.accord ; }

GN.accord=

structure de traits

nombre=

x

personne=

"3"

<attendre>.accord=

structure de traits

nombre=

"singulier"

personne=

y

Page 19: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification d'arbres (3/3)

GN.accord=structure de traits

nombre=x

personne="3"

<attendre>.accord=structure de traits

nombre="singulier"

personne=y

Avant

GN.accord=structure de traits

nombre="singulier"

personne="3"

<attendre>.accord=structure de traits

nombre="singulier"

personne="3"

Après

Page 20: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Formalisation 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=x

personne="3"

Page 21: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Unification (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 et B sont des structures de traits) {

unir(A, B) ;pour chaque trait t de A ou de B {

si (unifier(A.t, B.t) = faux) { renvoyer faux ; } } renvoyer vrai ; } sinon si (A ou B est une variable) { unir(A, B) ; renvoyer vrai

; } sinon { renvoyer faux ; }}

Page 22: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Résultat de l'unification

Les pointillés représentent les équivalences et pointent vers le membre canonique

GN.accord=

structure de traits

nombre=

x

personne=

"3"

<attendre>.accord=

structure de traits

nombre=

"singulier"

personne=

y

Page 23: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Subsomption (1/2)

x subsume "singulier" x "singulier""3" subsume "3" "3" "3"Le cas général subsume le cas particulier

GN.accord=structure de traits

nombre=x

personne="3"

GN.accord=structure de traits

nombre="singulier"

personne="3"

Page 24: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Subsomption (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 restrictions précisées dans S1 doivent être précisées aussi dans S2 sans contradiction

S2 peut préciser des restrictions supplémentaires

Page 25: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Subsomption et unification

S1 S2 est l'arbre le plus général S3 telle que S1 S3 et S2 S3

S1 S2 contient toutes les informations de S1 et de S2

Page 26: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Têtes des constituants

Le mot le plus important de chaque constituant est appelé sa tête P

(préfère)

GN(Luc)

préfère

GN(compagnie)

N(compagnie)

Det(cette)

cetteLuc compagnie

Page 27: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Grammaires de dépendanceOn remplace chaque symbole non terminal par

la tête correspondante, puis on supprime le noeud redondant

Arbre de dépendancepréfère

Luccompagnie

cette

préfère

Luc

préfère

compagnie

compagniecette

cetteLuc

compagnie

Page 28: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Grammaires 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

Luccompagnie

cette

sujetobjet

déterminant

Page 29: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

LexicalisationLorsqu'un mot a des compléments, la forme des

compléments dépend du motP --> GN <préférer> GN à GN

Luc préfère cette compagnie à la concurrenceP --> GN <quitter> GN Luc quitte ParisP --> GN <partir> Prép GN Luc part pour Toulouse

Nombre de complémentsPrépositions devant les complémentsGrammaire lexicaliséeChaque 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

Page 30: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Grammaires non lexicaliséesOn regroupe tous les mots qui entrent dans une

même constructionOn fait une règle commune

P --> GN V GN à GN{ V.N1àN2 = "+" ; }Luc préfère cette compagnie à la

concurrenceP --> GN V GN { V.N1 = "+" ; }

Luc quitte ParisLuc préfère cette compagnie

P --> GN V Prép GN {V.PrépN1 = "+" ; V.Prép = Prép ; }Luc part pour Toulouse

Page 31: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Analyse syntaxiqueParsingEntrées : une phrase étiquetée et une grammaire

algébriqueSorties : le ou les arbres de dérivation de la phrase

AlgorithmesAscendantsDescendantsProgrammation dynamiqueCascade de transducteurs

Page 32: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

L'algorithme d'Earley (1970)

Analyse descendanteSauvegarde dans un tableau tous les résultats intermédiaires

réutilisables (programmation dynamique)

Tableau indicé par les tokens de la phrasePhrase : Les orchestres aimentcette mélodieIndices : 0 1 2 3 4

5Pour chaque indice, le tableau contient un ensemble de sous-

arbres correspondant à des analyses partiellesOn remplit le tableau de gauche à droite, sans retours en arrièreOn ne détruit jamais des sous-arbres déjà créésPour construire les arbres de dérivation, on combine les sous-

arbres du tableau

Page 33: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Les sous-arbresUn 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 1P --> GN <aimer> . GN0-3

<le> <orchestre> <aimer> <ce> <mélodie>

Det N Det N

GN GN

P

0 1 2 3 4 5

Page 34: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Les sous-arbresExemple 2GN --> Det N .0-2

Exemple 3GN --> . Det N3-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

<le> <orchestre> <aimer> <ce> <mélodie>

Det N Det N

GN GN

P

0 1 2 3 4 5

Page 35: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

L'algorithmeOn parcourt le tableau de gauche à droiteQuand 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 --> P

Début P0 --> . P0-0

Fin P0 --> 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

Page 36: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

L'algorithme

analyseur.table[0].enfiler(P0 --> . P, 0, 0)pour i de 0 à n

pour chaque sousArbre dans table[i]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.table[n].contient(P0 --> P ., 0, n)analyseur.construireArbres(n)

Page 37: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

L'algorithme

compléter(B --> w ., j, k) :pour chaque (A --> u . B v, i, j) dans table[j]

table[k].enfiler(A --> u B . v, i, k)

vérifier(A --> u . t v, i, j) :si t correspond à token[j]

table[j + 1].enfiler(A --> u t . v, i, j + 1)

prédire(A --> u . B v, i, j) :pour chaque (B --> w) dans règles(B)

table[j].enfiler(B --> . w, j, j)

Page 38: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Synonymes

C'est un gros avion C'est un grand avionC'est un gros achat ?C'est un grand achatLuc est trop gros Luc est trop grand

CritèrePossibilité de remplacer un mot par l'autre dans

au moins un contexte sans "trop" changer le sens

Page 39: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

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é)

Page 40: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Relations sémantiquesRelations 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

Hyponyme - hyperonyme

Page 41: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Relations sémantiquesX est une partie de Ymets - plat

repas

Y est une partie de Xpoiscaille - poisson

écaillenageoireligne latéraleouïe

Méronyme - holonyme

Page 42: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Relations sémantiques

contrairegagnant - vainqueur

perdant

Antonyme

Page 43: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

WordNet

AnglaisVersion 3.0 : 120 000 synsetsMiller, 1995 - Fellbaum, 1998Le réseau sémantique le plus utilisé au mondeDéveloppement à partir de 1985 - Première

version 19914 sous-réseaux : noms, verbes, adjectifs,

adverbes

Page 44: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

WordNet

Principales relations entre synsets

est un V/V exhale/breathe; inhale/breathe

est un N/N cat/felineinstance N/N Eiffel Tower/towerpartie N/N France/Europemembre N/N France/European Unionsimilaire A/A dying/moribund

Page 45: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

WordNet

Principales relations entre lemmes

contraire A/A good/badappartenance A/N academic/academiaappartenance Adv/Aboastfully/boastfuldérivé N/V killing/killdérivé A/N dark/darkness

Page 46: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

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 plusieursExempleeat "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

Page 47: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Hyperonymestimepiece/timekeeper/horologe

atomic clock

clock

sandglasssundial

timer

watch/ticker

ammonia clock

caesium clock

alarm clock/alarmegg timer

hourglass

chronograph

parking meter

stopwatch/stopo watch

...

...

Page 48: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Coordonnés

Coordonnés d'un synset : les synsets qui ont un même hyperonyme

Coordonnés de watch/tickeratomic clockclocksandglasssundialtimerLes coordonnés d'un synset ne sont pas directement

accessibles par les fonctions NLTK d'accès à WordNetRechercher les hyperonymes puis les hyponymes

Page 49: Eric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée France laporte/ Syntaxe et analyse syntaxique Réseaux

Autres WordNets

• EuroWordNetFrançais (23 000 synsets), anglais, néerlandais,

italien, espagnol, allemand, tchèque, estonienLiens entre langues et avec l'anglais• BalkaNetTchèque, roumain, grec, turc, bulgare, serbe