cours 6 paires attribut-valeur structures de traits unification

28
Cours 6 Paires attribut-valeur Structures de traits Unification

Upload: armand-simonin

Post on 04-Apr-2015

123 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Cours 6 Paires attribut-valeur Structures de traits Unification

Cours 6

Paires attribut-valeur

Structures de traits

Unification

Page 2: Cours 6 Paires attribut-valeur Structures de traits Unification

Paires attribut-valeurÉtiquettes lexicales

viendrai

[ catgram="verbe"

lemme="venir"

temps="futur"

personne="1"

nombre="singulier" ]

je[ catgram="pronom"

personne="1"nombre="singulier" ]

Contraintes

Je viendrai *Tu viendrai *Il viendrai

*Je viendras Tu viendras *Il viendras

*Je viendras *Tu viendra Il viendra

token1.personne = token2.personne

token1.nombre = token2.nombre

Page 3: Cours 6 Paires attribut-valeur Structures de traits Unification

Paires attribut-valeur avec variablesÉtiquettes lexicales

viendrai

[ catgram="verbe"

lemme="venir"

temps="futur"

personne=personneVerbe

nombre=nombreVerbe ]

je[ catgram="pronom"

personne=personnePronomnombre=nombrePronom ]

Les valeurs d'un attribut peuvent être des constantes ou des variables

Équations exprimant les contraintes d'accord :

token1.personneVerbe = token2.personnePronom

token1.nombreVerbe = token2.nombrePronom

Page 4: Cours 6 Paires attribut-valeur Structures de traits Unification

Paires attribut-valeur avec structuresviendrai

[ catgram="verbe"

lemme="venir"

temps="futur"

accord= [

personne=personneVerbe

nombre=nombreVerbe ] ]

je[ catgram="pronom"

accord= [personne=personnePronomnombre=nombrePronom ] ]

La valeur d'un attribut peut être un ensemble de paires attribut-valeur (récursif)

token1.accord = token2.accord

Page 5: Cours 6 Paires attribut-valeur Structures de traits Unification

Structures de traits

Une structure de traits (feature structure) peut être :

- un ensemble de paires attribut-valeur, dans les quelles chaque valeur est une structure de traits

- une constante simple ("singulier")

