Etiquetage grammatical et analyse syntaxique par programmation

publicité
Etiquetage grammatical et analyse syntaxique
par programmation dynamique
Matthieu Constant
Université Paris-Est Marne-la-Vallée, LIGM
Etiquetage
Plan
Etiquetage grammatical
Analyse syntaxique
Analyse
Etiquetage
Plan
Etiquetage grammatical
Analyse syntaxique
Analyse
Etiquetage
Analyse
Etiquetage grammatical
But
Associer à une séquence w = w1 ...wk de mots, une séquence t
= t1 ...tk d’étiquettes appartenant à un jeu d’étiquettes J .
Point de vue probabiliste
Trouver la séquence la séquence d’étiquettes t̂ qui maximise
P (t |w ) parmi l’ensemble des séquences d’étiquettes possibles.
t̂ =argmaxt P (t |w ) = argmaxt P (w |t ).P (t )
Etiquetage
Analyse
Modèle de Markov caché d’ordre N
Principe
◮
Symbole visible : mot
◮
Symbole caché à découvrir : étiquette
◮
Hypothèses d’indépendance
Hypothèses de Markov pour le calcul de P (w |t ).P (t )
◮
P(w|t) ? un symbole observé (mot) ne dépend que du
symbole caché associé (étiquette)
◮
P(t) ? un symbole caché (étiquette) ne dépend que de ses
N précédents
Etiquetage
Analyse
Modèle de Markov caché d’ordre N
Calcul de P (w |t )
P (w |t ) = P (w1 |t1 ).P (w2 |t2 ).....P (wn |tn )
Calcul de P (t ) pour N=1
P (t ) = P (t1 ).P (t2 |t1 ).P (t3 |t2 ).....P (tn |tn−1 )
Calcul de P (t ) pour N=2
P (t ) = P (t1 ).P (t2 |t1 ).P (t3 |t1 t2 ).....P (tn |tn−2 tn−1 )
Etiquetage
Analyse
Estimation des probabilités
Corpus d’apprentissage
Le corpus utilisé pour l’apprentissage des probabilités de base
est un corpus annoté : chaque token est associé à une
catégorie grammaticale.
Calcul des probabilités d’émission P (wi |ti )
#occ (w ,t )
P (wi |ti ) = #occ (ti )i
i
Calcul des probabilités de transitions P (ti |ti −1 )
#occ (t
t)
P (ti |ti −1 ) = #occ (it−1 i)
i −1
Etiquetage
Analyse
Exemple (N = 2)
On suppose que J ={X,Y} et que notre vocabulaire est {a,b,c}.
Probabilités d’émission
a
b
c
X
1/10
4/10
5/10
Y
6/10
3/10
1/10
X
7/10
3/10
Y
4/10
6/10
Probabilités de transitions
X
Y
Etiquetage
Décodage : trouver la séquence d’étiquettes la plus
probable
Première solution (naïve)
Calculer la probabilité de chacune des séquences d’étiquettes
possibles.
Seconde solution
Application de l’algorithme de Viterbi (programmation
dynamique)
Analyse
Etiquetage
Analyse
Treillis de la phrase
Principe
Le treillis de la phrase représente sous la forme de graphe
toutes les séquences d’étiquettes possibles, pour une
séquence donnée de mots. Un noeud correspond à une
étiquette possible.
Noeud initial : start
Exemple pour la séquence de mots acba
a
c
b
a
X
X
X
X
Y
Y
Y
Y
start
Etiquetage
Analyse
Pondération du treillis
◮
On pondère respectivement les noeuds et les arcs par les
probabilités d’émission et de transition
◮
cas particulier : P(start) = 1, les arcs (start,x) sont
pondérés par P(x) ; ex. P(X)=0.6 et P(Y)=0.4
a
c
0.7
0.6
start
X/0.1
0.7
X/0.5
0.3
0.4
Y/0.6
0.4
0.6
0.7
X/0.4
0.3
Y/0.1
a
b
0.4
0.6
X/0.1
0.3
0.4
Y/0.3
0.6
Y/0.6
Etiquetage
Analyse
Décodage par programmation dynamique
Trouver la séquence d’étiquettes la plus probable
◮
La probabilité d’un chemin du treillis est le produit des
poids du chemin
◮
Trouver le chemin le plus probable
Algorithme de Viterbi
◮
Algorithme itératif
◮
A chaque étape (mot i), on se sert des calculs faits à
l’étape précédente (mot i − 1)
◮
Remplissage itératif d’une matrice (ligne=étiquette ;
colonne=mot) colonne par colonne en partant de la
première et en terminant par la dernière
Etiquetage
Analyse
Algorithme de Viterbi
Notations
◮
wi mot à l’indice i (colonne i )
◮
t j étiquette à la ligne j
◮
Proba[j,i] : probabilité maximale d’accéder au noeud (j,i) du
treillis en partant du noeud start
Récurrence pour i > 1
Proba[j , i ] = maxk (Proba[k , i − 1].P (t j |t k ).P (wi |t j ))
On garde en mémoire (dans Back [j , i ]) l’étiquette t k qui a permis
de maximiser Proba[j , i ].
Etiquetage
Analyse
Algorithme de Viterbi (suite)
Initialisation (i = 1)
Proba[1, j ] = P(t j ).P(w1 |t j )
Procédure finale
Une fois la matrice remplie, on retrouve le chemin qui a donné
la probabilité maximale dans la dernière colonne de Proba et on
en déduit le chemin de l’automate des transitions
correspondant grâce à la matrice Back .
Etiquetage
Analyse
Exercice : trouver la séquence d’étiquettes la plus
probable pour acba avec P (X ) = 0.6 et P (Y ) = 0.4.
Probabilités d’émission
a
b
c
X
1/10
4/10
5/10
Y
6/10
3/10
1/10
X
7/10
3/10
Y
4/10
6/10
Probabilités de transitions
X
Y
Etiquetage
Plan
Etiquetage grammatical
Analyse syntaxique
Analyse
Etiquetage
Analyse
Analyse syntaxique
Parsing
◮
Entrées : une phrase étiquetée et une grammaire
algébrique
◮
Sorties : les ou les arbres de dérivation de la phrase
Algorithmes
◮
Descendants
◮
Ascendants
◮
Programmation dynamique (aujourd’hui)
Etiquetage
Analyse
Exemple de grammaire
P→GN <disparaître>
P→GN <empirer>
P→GN <orchestrer> GN
P→GN <aimer> GN
GN→Det N
GN→Npr
Det→<le>
Det→<ce>
Det→<un>
Det→tous les
Det→toutes les
N→<mélodie>
N→<corruption>
N→<orchestre>
N→<empire>
Npr→Luc
Npr→Anne
Exercice : Donner les arbres dérivés de l’application de cette
grammaire sur les phrases : (1) La corruption empire ; (2) Luc
aime toutes les mélodies
Etiquetage
Analyse
Algorithme d’Earley (1970)
Programmation dynamique
On sauvegarde dans un tableau tous les résultats
intermédiaires réutilisables
Principe
◮
Analyse descendante
◮
On a un tableau indicé par les tokens de la phrase
◮
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 les sous-arbres déjà créés
◮
Pour contruire les arbres de dérivation, on combine les
sous-arbres du tableau
Etiquetage
Analyse
Les sous-arbres
Définition
Un sous-arbre est représenté par un triplet :
◮
une règle pointée (le point indique jusqu’où on a analysé
dans la règle)
◮
deux positions dans la phrase, correspondant au début de
l’application de la règle et au point jusqu’où on a analysé
dans la phrase
Règle pointée complétée
Règle dont le point est à la fin
Etiquetage
Analyse
Algorithme
Principe
◮
Parcours du tableau de gauche à droite
◮
Pour chaque 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
Initialisation
On suppose que l’axiome de la grammaire apparaît une seule
fois, dans une règle P0→P
A l’indice 0, on met le sous-arbre (P0→.P,0,0)
Terminaison
On vérifie qu’à l’indice n (nombre de tokens de la phrase), on a
le sous-arbre (P0→P.,0,n)
Etiquetage
Analyse
Trois opérations
Vérifier : scan(A→u.tv,i,j)
if t correspond à token[j] then
table[j+1].enqueue(A →ut.v,i,j+1)
end if
Prédire : predict(A→u.Bv,i,j)
for all (B →w) in rules(B) do
table[j].enqueue(B →.w,j,j)
end for
Compléter : complete(B→w.,j,k)
for all (A →u.Bv,i,j) in table[j] do
table[k].enqueue(A →uB.v,i,k)
end for
Etiquetage
Analyse
Algorithme
table[0].enqueue(P0→.P,0,0)
for all i from 0 to n do
for all subTree in table[i] do
if subTree.isComplete() then
complete(subTree)
else
if subTree.nextSymbol() is terminal then
scan(subTree)
else
predict(subTree)
end if
end if
end for
end for
if table[n].contains(P0→P.,0,n) then
constructTrees(n)
end if
Etiquetage
Analyse
Exercice
Soit la grammaire
P→XY
Y→WZ
Z→VY
V→a
W→b
X→c
Y→d
Dérouler l’algorithme de Earley pour l’application de cette
grammaire sur la séquence caadbb.
Téléchargement