Syntaxe et analyse syntaxique r seaux s mantiques
This presentation is the property of its rightful owner.
Sponsored Links
1 / 50

Syntaxe et analyse syntaxique Réseaux sémantiques PowerPoint PPT Presentation


  • 97 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Syntaxe et analyse syntaxique Réseaux sémantiques

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 attendLe public attend

Le GN est obligatoirement au singulier :

*Les spectateurs attend

P--> GN attendentLes 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> GNLuc quitte Paris

P--> GN <partir> Prép GNLuc 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 :Lesorchestresaimentcettemé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>

01 234 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 2Exemple 3 : rangé à l'indice 3

GN

GN

Det

Det

N

N

<le>

<orchestre>

<aimer>

<ce>

<mélodie>

01 234 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ébutP0 --> . P

0-0

FinP0 --> 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 avionC'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 merX

poisson - poiscailleY

animal - bêteZ

Y est une sorte de X

bar - bistro - brasserie - café - estaminetX

bar à vinsY

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 unV/Vexhale/breathe; inhale/breathe

est unN/Ncat/feline

instanceN/NEiffel Tower/tower

partieN/NFrance/Europe

membreN/NFrance/European Union

similaireA/Adying/moribund


Wordnet2

WordNet

Principales relations entre lemmes

contraireA/Agood/bad

appartenanceA/Nacademic/academia

appartenanceAdv/Aboastfully/boastful

dérivéN/Vkilling/kill

dérivéA/Ndark/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)

etconsume/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


  • Login