Title: Cours 6
1Cours 6
- Paires attribut-valeur
- Structures de traits
- Unification
2Paires attribut-valeur
- Étiquettes lexicales
- viendrai
- catgram"verbe"
- lemme"venir"
- temps"futur"
- personne"1"
- nombre"singulier"
je catgram"pronom" personne"1" nombre"singu
lier"
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
3Paires attribut-valeur avec variables
- Étiquettes lexicales
- viendrai
- catgram"verbe"
- lemme"venir"
- temps"futur"
- personnepersonneVerbe
- nombrenombreVerbe
je catgram"pronom" personnepersonnePronom no
mbrenombrePronom
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
4Paires attribut-valeur avec structures
- viendrai
- catgram"verbe"
- lemme"venir"
- temps"futur"
- accord
- personnepersonneVerbe
- nombrenombreVerbe
je catgram"pronom" accord personneperson
nePronom nombrenombrePronom
La valeur d'un attribut peut être un ensemble de
paires attribut-valeur (récursif) token1.accord
token2.accord
5Structures 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
6Exemple 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
7Exemple avec partie partagée
- viendrai
- 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.a
ccord token2.accord Pour chaque valeur
d'attribut, on aura un contenu (constante ou
structure ou vide) et un pointeur (éventuellement
nul)
8Structures de traits
- Représentation par un graphe acyclique
catgram
contenu "verbe" pointeur
lemme
contenu pointeur
contenu "venir" pointeur
temps
contenu "futur" pointeur
accord
personne
contenu "1" pointeur
contenu
pointeur
contenu pointeur
temps
contenu "singulier" pointeur
9Structures 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 pointeur - Le contenu peut être vide
- Le pointeur peut être nul
- Si le contenu n'est pas vide et le pointeur n'est
pas nul, c'est le pointeur qui représente la
valeur de l'attribut - Si S est une structure de traits, deref(S) est le
noeud du graphe acyclique trouvé dans le champ
pointeur ou dans le champ contenu - deref(feature-structure S)
- if (S.pointer is null)
- return S.content
- else return S.pointer
10Unification
- 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"
- --gt échec
- nombre"singulier" ? nombre(vide)
- nombre"singulier"
11Exemples
- Combinaison d'informations
- personne"1" ? nombre"singulier"
- personne"1"
- nombre"singulier"
- nombre"singulier" ? (vide)
- nombre"singulier"
12Exemple 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
13Exemple 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"
14Exemple 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"
15Exemple 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"
16Exemple 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"
- --gt échec
17Subsomption
- 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"
18Exemple
- sujet accord(pointeur)
- verbe catgram"verbe"
- accord (vide)
- ?
- sujet accord(pointeur)
- verbe catgram"verbe"
- accord personne"1"
- nombre"singulier"
19Subsomption 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
20Algorithme 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
21données
nombre
contenu "singulier" pointeur
contenu pointeur
personne
contenu "1" pointeur
contenu pointeur
résultat
nombre
contenu "singulier" pointeur
contenu pointeur
personne
contenu
pointeur
personne
contenu
contenu "1" pointeur
pointeur
22Algorithme d'unification
- unify(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)"f
ailure") - return "failure"
- f2.pointer f1
- return f1
- else return "failure"
23données
personne
contenu
contenu pointeur
pointeur
personne
contenu
contenu "1" pointeur
pointeur
résultat
personne
contenu
contenu pointeur
pointeur
personne
contenu
contenu "1" pointeur
pointeur
24données
contenu
pointeur
contenu "1" pointeur
résultat
contenu
pointeur
contenu "1" pointeur
25données
nombre
contenu "singulier" pointeur
contenu pointeur
personne
contenu
pointeur
personne
contenu
contenu "1" pointeur
pointeur
résultat
nombre
contenu "singulier" pointeur
contenu pointeur
personne
contenu
pointeur
personne
contenu
contenu "1" pointeur
pointeur
26données
nombre
contenu "singulier" pointeur
accord
contenu pointeur
personne
contenu
contenu
pointeur
pointeur
personne
accord
contenu
contenu "1" pointeur
contenu
pointeur
pointeur
nombre
contenu "singulier" pointeur
résultat
personne
accord
contenu pointeur
contenu
contenu
pointeur
pointeur
contenu "1" pointeur
contenu
accord
contenu
pointeur
personne
pointeur
27Utilisation pratique
- viens
- 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
28Utilisation pratique
- viens
- 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,VP1s vien
s,VP2s on lève une ambiguïté