XIP Un analyseur incrémental robuste Laura Monceaux & Isabelle Robba Séminaire LIR – 04 / 06 / 02
Plan de l’exposé Qu’est-ce-qu’un analyseur robuste ? Architecture de XIP Structure des données Présentation des différentes règles –Désambiguïsation –Segmentation –Marquage et Remaniement –Extraction des dépendances Conclusion & Démonstration
Définition d'un analyseur robuste Robustesse : capacité d'un analyseur à fournir des analyses "correctes" pour des corpus "tout venant" –Produire une analyse même minimale pour toute entrée –Limiter le nombre d’analyses produites ou donner des indications sur les préférences choisies
Vers des analyseurs robustes… Plusieurs approches : –Analyseurs utilisant des modèles traditionnels avec un mécanisme particulier pour éliminer les échecs ou sélectionner la meilleure analyse (Frank et al, 98: extension LFG) –Approches probabilistes : calcul de la structure la plus probable en utilisant des règles extraites d'un corpus annoté –Analyseurs partiels : structures minimales éventuellement sous spécifiées, néanmoins utilisables pour une analyse plus complète –Systèmes hybrides
Architecture de XIP Pré-traitement Contrôle des entrées Désambiguïsation Segmentation Analyse des dépendances Règles de désambiguïsation Règles de dépendance Règles de segmentation Texte en entrée Texte analysé morphologiquement Texte désambiguïsé Texte annoté syntaxiquement
Aspects généraux Incrémental grâce à des paquets ordonnés de règles Pas de retour en arrière Déterministe pour la segmentation en constituants Non déterministe pour l'extraction des dépendances
Données et opérateurs Les données sont représentées par une suite de nœuds Un nœud : nom + [ couples trait valeur ] Dog : noun [lemme: dog, surface: Dog, uppercase: +, sing: +] chases : verb [lemme: chase, surface: chases, pres: +, person:3 sing: +] Les opérateurs pour décrire la séquence des nœuds :, une concaténation de nœuds () des éléments optionnels ; la disjonction *0 ou plusieurs éléments +un ou plusieurs éléments ? n'importe quel élément ~tout sauf cet élément
Les opérateurs pour comparer les nœuds : :: égalité entre 2 nœuds ~:différence entre 2 nœuds < le nœud de gauche précède celui de droite > le nœud de gauche suit celui de droite L'exploration du contenu d'un nœud : {}indique qu'un sous-nœud doit être examiné TRE (tree regular expression) NP {det, noun}, FV {verb} NP {det, noun [last]}; NP {pron}, FV {verb} Données et opérateurs
Différents types de règle Pré-traitement Désambiguïsation Segmentation Analyse des dépendances Règles de désambiguïsation Règles de dépendance Règles de segmentation Règles de marquage et remaniement Texte en entrée Texte analysé morphologiquement Texte désambiguïsé Texte annoté syntaxiquement
Règles de désambiguïsation Elles choisissent l'interprétation la plus probable d'un mot en fonction de son contexte Elles désambiguïsent certains traits Règles de la forme : interprétations = | Contexte-G | choix | Contexte-D | Exemples :noun,verb = verb | det | noun,verb = | det | noun The Bridge.V Bridge.N span.V span.N the flow.V flow.N
/*** REGLE DESAMB 132 ***\ /prefer noun if preceded by unambiguous det\ 1> noun,verb = |det[pron:~,prep:~,adj:~]| ?[verb:~]. garde les interprétations qui n'ont pas le trait verb /*** REGLE DESAMB 137 ***\ /prefer verb if sequence: Noun Pron Verb \ 1> noun,verb = |noun[verb:~,adv:~,conj:~], pron%[prep:~]| verb. garde l'interprétation verb et désambiguïse le pronom Règles de désambiguïsation
Règles de segmentation Elles groupent les nœuds en segments (chunks) afin de faciliter l'extraction des dépendances Règles organisées par niveaux, pas de retour arrière, règles non récursives 2 types de règles (un seul par niveau): –ID / LP : identifier des paquets de nœuds partiellement ordonnés nœud non lexical -> |Ctxte| suite de nœuds |Ctxte| [ensemble de traits] < [ensemble de traits] –Séquence : identifier des sous séquences ordonnées de nœuds nœud non lexical = |Ctxte| séq. ord. de nœuds | Ctxte |
9 catégories de segments pour le français : NP : groupe nominalFV : noyau verbal AP : groupe adjectivalGV : participe présent PP : groupe prépositionnelIV : verbe infinitif BG : tête de subordonnée INS : incise SC : clause Le chat de la voisine - au demeurant peu aimable – est parti en miaulant capturer une souris qui traînait là. { SC {NP {Le chat} PP {de NP {la voisine} } INS {- AP {au demeurant peu aimable} -} FV {est parti} } GV {en miaulant} IV {capturer} NP {une souris} SC { BG {qui} FV {traînait} } là.} Règles de segmentation
Règles de segmentation : ID / LP Entrée lue de droite à gauche Appliquées sur la séquence la plus longue possible NP -> det [first], noun [last], noun*, adj*, adv* Det The ADV very ADJ beautiful Noun shepherd Noun dog 43 règles ID pour construire : NP (18), PP (5), AP (2), FV (3), GV (3), IV (8), GV (3), INS (2) 5 règles LP pour vérifier des contraintes d'ordre sur le contenu des NP
Règles de segmentation : séquence Entrée lue de gauche à droite Appliquées sur la séquence la plus courte ou la plus longue NP = det, adv*, adj*, noun+. Det The ADV very ADJ beautiful Noun shepherd Noun dog 12 règles de séquence pour construire les SC
DiRègles: 1> AP -> (adv+[last:~]),adj[verb:~]. 2> NP -> |?[noun:~]| AP[first:+], noun[last:+,proper:~]. 4> FV [verb:+] -> (neg[first:+]),(adv[psneg:+,first:~]), (pron+[nom:~,dem:~,poss:~,rel:~]), (punct+[first:~]), (adv+[first:~]), verb[inf:~,partpre:~,partpas:~,last:+]. PLRègles: 2> [det:+] < [noun:+] 2> [adj:+] < [noun:+,proper:+] Séquence: 7> SC = BG,?*[fin:~, scbegin:~],FV. /* From the beginning of the sentence to the main FV *\ 9> SC = ?[start:+],?*[fin:~,scbegin:~],FV. Règles de segmentation : exemples
Règles de modification de l’arbre des segments Règles de marquage –Instanciation de caractéristiques spécifiques sur les nœuds de l’arbre de chunks –FV[passive:+] { aux[be], verb[ppe] } Verbe[ppe] mangée FV est Aux NP [passive:+]
#1 #3 #5 #4#2 Règles de modification de l’arbre des segments Règles de remaniement – Reconstruction de certaines sections de l’arbre des segments – PP#1 {?*#2, NP#3 {?*#4,#5[last]}} = #1{#2,#4,#5} NP avec Prep PP NomDet sourirele avec Prep PP NomDet sourirele
Calcul des dépendances Relations n-aires : –Dépendances syntaxiques standard (ex : Sujet, Objet …) –Relations plus « larges » incluant des relations entre phrases (ex : co-référence) Différents types de fonctions : – Créer une nouvelle relation entre les nœuds – Assigner de nouvelles caractéristiques à un nœud de l’arbre des segments – Supprimer une relation existante – Renommer une relation de dépendance existante
24 relations de dépendance –SUBJ –INTERROG –SUBJCLIT / sujet clitique: le chat vient-il; aussi dort- elle...; le chat, dit-il, –VARG / complement direct: COD, infinitives, etc.\ –DEEPSUBJ /deep subject\ –DEEPOBJ /deep objet\ –COREF / antecedent relative\ –VMOD / verb PP mod (modified by [arg] feature if matches some argument)\ –NMOD NARG/ noun PP mod (modified by [arg] feature if matches some argument)\ –ADJARG / ADJ PP mod (modified by [arg] feature if matches some argument)\ –NN / Noun modifying a Noun: genre clown\
24 relations de dépendance –SEQNP / sequence of NPs: apposition, lists\ –COORDITEMS / coordinated items (coorditems [noun], coorditems[noun,prep], coorditems[sc]\ –PREPOBJ / prep PPobj relation\ –DETERM / determination\ –STRAYNP / stray NP\ –CLOSEDNP / closed NP \ –REFLEX / reflex: reflexive construction: il se lave\ –AUXIL /auxiliary verbs\ –CONNECT /connector introducing clause : e.g. quand tu veux –NEGAT / negation: ne mange\ –PRECOMMA /comma before a given chunk\ –MWEHEAD/ head of an MWE expression\
Sorties de XIP SUBJ_NOUN(parti,chat) SUBJ_REL_COREF_NOUN(traînait,souris) SUBJ(capturer,chat) VARG_NOUN_DIR(capturer,souris) VARG_INF_DIR(parti,capturer) COREF_POSIT1_REL(souris,qui) VMOD_POSIT1_ADV(traînait,là) NMOD_POSIT1_RIGHT_ADJ(voisine,aimable) NMOD_POSIT1_NOUN_INDIR(chat,de,voisine) PREPOBJ_CLOSED(de,voisine) DETERM_DEF_NOUN_DET(Le,chat) Le chat de la voisine - au demeurant peu aimable – est parti en miaulant capturer une souris qui traînait là.
Calcul des dépendances En entrée : arbre des segments Forme des règles : |pattern| if … Expression régulière qui décrit une partie de l’arbre des segments Expression booléen construit à partir des termes de dépendances, des opérateurs, … Dépendances de la forme : Name [f-list] (a1,…,an) Nom de la relation caractéristiques arguments
#2#3#1 Création de dépendances Règle : | SC { NP { ?*, #1[last]}, VP { ?*, #2[last] } }, NP { ?*, #3[last] } | if (~Subj(#,#2)) Subj (#1,#2),Obj (#2,#3) Arbre des segments : TOP SC NP VP Det Nom chatLe Verbe mange lasouris Subj(chat,manger) Obj(manger,souris)
#2 Ajout de nouvelles caractéristiques But : Raffiner les relations de dépendances en leur ajoutant des caractéristiques Exemple de règle : |NP {?*, #1[last]}, VP[passive:+] {?*, #2[last]} | Subj [passive:+] (#1,#2) #1 DetNom sourisLa Verbe mangée NPVP [passive:+] Aux estpar Subj [pass:+] (souris,manger)
Renommer les dépendances Le caractère ^ marque la relation modifiée dans la règle Exemple : –Changement d’un VMOD en VARG si sous-cadre de catégorisation est compatible avec la préposition –If (^Vmod(#2, #1) & prep(#3,#1) & #2[fsubcat] : #3[fsubcat] ) Varg(#2, #1)
Suppression de relations de dépendance Le caractère ^ marque la relation de dépendance à supprimer Le caractère ~ permet de supprimer l’élément pointé Exemple : if ( Subj[left](#2, #1) & ^Subj[right](#3,#1) ) ~
Extraction de co-référence Connecter tous les noms à la phrase S | S#2 { ?*, Noun #} | NwithinS(#2,#1) Extraction du pronom co-référence possible | S#3, S{ SC { ?*, FV { ?*, #1Verb[last] }}} | if ( subj[imperso:~] ( #2 [pron, clit,p3,indef :~ ],#1) & NwithinS(#3, #4) ) Coref (#2, #4)
Extraction de la co-référence R1 : | S#3 { ?*, Noun #} | NwithinS(#3,#4) R2 : | S#3, S{SC {?*, FV {?*, #1Verb[last]}}} | if (subj [ imper:~](#2 [pron, clit,p3,indef :~ ],#1) & Nwithin (#3, #4) Coref (#2, #4) TOP S S NP Jean NP FV Pronom il Verbe travaille SC #3 #4 #2 #1
Conclusion But : construire un ensemble de dépendances Plusieurs formes d'entrées : utilisation d'un autre segmenteur, tokenizeur, … Grammaire incrémentale, facilement modifiable Meilleurs résultats que IFSP notamment pour le traitement des questions Disponible en français et en anglais Versions Unix, Linux et Windows