syntaxe et analyse syntaxique r seaux s mantiques
Download
Skip this Video
Download Presentation
Syntaxe et analyse syntaxique Réseaux sémantiques

Loading in 2 Seconds...

play fullscreen
1 / 50

Eric Laporte Institut Gaspard-Monge Universit Paris-Est Marne-la-Vall e France igm.univ-mlv.fr - PowerPoint PPT Presentation


  • 157 Views
  • Uploaded on

Syntaxe et analyse syntaxique Réseaux sémantiques. 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. Unification Analyse syntaxique par l\'algorithme d\'Earley Réseaux sémantiques

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Eric Laporte Institut Gaspard-Monge Universit Paris-Est Marne-la-Vall e France igm.univ-mlv.fr' - meena


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
syntaxe et analyse syntaxique r seaux s mantiques
Syntaxe et analyse syntaxiqueRéseaux sémantiques

Eric LaporteInstitut Gaspard-MongeUniversité Paris-Est Marne-la-ValléeFrancehttp://igm.univ-mlv.fr/~laporte/

syntaxe et analyse syntaxique r seaux s mantiques1
Syntaxe et analyse syntaxiqueRéseaux sémantiques

Unification

Analyse syntaxique par l\'algorithme d\'Earley

Réseaux sémantiques

Relations sémantiques

WordNet

accord grammatical 1 4
Accord grammatical (1/4)

P --> GN attend Le public attend

Le 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

accord grammatical 2 4
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

accord grammatical 3 4
Accord grammatical (3/4)

P --> GN <attendre> {

GN.nombre = <attendre>.nombre ;

GN.personne = <attendre>.personne ; }

Le public attend - Les spectateurs attendent - Vous attendez

On considère les traits de attendre comme des attributs aussi

accord grammatical 4 4
Accord grammatical (4/4)

Vérification des équations

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

unification 1 7
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

unification 2 7
Unification (2/7)

Avant :GN.nombre = x

<attendre>.nombre = y

Après :GN.nombre = x

<attendre>.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

unification 3 7
Unification (3/7)

Formalisation de l\'équivalence

Chaque valeur a un champ "ensemble" qui contient un pointeur

GN.nombre.ensemble := 0

<attendre>.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

unification 4 7
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 é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

unification 5 7
Unification (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

unification version 1
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 est une variable { A.ensemble := B ; }

sinon { B.ensemble := A ; }

}

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

accord grammatical 1 2
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 }

accord grammatical 2 2
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 }

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

avec des rtn
Avec des RTN

On attache les attributs

- à des noeuds du graphe : $$.nombre

- au graphe : nombre, personne

Fonctionnalité disponible avec Outilex, pas encore avec Unitex

unification d arbres 1 3
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

unification d arbres 2 3
Unification d\'arbres (2/3)

P --> GN <attendre> {

GN.accord = <attendre>.accord ; }

GN.accord=

<attendre>.accord=

structure de traits

structure de traits

personne=

personne=

nombre=

nombre=

"3"

y

x

"singulier"

unification d arbres 3 3
Unification d\'arbres (3/3)

GN.accord=

<attendre>.accord=

structure de traits

structure de traits

Avant

nombre=

personne=

nombre=

personne=

x

"singulier"

"3"

y

GN.accord=

<attendre>.accord=

structure de traits

structure de traits

Après

nombre=

personne=

nombre=

personne=

"singulier"

"singulier"

"3"

"3"

formalisation des arbres
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=

personne=

x

"3"

unification version 2
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 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 ; }

}

r sultat de l unification
Résultat de l\'unification

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

GN.accord=

<attendre>.accord=

structure de traits

structure de traits

personne=

personne=

nombre=

nombre=

"3"

y

x

"singulier"

subsomption 1 2
Subsomption (1/2)

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

subsomption 2 2
Subsomption (2/2)

Si S1 est une constante :

S1  S2 si et seulement si S1 = S2

Si S1 est une variable : S2S1  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

subsomption et unification
Subsomption 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

t tes des constituants
Tê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)

Luc

préfère

cette

compagnie

grammaires de d pendance
Grammaires 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

Luc

préfère

cette

compagnie

grammaires de d pendance1
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

objet

sujet

compagnie

Luc

déterminant

cette

lexicalisation
Lexicalisation

Lorsqu\'un mot a des compléments, la forme des compléments dépend du mot

P --> GN <préférer> GN à GN

Luc préfère cette compagnie à la concurrence

P --> GN <quitter> GN Luc quitte Paris

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

grammaires non lexicalis es
Grammaires non lexicalisées

On regroupe tous les mots qui entrent dans une même construction

On fait une règle commune

P --> GN V GN à GN { V.N1àN2 = "+" ; }

Luc préfère cette compagnie à la concurrence

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

Luc quitte Paris

Luc préfère cette compagnie

P --> GN V Prép GN {

V.PrépN1 = "+" ; V.Prép = Prép ; }

Luc part pour Toulouse

analyse syntaxique
Analyse 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

l algorithme d earley 1970
L\'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

les sous arbres
Les 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 --> GN <aimer> . GN

0-3

P

GN

GN

Det

Det

N

N

<le>

<orchestre>

<aimer>

<ce>

<mélodie>

0 1 2 3 4 5

les sous arbres1
Les sous-arbres

P

Exemple 2

GN --> Det N .

0-2

Exemple 3

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

GN

GN

Det

Det

N

N

<le>

<orchestre>

<aimer>

<ce>

<mélodie>

0 1 2 3 4 5

l algorithme
L\'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 --> P

Début P0 --> . P

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

l algorithme1
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)

l algorithme2
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)

algorithme d earley et rtn
Algorithme d\'Earley et RTN

Woods (1969) a adapté l\'algorithme d\'Earley aux RTN

synonymes
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

r seau s mantique
Ré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é)

relations s mantiques
Relations 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

relations s mantiques1
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

Méronyme - holonyme

relations s mantiques2
Relations sémantiques

contraire

gagnant - vainqueur

perdant

Antonyme

wordnet
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

wordnet1
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

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

hyperonymes1
Hyperonymes

timepiece/timekeeper/horologe

atomic clock

watch/ticker

ammonia clock

sandglass

sundial

...

caesium clock

timer

hourglass

clock

egg timer

alarm clock/alarm

chronograph

stopwatch/stopo watch

...

parking meter

coordonn s
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
Autres 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

ad