- vide (dans le cas d'une valeur inconnue)

- un pointeur sur structure de traits

Les pointeurs permettent à deux structures de traits d'avoir une partie commune

Page 6: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemple avec valeurs inconnues

viendrai

[ catgram="verbe"

lemme="venir"

temps="futur"

personne=(vide)

nombre=(vide) ]

Utilisation

- quand on ne connaît pas les valeurs de la personne et du nombre

- exprimer des contraintes indépendantes de ces valeurs

Page 7: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemple avec partie partagéeviendrai

[ catgram="verbe"

lemme="venir"

temps="futur"

accord=

[ personne="1"

nombre="singulier" ] ]

je[ catgram="pronom"

accord=(pointeur) ]

Le partage entre la structure viendrai et la structure je est équivalent à l'équation

token1.accord = token2.accord

Pour chaque valeur d'attribut, on aura un contenu (constante ou structure ou vide) et un pointeur (éventuellement nul)

Page 8: Cours 6 Paires attribut-valeur Structures de traits Unification

Structures de traits

Représentation par un graphe acyclique

catgram

lemme

temps

accord

contenu : "verbe"pointeur :

contenu : "venir"pointeur :

contenu : "futur"pointeur :

personne

temps

contenu : "1"pointeur :

contenu : "singulier"pointeur :

pointeur :

contenu :

contenu :pointeur :

contenu :pointeur :

Page 9: Cours 6 Paires attribut-valeur Structures de traits Unification

Structures de traits

Chaque noeud du graphe est soit une constante simple, soit un ensemble de traits attribut-valeur

Pour chaque valeur d'attribut, on a un contenu et un pointeurLe contenu peut être videLe pointeur peut être nulSi le contenu n'est pas vide et le pointeur n'est pas nul, c'est le pointeur

qui représente la valeur de l'attributSi S est une structure de traits, deref(S) est le noeud du graphe acyclique

trouvé dans le champ pointeur ou dans le champ contenuderef(feature-structure S)

if (S.pointer is null)return S.content

else return * S.pointer

Page 10: Cours 6 Paires attribut-valeur Structures de traits Unification

Unification

Unifier deux structures de traits s1 et s2, c'est construire une structure qui contient l'union des informations de s1 et de s2 en supposant qu'elles décrivent la même chose

Comparaison d'informations[ nombre="singulier"] [ nombre="singulier"]

= [ nombre="singulier"]

[ nombre="singulier"] [ nombre="pluriel"]--> échec

[ nombre="singulier"] [ nombre=(vide)]= [ nombre="singulier"]

Page 11: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemples

Combinaison d'informations

[ personne="1"] [ nombre="singulier"]

= [ personne="1"

nombre="singulier"]

[ nombre="singulier"] [ (vide) ]

= [ nombre="singulier"]

Page 12: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemple avec partie partagée dans la même structure

[ sujet=

[ catgram="pronom"

accord=(pointeur) ]

verbe=

[ catgram="verbe"

lemme="venir"

temps="futur"

accord=

[ personne="1"

nombre="singulier" ] ] ]

Représente Je viendrai avec un sujet et un verbe

Page 13: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemple d'unification avec pointeurs

[ sujet= [ accord=(pointeur) ]

verbe= [ catgram="verbe"

accord= [ personne="1"

nombre="singulier" ] ] ]

[ sujet= [ accord= [ personne="1"

nombre="singulier" ] ] ]

=

[ sujet= [ accord=(pointeur) ]

verbe= [ catgram="verbe"

accord= [ personne="1"

nombre="singulier" ] ] ]

Page 14: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemple d'unification avec pointeurs

[ sujet= [ accord=(pointeur) ]

verbe= [ catgram="verbe"

accord= [ (vide) ] ] ]

[ sujet= [ accord= [ personne="3"

nombre="singulier" ] ] ]

=

[ sujet= [ accord=(pointeur) ]

verbe= [ catgram="verbe"

accord= [ personne="3"

nombre="singulier" ] ] ]

Page 15: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemple d'unification sans pointeurs

[ sujet= [ accord= [ nombre="singulier" ] ]

verbe= [ catgram="verbe"

accord= [ nombre="singulier" ] ] ]

[ sujet= [ accord= [ personne="3"

nombre="singulier" ] ] ]

=

[ sujet= [ accord= [ personne="3"

nombre="singulier" ] ]

verbe= [ catgram="verbe"

accord= [ nombre="singulier" ] ] ]

Page 16: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemple d'échec d'unification

[ sujet= [ accord=(pointeur) ]

verbe= [ catgram="verbe"

accord= [ personne="1"

nombre="singulier" ] ] ]

[ sujet= [ accord= [ personne="3"

nombre="singulier" ] ]

verbe= [ catgram="verbe"

accord= [ personne="1"

nombre="singulier" ] ] ]

--> échec

Page 17: Cours 6 Paires attribut-valeur Structures de traits Unification

Subsomption

S1 S2 (S1 subsume S2) veut dire que S1 est plus générale que S2 :

- pour tout attribut a de S1, S1(a) S2(a)

- pour tous chemins c et d de S1 tels que S1(c)=S1(d), S2(c)=S2(d)

Toutes les informations présentes dans S1 sont présentes aussi dans S2 sans contradictions

[ personne="1"] [ personne="1"

nombre="singulier"]

[ (vide) ] [ nombre="singulier"]

Page 18: Cours 6 Paires attribut-valeur Structures de traits Unification

Exemple

[ sujet= [ accord=(pointeur) ]

verbe= [ catgram="verbe"

accord= [ (vide) ] ] ]

[ sujet= [ accord=(pointeur) ]

verbe= [ catgram="verbe"

accord= [ personne="1"

nombre="singulier" ] ] ]

Page 19: Cours 6 Paires attribut-valeur Structures de traits Unification

Subsomption et unification

S1 S2 est la structure de traits la plus générale S3 telle que

S1 S3 et S2 S3

S1 S2 contient toutes les informations de S1 et de S2

Page 20: Cours 6 Paires attribut-valeur Structures de traits Unification

Algorithme d'unification

Un algorithme d'unification entre S1 et S2 destructif (dans le cas général, il modifie S1 et S2)

Après l'unification, S1 et S2 contiennent chacun le résultat de l'unification

L'algorithme ajoute des pointeurs entre S1 et S2

Page 21: Cours 6 Paires attribut-valeur Structures de traits Unification

nombre contenu : "singulier"pointeur :

personne contenu : "1"pointeur :

nombre contenu : "singulier"pointeur :

données

contenu :pointeur :

contenu :pointeur :

contenu :pointeur :

personnecontenu : "1"pointeur :

personne

pointeur :

contenu :

résultat

pointeur :

contenu :

Page 22: Cours 6 Paires attribut-valeur Structures de traits Unification

Algorithme d'unificationunify(featureStructure f1, featureStructure f2) { /* renvoie soit une structure de traits soit "failure" */ f1Node = deref(f1) f2Node = deref(f2) if (f1Node is null) { f1.pointer = f2 ; return f2 ; } else if (f2Node is null) { f2.pointer = f1 ; return f1 ; } else if (f1Node == f2Node) { f1.pointer = f2 ; return f2 ; } else if (both f1Node and f2Node contain feature-value pairs) { for each feature2 in f2Node { feature1 = find or create in f1Node a feature corresponding to feature2 if (unify(feature2.value,feature1.value)=="failure") { return "failure" } } f2.pointer = f1 return f1 } else return "failure" }

Page 23: Cours 6 Paires attribut-valeur Structures de traits Unification

données

contenu :pointeur :

personnecontenu : "1"pointeur :

personne

pointeur :

contenu :

résultat

pointeur :

contenu :

contenu :pointeur :

personnecontenu : "1"pointeur :

personne

pointeur :

contenu :

pointeur :

contenu :

Page 24: Cours 6 Paires attribut-valeur Structures de traits Unification

données

contenu : "1"pointeur :

pointeur :

contenu :

résultat

contenu : "1"pointeur :

pointeur :

contenu :

Page 25: Cours 6 Paires attribut-valeur Structures de traits Unification

nombre contenu : "singulier"pointeur :

données

contenu :pointeur :

personnecontenu : "1"pointeur :

personne

pointeur :

contenu :

résultat

pointeur :

contenu :

nombre contenu : "singulier"pointeur :

contenu :pointeur :

personnecontenu : "1"pointeur :

personne

pointeur :

contenu :

pointeur :

contenu :

Page 26: Cours 6 Paires attribut-valeur Structures de traits Unification

nombre contenu : "singulier"pointeur :

données

contenu :pointeur :

personne

contenu : "1"pointeur :

personne

pointeur :

contenu :

résultat

pointeur :

contenu :

nombre contenu : "singulier"pointeur :

contenu :pointeur :

personnecontenu : "1"pointeur :

personne

pointeur :

contenu :

pointeur :

contenu :accord

pointeur :

contenu :

accord

pointeur :

contenu :

accord

pointeur :

contenu :

accord

pointeur :

contenu :

Page 27: Cours 6 Paires attribut-valeur Structures de traits Unification

Utilisation pratiqueviens

[ catgram="verbe"

lemme="venir"

temps="futur"

accord= [

personne="1"

nombre="singulier" ] ]

je[ catgram="pronom"

accord= [personne="1"nombre="singulier" ] ]

On peut représenter une contrainte d'accord par une équation :

token1.accord = token2.accord

Pour voir si l'équation est vérifiée, on unifie les deux structures de traits

Dans ce cas, succès

Page 28: Cours 6 Paires attribut-valeur Structures de traits Unification

Utilisation pratiqueviens

[ catgram="verbe"

lemme="venir"

temps="futur"

accord= [

personne="2"

nombre="singulier" ] ]

je[ catgram="pronom"

accord= [personne="1"nombre="singulier" ] ]

token1.accord = token2.accord

Dans ce cas, échec de l'unification

Si je est le sujet de viens, viens n'est pas à la 2e personne

viens,V:P1s viens,V:P2s on lève une ambiguïté