eric laporte institut gaspard-monge universit© de marne-la-vall©e france laporte/ analyse...

Download Eric Laporte Institut Gaspard-Monge Universit© de Marne-la-Vall©e France  laporte/ Analyse syntaxique R©seaux s©mantiques

Post on 04-Apr-2015

105 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • Page 1
  • Eric Laporte Institut Gaspard-Monge Universit de Marne-la-Valle France http://www-igm.univ-mlv.fr/~laporte/ Analyse syntaxique Rseaux smantiques
  • Page 2
  • Analyse syntaxique ascendante Analyse syntaxique descendante Rseaux smantiques Relations smantiques WordNet Parcours d'un rseau smantique Leve d'ambiguts Cooccurrence
  • Page 3
  • Ttes des constituants Le mot le plus important de chaque constituant est appel sa tte P (prfre) GN (Luc) prfre GN (compagnie) N (compagnie) Det (cette) cetteLuccompagnie
  • Page 4
  • Grammaires de dpendance On remplace chaque symbole non terminal par la tte correspondante, puis on supprime le noeud redondant Arbre de dpendance prfre Luc compagnie cette prfre Luc prfre compagnie cette Luc compagnie
  • Page 5
  • Grammaires de dpendance Informations perdues - tiquettes des constituants (on compense en ajoutant des tiquettes aux artes) - ordre des mots (on compense si ncessaire en ajoutant des contraintes sur l'ordre des mots) prfre Luc compagnie cette sujet objet dterminant
  • Page 6
  • Lexicalisation Lorsqu'un mot a des complments, la forme des complments dpend du mot P--> GN GN GN Luc prfre cette compagnie la concurrence P--> GN GNLuc quitte Paris P--> GN Prp GNLuc part pour Toulouse Nombre de complments Prpositions devant les complments Grammaire lexicalise Chaque rgle comporte au moins un mot du lexique (la tte en gnral) Nombre de rgles = nombre de mots x nombre de constructions
  • Page 7 GN V GN{ V.N1 = "+" ; } Luc quitte Paris Luc prfre cette compagnie P--> GN V Prp GN{ V.PrpN1 = "+" ; V.Prp = Prp ; } Luc part pour Toulouse"> GN V GN GN{ V.N1N2 = "+">
  • Grammaires non lexicalises On regroupe tous les mots qui entrent dans une mme construction On fait une rgle commune P--> GN V GN GN{ V.N1N2 = "+" ; } Luc prfre cette compagnie la concurrence P--> GN V GN{ V.N1 = "+" ; } Luc quitte Paris Luc prfre cette compagnie P--> GN V Prp GN{ V.PrpN1 = "+" ; V.Prp = Prp ; } Luc part pour Toulouse
  • Page 8
  • Analyse syntaxique Parsing Entres : une phrase tiquete et une grammaire algbrique Sorties : le ou les arbres de drivation de la phrase Algorithmes Ascendants Descendants Programmation dynamique Cascade de transducteurs
  • Page 9
  • Transducteurs Un transducteur fini est un automate fini dont les transitions sont tiquetes par des couples de squences : une squence d'entre, une squence de sortie Entre : brrr ! Sortie : pfff ! Etats : 0 1 2 3 4 Transitions : 0b/p1 1r/f2 2r/f3 3 / 2 3!/!4 Etats initiaux : 0 Etats finaux : 4 0123 4 b/p r/f !/! /
  • Page 10
  • Transducteurs Les rgles d'une grammaire algbrique peuvent tre reprsentes par des transducteurs Exemple :GN --> Det N @/@ : l'ensemble des couples a/a pour tout symbole a Entre : Det N V GN GN Sortie : GN V GN GN 012 3 @/@ Det/ N/ /GN @/@
  • Page 11
  • Cascade de transducteurs Mode d'application d'un ensemble de transducteurs un ensemble de squences S 0 Entre : S 0 i = 0 ; tant que (condition) appliquer un transducteurT i aux squences de S i, obtenir S i+1 i = i+1 Sortie : S i Variantes - on a n transducteurs T 1, T 2... T n et on les applique dans l'ordre - on a un seul transducteur et on l'applique itrativement jusqu' ce que S i+1 = S i
  • Page 12
  • Analyse syntaxique par cascade de transducteurs Entres : une phrase tiquete S 0 et les transducteurs des rgles i = 0 ; faire appliquer des transducteurs aux squences de S i, obtenir S i+1 i = i+1 jusqu' S i-1 = S i Sortie : S i Si S i contient l'axiome, S 0 est conforme la grammaire Pour construire l'arbre de drivation, il faut marquer les relations entre les squences de S i et celles de S i+1
  • Page 13
  • Exemple de grammaire algbrique P --> GN P --> GN GN GN --> Det N GN --> Npr Det --> Det --> tous les Det --> toutes les N --> Npr --> Luc Npr --> Anne
  • Page 14
  • Algorithme (1/2) ensSeqArbres = un ensemble de squences d'arbres vide pour chaque combinaison de non-terminaux compatible avec phrase ensSeqArbres.ajouterSeqArbres(combinaison) tant que ensSeqArbres n'est pas vide nouvEnsSeqArbres = un ensemble de squences d'arbres vide pour chaque seqArbres dans ensSeqArbres seqRacines = seqArbres.seqRacines() pour chaque facteur de seqRacines pour chaque rgle dont le membre droit corresp. facteur copieSeqArbres = seqArbres.copier() copieSeqArbres.ajouter(facteur, rgle) nouvEnsSeqArbres.ajouter(copieSeqArbres)
  • Page 15
  • Algorithme (2/2) pour chaque seqArbres dans nouvEnsSeqArbres si seqArbres est un arbre et si sa racine est l'axiome seqArbres.crire() nouvEnsSeqArbres.supprimer(seqArbres) ensSeqArbres = nouvEnsSeqArbres
  • Page 16
  • Inconvnients On utilise peu la grammaire Avec Les orchestres aiment cette mlodie, toutes les squences qui contiennent suivi de sont incompatibles avec la grammaire
  • Page 17
  • Analyse syntaxique descendante P GN P P GN DetN P GN DetN Les orchestres aiment cette mlodie
  • Page 18
  • Analyse descendante P GN DetN P GN DetN P GN DetN P GN DetN exploration arborescente : on essaye autre chose
  • Page 19
  • Analyse descendante P GN P GN GN P GN P Npr etc.
  • Page 20
  • Arbre produit P GN GN DetN N
  • Page 21
  • Analyse descendante phrase.desc(arbre, feuilleCourante, tokenCourant) : pour chaque feuille1 partir de feuilleCourante symbole = feuille1.tiquette si symbole est terminal si symbole est compatible avec token token = phrase.suivant(token) sinon dtruire arbre ; sortir de la fonction sinon si symbole est une variable pour chaque rgle dont le membre gauche est symbole copieArbre = arbre.copier() feuille2 = quivalent de feuille1 dans copieArbre copieArbre.ajouter(rgle, feuille2) feuille3 = copieArbre.premierFils(feuille2) phrase.desc(copieArbre, feuille3, token) sortir de la fonction arbre.crire()
  • Page 22
  • Inconvnients On utilise peu le texte Avec Les orchestres aiment cette mlodie, les 10 premiers arbres contiennent disparatre, qui ne figure pas dans la phrase On construit plusieurs fois les mmes sous-arbres Le sous-arbre pour Les orchestres est construit 4 fois et dtruit 3 fois Boucle en cas de rcursivit gauche Une rgle comme GN --> GN Adj lance l'algorithme dans une boucle infinie
  • Page 23
  • L'algorithme d'Earley (1970) Analyse descendante Sauvegarde dans un tableau tous les rsultats intermdiaires rutilisables (programmation dynamique) Tableau indic par les tokens de la phrase Phrase :Lesorchestresaimentcettemlodie 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 arrire On ne dtruit jamais des sous-arbres dj crs Pour construire les arbres de drivation, on combine les sous-arbres du tableau
  • Page 24
  • Les sous-arbres Un sous-arbre est reprsent par - une rgle pointe (le point indique jusqu'o on a analys) - deux positions dans la phrase, correspondant : - au dbut de la rgle - et au point jusqu'o on a analys Exemple 1 P --> GN. GN 0-3 Det N N GN P 01 234 5
  • Page 25
  • Les sous-arbres Exemple 2 GN --> Det N. 0-2 Exemple 3 GN -->. Det N 3-3 Si la 2 e 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 Det N N GN P 01 234 5
  • Page 26
  • L'algorithme On parcourt le tableau de gauche droite Quand on est l'indice i, on parcourt les sous-arbres et on cre de nouveaux sous-arbres l'indice i (queue FIFO) et l'indice i + 1 On suppose que l'axiome de la grammaire apparat une seule fois, dans une rgle P0 --> P DbutP0 -->. P 0-0 FinP0 --> P. 0-n(n = nombre de tokens dans la phrase) Rgle pointe complte : rgle dont le point est la fin
  • Page 27
  • L'algorithme analyseur.table[0].enfiler(P0 -->. P, 0, 0) pour i de 0 n pour chaque sousArbre dans table[i] si sousArbre.complte() analyseur.complter(sousArbre) sinon si sousArbre.prochainSymbole() est terminal analyseur.vrifier(sousArbre) sinon analyseur.prdire(sousArbre) si analyseur.table[n].contient(P0 --> P., 0, n) analyseur.construireArbres(n)
  • Page 28
  • L'algorithme complter(B --> w., j, k) : pour chaque (A --> u. B v, i, j) dans table[j] table[k].enfiler(A --> u B. v, i, k) vrifier(A --> u. t v, i, j) : si t correspond token[j] table[j + 1].enfiler(A --> u t. v, i, j + 1) prdire(A --> u. B v, i, j) : pour chaque (B --> w) dans rgles(B) table[j].enfiler(B -->. w, j, j)
  • Page 29
  • Ambiguts Quand un mot est ambigu, ses utilisations correspondent des sens diffrents Luc a perdu la premire manche La chemise a perdu sa manche gauche La pioche a perdu son manche Chaque utilisation correspond un sens prcis Vienne est la capitale de l'Autriche Vienne est prs de Valence La Vienne fait partie de la rgion Poitou-Charentes La Vienne se jette dans la Loire Il faut absolument qu'il vienne
  • Page 30
  • 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 Critre Possibilit de remplacer un mot par l'autre dans au moins un contexte sans "trop" changer le sens
  • Page 31
  • Rseau smantique Comme un lexique m