xip un analyseur incrémental robuste
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
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 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èglePré-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.VBridge.N
span.Vspan.N
the flow.Vflow.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 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à .}
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*
DetThe
ADVvery
ADJbeautiful
Nounshepherd
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+.
DetThe
ADVvery
ADJbeautiful
Nounshepherd
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
sourireleavec
Prep
PP
NomDet
sourirele
Calcul des dépendancesRelations 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 <conditions> <d-term1>…<d-termK>
Expression régulièrequi décrit une partie
de l’arbre des segments
Expression booléenconstruit à partir des
termes de dépendances, des opérateurs, …
Dépendances de la forme :
Name [f-list] (a1,…,an)
Nom de la relation
caractéristiquesarguments
#2
#3
#1
Création de dépendancesRègle : | SC { NP { ?*, #1[last]}, VP { ?*, #2[last] } }, NP
{ ?*, #3[last] } | if (~Subj(#,#2)) Subj (#1,#2) ,Obj (#2,#3)
Arbre des segments : TOP
SCNP
NP VP
Det
Det
Nom
Nom
chatLe
Verbe
mange
la souris
Subj(chat,manger)
Obj(manger,souris)
#2
Ajout de nouvelles caractéristiquesBut : Raffiner les relations de dépendances
en leur ajoutant des caractéristiquesExemple de règle :
|NP {?*, #1[last]}, VP[passive:+] {?*, #2[last]} | Subj [passive:+] (#1,#2)
#1
Det Nom
sourisLa
Verbe
mangée
NP VP [passive:+]
Aux
est parSubj [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érenceR1 : | 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