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.