Syntaxe%20et%20analyse%20syntaxique%20R - PowerPoint PPT Presentation

About This Presentation
Title:

Syntaxe%20et%20analyse%20syntaxique%20R

Description:

Le public attendent. On veut viter d'avoir deux symboles distincts pour les GN au ... Le public attend - Les spectateurs attendent - Vous attendez ... – PowerPoint PPT presentation

Number of Views:167
Avg rating:3.0/5.0
Slides: 51
Provided by: lapo4
Category:

less

Transcript and Presenter's Notes

Title: Syntaxe%20et%20analyse%20syntaxique%20R


1
Syntaxe et analyse syntaxiqueRéseaux sémantiques
Eric LaporteInstitut Gaspard-MongeUniversité
Paris-Est Marne-la-ValléeFrancehttp//igm.univ-
mlv.fr/laporte/
2
Syntaxe et analyse syntaxiqueRéseaux sémantiques
  • Unification
  • Analyse syntaxique par l'algorithme d'Earley
  • Réseaux sémantiques
  • Relations sémantiques
  • WordNet

3
Accord 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

4
Accord 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

5
Accord 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

6
Accord 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

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

8
Unification (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

9
Unification (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

10
Unification (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

11
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

12
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

13
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

14
Accord 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

15
Accord 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

16
Avec des RTN
  • On attache les attributs
  • - à des noeuds du graphe .nombre
  • - au graphe nombre, personne
  • Fonctionnalité disponible avec Outilex, pas
    encore avec Unitex

17
Unification 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

18
Unification 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
19
Unification 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"
20
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"
21
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

22
Ré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
23
Subsomption (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"
24
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 contraintes précisées dans S1 doivent être
    précisées aussi dans S2 sans contradiction
  • S2 peut préciser des contraintes supplémentaires

25
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

26
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)
préfère
cette
Luc
compagnie
27
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
préfère
Luc
cette
compagnie
28
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
29
Lexicalisation
  • 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

30
Grammaires 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

31
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

32
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

33
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 --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
34
Les 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
35
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 --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

36
L'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)

37
L'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)

38
Algorithme d'Earley et RTN
  • Woods (1969) a adapté l'algorithme d'Earley aux
    RTN

39
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

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

41
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

42
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

43
Relations sémantiques
  • contraire
  • gagnant - vainqueur
  • perdant
  • Antonyme

44
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

45
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

46
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

47
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

48
Hyperonymes
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
49
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

50
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
Write a Comment
User Comments (0)
About PowerShow.com