300 likes | 447 Views
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
E N D
XIPUn 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 desmodè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 Texte en entrée Contrôle des entrées Texte analysé morphologiquement Règles de désambiguïsation Désambiguïsation Texte désambiguïsé Règles de segmentation Segmentation Règles de dépendance Texte annoté syntaxiquement Analyse des dépendances
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
Données et opérateurs • 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}
Différents types de règle Pré-traitement Texte en entrée Texte analysé morphologiquement Règles de désambiguïsation Désambiguïsation Règles de segmentation Règles de marquage et remaniement Texte désambiguïsé Segmentation Texte annoté syntaxiquement Règles de dépendance Analyse des dépendances
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
Règles de désambiguïsation /*** 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 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 |
Règles de segmentation 9 catégories de segments pour le français : NP : groupe nominal FV : noyau verbal AP : groupe adjectival GV : participe présent PP : groupe prépositionnel IV : 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à .}
Det The ADV very ADJ beautiful Noun shepherd Noun dog 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* • 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
Det The ADV very ADJ beautiful Noun shepherd Noun dog 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+. • 12 règles de séquence pour construire les SC
Règles de segmentation : exemples 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.
NP FV Aux Verbe[ppe] est mangée 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] } [passive:+]
PP #1 PP Prep NP #3 Prep Det Nom #2 avec Det Nom #4 avec le sourire #5 le sourire 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}
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 Le chat de la voisine - au demeurant peu aimable – est parti en miaulant capturer une souris qui traînait là. 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)
Expression booléen construit à partir des termes de dépendances, des opérateurs, … Dépendances de la forme : Name [f-list] (a1,…,an) Expression régulière qui décrit une partie de l’arbre des segments Nom de la relation arguments caractéristiques Calcul des dépendances • En entrée : arbre des segments • Forme des règles : |pattern| if <conditions> <d-term1>…<d-termK>
Subj(chat,manger) Obj(manger,souris) #3 #1 #2 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 NP VP Det Nom Det Nom Verbe la souris Le chat mange
#1 #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) NP VP [passive:+] Aux Verbe Det Nom La souris est mangée par 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 #3 S SC NP #4 NP FV #1 Jean Pronom Verbe #2 il travaille
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