Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France laporte/ Syntaxe et...
-
Upload
benezet-poirier -
Category
Documents
-
view
111 -
download
0
Transcript of Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France laporte/ Syntaxe et...
Eric LaporteInstitut Gaspard-Monge
Université de Marne-la-ValléeFrance
http://www-igm.univ-mlv.fr/~laporte/
Syntaxe et analyse syntaxique
ObjectifsConstituants syntaxiquesAmbiguïtéChunksGrammaires algébriquesRéseaux de transitions récursifsApplication glissanteTransducteursLinéarisationAccord grammaticalUnification
Syntaxe et analyse syntaxique
Objectifs de la syntaxe
Traduction The guy of room 5 misses the girl of room 3
La fille de la chambre 3 manque au type de la chambre 5Délimiter pour déplacer
Mots ambigus[1939 :] [l'Allemagne] [annexe] [la Pologne][Veuillez me faire parvenir] [l'annexe technique] [du contrat]Délimiter pour lever l'ambiguïté
Syntaxe
Je vais fermer l'autre porte* autre fermer je l'porte vaisComment les mots se combinent-ils en phrases
qui ont un sens ?Dans quel ordre ?Quelles combinaisons sont possibles ?
Constituants syntaxiques
Certaines suites de mots dans une phrase forment des constituants
Exemple 1 : groupes nominauxvingt autres journauxl'Indel'offreune seconde section d'équilibristesl'un des meilleurs bâtiments à voile de la compagnie
Exemple de propriété commune à ces groupesPeuvent être suivis d'un verbe dans une phrase
Constituants syntaxiques
vingt autres journaux titrent...l'Inde est...l'offre parvient à...une seconde section d'équilibristes arrival'un des meilleurs bâtiments à voile de la compagnie peut...
ce n'est pas vrai de n'importe quelle séquence de mots* journaux titrent...* l'parvient à...* seconde d'équilibristes arrivaOn doit donc pouvoir spécifier "un groupe nominal peut être
suivi d'un verbe"
Constituants syntaxiques
Exemple 2 : groupes nominaux prépositionnelsdepuis quelques mois
Déplacement de ce groupeDepuis quelques mois la situation évolueLa situation depuis quelques mois évolueLa situation évolue depuis quelques mois
ce n'est pas vrai de n'importe quelle séquence de mots
* Depuis mois la situation quelques évolue* La depuis situation quelques mois évolue* La situation mois évolue depuis quelques
Arbres de constituantsGN
Det
N
GAdj
AdjGAdv
Adv
un bâtiment à voile assez réputé
Arbres de constituantsP
GN
préfère
GN
NDet
cetteLuc compagnie
Notation parenthésée(P (GN Luc) préfère (GN (Det cette) (N compagnie)))(P (GN (Det Quels) (N vols)) proposent (GN (Det un) (N dîner)) ?)
Arbres et interprétations
Les arbres permettent de représenter des ambiguïtés
<confiture>de la confiture <ingredient>à la rhubarbe congelée</ingredient></confiture>
<confiture>de la confiture <ingredient>à la rhubarbe</ingredient> congelée</confiture>
Ambiguïté syntaxiqueA chaque arbre correspond une interprétation
Ambiguïtés syntaxiquesLuc recouvre la table de bois
Le MEDEF demande depuis longtemps la suppression de cet impôt, qui pousserait les entrepreneurs à quitter la France Moules et frites à volonté : 15 €
Un lecteur anonyme a trouvé cette solution astucieuse
Beaucoup d'ambiguïtés sont à la fois lexicales et syntaxiques
On a placé la table ronde sur les revêtements naturels à 10 h lexicales : placé, table rondesyntaxiques : statut des compléments prépositionnels
Ambiguïtés syntaxiques et reformulation
Luc recouvre la table de boisLuc recouvre la table avec du boisLuc recouvre la table qui est en bois
Le MEDEF demande depuis longtemps la suppression de cet impôt, qui pousserait les entrepreneurs à quitter la France
Le MEDEF... cet impôt. Cet impôt pousserait lesentrepreneurs à quitter la FranceLe MEDEF... cet impôt. La suppression de cet
impôtpousserait les entrepreneurs à quitter la
France Moules et frites à volonté : 15 €
Un lecteur anonyme a trouvé cette solution astucieuse
On a placé la table ronde sur les revêtements naturels à 10 h
Ambiguïté
les vols de (la soirée de lundi) pour Toulouseles réponses de Luc à (plusieurs questions de Marie)
GN
Det N
les vols de
Prép
pour
Prép
Det N GN
GN
lundi Toulousela
Npr
soirée de
Prép
GN
Ambiguïté
les vols de (la soirée de lundi) pour Toulouseles réponses de Luc à (plusieurs questions de Marie)
GN
Det N
les réponses de
Prép
à
Prép
Det N GN
GN
Marie
Luc plusieurs
Npr
questions de
Prép
GN
Npr
Ambiguïtéle livre de (la fille sur la photo) dans le sacle livre de la fille sur (la photo dans le sac)le livre de (la fille) sur (la photo) dans (le sac)
GN
Det N
le livre de
Prép
sur
Prép
Det N GN
GN
la photo dans
Prép
GN
Det N
la fille Det N
le sac
Constituants non récursifsou chunks
Constituants qui ne contiennent pas un constituant de la même catégorie
Exemple (GN l'un des meilleurs bâtiments à voile de (GN la compagnie))
Un GN inclus dans un autreLe petit est un chunk, le grand non
(GN (GN l'un des meilleurs bâtiments à voile) de (GN la compagnie))
Une suite de deux chunksSi le GN est précédé d'une préposition, on l'inclut
dans le chunk
Constituants non récursifs ou chunks
[Parmi ces passagers] [du Mongolia], [on comptait] [divers fonctionnaires civils] et [des officiers] [de tout grade]
Une phrase est presque une séquence de chunks, surtout nominaux
[on comptait] chunk verbal
[M. Fogg] [quitta] [l'hôtel], [seul], [après avoir] [recommandé] [à son domestique] [de l'attendre]
[seul] chunk adjectival
[Oui] ! [oui] ! [répétait] [machinalement] [le pauvre garçon]
[machinalement] chunk adverbial
Grammaires algébriques
Context-free grammarsOutil de manipulation des constituants syntaxiquesRègles indiquent la combinaison et l'ordre des
élémentsGN --> Det N GAdjGN --> NprGAdj --> GAdv AdjGAdv --> GAdv AdvGAdv --> Adv
Lexique Liste des mots (symboles terminaux)Liste des symboles non terminaux GN GAdj
GAdv Det...
Grammaires algébriques
Les règles peuvent comporter des mots dans le membre droitNpr --> LucDet --> unN --> bâtiment à voileAdj --> réputéAdv --> assezGN --> Det offre de GN
Membre gauche : obligatoirement un non-terminalMembre droit : séquence de symboles terminaux ou
non terminaux
Dérivation
Réécriture utilisant les règlesGN --> Det N GAdj (règle)--> Det N GAdv Adj (règle GAdj --> GAdv Adj )--> Det N Adv Adj (règle GAdv --> Adv )--> un N Adv Adj (règle Det --> un )--> un bâtiment à voile Adv Adj (règle N --> bâtiment à voile )--> un bâtiment à voile assez Adj (règle Adv --> assez )--> un bâtiment à voile assez réputé (règle Adj--> réputé )
On peut dériver un bâtiment à voile assez réputé de GN
Axiome
Le langage formel engendré par la grammaire est l'ensemble des séquences de terminaux dérivables à partir de l'axiome
Axiomeun des non-terminauxSi la grammaire engendre des phrases, l'axiome
correspond au symbole "phrase"Phrase grammaticalephrase engendrée par la grammaireAnalyse syntaxiqueassocier à une phrase son (ou ses) arbres de dérivation
Règles pour les phrases
P --> GN préfère GN Luc préfère cette compagnieP --> GN quitte GN Prép GN
Luc quitte Paris vers 10 hP --> GN part Prép GN
Luc part après la réunionP
GN
préfère
GN
NDet
cetteLuc compagnie
Règles pour les phrases
P --> montrez-PRO GN Montrez-moi tous les volsP --> est-ce que il y a GN Prép GN ?
Est-ce qu'il y a un dîner sur le vol 312 ?P --> GN proposent GN ?
Quels vols proposent un dîner ?Notation parenthésée(P (GN (Det Quels) (N vols)) proposent (GN (Det un) (N
dîner)) ?)
Règles pour les groupes nominaux
GN --> Det N un arrêtGN --> Det Adj N une petite attenteGN --> Det GAdj N la plus longue attenteGN --> Det N GAdj un coût trop élevéGN --> Det de N beaucoup d'attenteGN --> Det N Prép GN les vols pour ToulouseGN --> Det N Rel
les vols qui arrivent à Toulouse avant midiGN --> Det N Prép GN Prép GN
les vols de la soirée pour Toulouse
Règles pour la coordination
GN --> GN Conj GN un arrêt et une attenteP --> P Conj P On s'arrête et on attendGAdj --> GAdj Conj GAdj tentant mais dangereux
etc.
GN --> Det N Prép GN les vols pour ToulouseGN --> Det N Prép GN Conj Prép GN
les vols pour Toulouse ou depuis Toulouse
Context-free grammars
Définition(X, V, A0, P) :X alphabet terminal,V alphabet des variables (V ∩ X = ø),A0 V axiome,P ensemble fini des règles V × (V | X)*.
Grammaires algébriques
Règles :
entrepr0 salariés des taille0 entreprises entrepr0 patrons des taille0 entreprisesentrepr0 salariés des entreprises entrepr0 patrons des entreprisestaille0 petites taille0 moyennes taille0 grandes
Grammaires algébriques
Dérivations
Définitionf g pour f, g (V | X)* ssi on a les factorisations
f = uAv et g = uhvavec une règle A h P.Exemple : des taille0 entreprises des grandes entreprises
Langage engendré par la grammairec’est l’ensemble des f X* tels que A0 … f. Exemple :entrepr0 salariés des taille0 entreprises
salariés des petites entreprises X*donc
salariés des petites entreprisesest engendré par la grammaire
Recursive transition network (RTN)
Comme les graphes, mais un noeud peut appeler un autre graphe (sous-graphe)
Pour appeler un sous-grapheécrire ":" et le nom du sous-graphe
Par rapport à un graphe simple : on peut représenter plus de formes
Les appels à des sous-graphes peuvent faire des cycles
Réseaux de transitions récursifs (RTN)
Réseaux de transitions récursifsentrepr.grf
taille.grf
Etat initial : entrepr0
Transition étiquetée par un état :de entrepr3 vers entrepr4 étiquetée par taille0
DéfinitionUn automate fini (X | Q, Q, q-, F, δ) :X alphabet terminal,Q ensemble des états (Q ∩ X = ø),q- état initial Q,F Q ensemble des états finaux,δ ensemble fini des transitions Q × (X | Q | ε) × Q.
L'alphabet est constitué de deux parties disjointes, l'alphabet terminal et l'ensemble des états.
Réseaux de transitions récursifs
Les RTN au format FST2 ou FST-XML
Un fichier FST2 peut contenir plusieurs graphes
Le RTN est l'union de ces graphes (les états de chaque graphe sont numérotés à partir de 0, mais c'est une union disjointe)
Alphabet terminal X : les étiquettes qui ne sont pas des appels à des sous-graphes
Etat initial q- : l'état initial du premier graphe (graphe principal)
Transitions étiquetées par des états : les appels à des sous-graphes (l'état est l'état initial du sous-graphe appelé)
Dérivations
Définitionf g pour f, g (Q | X)* ssi on a les factorisations
f = uqv et g = uhvavec un chemin étiqueté h allant de q à un état final.Exemple : il existe un chemin étiqueté petites et moyennes allant de taille0 à taille1, donc
taille0 petites et moyenneset
des taille0 entreprises des petites et moyennes entreprises
Langage engendré par le réseauc’est l’ensemble des f X* tels que q- … f. Exemple :entrepr0 salariés des taille0 entreprises salariés des petites et moyennes entreprises X*donc salariés des petites et moyennes entreprises est engendré par le réseau
Ces deux formalismes engendrent les mêmes langages formels
Pour une grammaire (X, V, A0, P):
A chaque règle A h on fait correspondre un automate avec un unique état initial A qui n’a aucune transition entrante. (Deux quelconques de ces automates ne peuvent avoir en commun que leur état initial. Si une transition va d’un état d’un de ces automates à un état d’un autre alors elle sort de l’état initial commun aux deux automates.)On obtient un réseau (X | Q, Q, A0, F, δ) en regroupant dans F les états finaux de ces automates et dans δ leurs transitions.
Une dérivation A h est valable dans la grammaire ssi elle est valable dans le réseau.
Equivalence entre RTN et grammaires
Pour un réseau (X | Q, Q, q-, F, δ) :
• A chaque état q on fait correspondre l’automate obtenu en prenant q comme unique état initial, puis une grammaire (X | Q, Vq, Aq, Pq) engendrant le même langage sur X | Q que cet automate. Les ensembles de variables Vq sont disjoints de Q et deux à deux disjoints.
• On crée une grammaire (X, V | Q, q-, P1 | P2) où V est l’union des Vq, P1 l’union des Pq, et P2 l’ensemble des règles q Aq.
Le langage engendré par la grammaire est égal à celui engendré par le réseau
Si une dérivation (élémentaire) q f pour un état q Q est valable dans le réseau, alors elle est valable (en plusieurs étapes) dans la grammaire
Inversement, à toute dérivation q- f de la grammaire avec f X* on peut faire correspondre une dérivation équivalente (même arbre syntaxique) constituée d’étapes de la forme q Aq g avec g (Q | X)*, qui utilisent uniquement des règles de Pq, or chacune de ces étapes correspond à une étape q g dans le réseau.
Ces deux formalismes engendrent les mêmes langages formels
Avantages des grammairesplus simple pour les démonstrations mathématiques
Avantages des RTNplus de réutilisationplus lisible pour l'auteur des ressourcesconstruction et maintenance manuelle plus faciles
Equivalence entre RTN et grammaires
Objectif
Grammaires ou RTN pour des séquences dont on connaît les limites (phrases)Il faut représenter tout ce qui peut figurer dedans, ou au moins connaître tout l'alphabet
Grammaires ou RTN pour des séquences dont on ne connaît pas les limites (groupes nominaux)Applicables de n'importe où jusqu'à n'importe où
Application glissante
Application glissante dans UnitexC'est le seul mode d'application des graphesOn lance l'analyse syntaxique à chaque point du texte, ou à chaque état de l'automate acycliqueL'analyse peut se terminer n'importe où aussi
RésultatsLes séquences reconnues peuvent se suivre, se chevaucher ou être incluses les unes dans les autres
[Les participants] [sont sortis] [de la salle][Les fichiers {annexes] au contrat} sont attachés au message[Les fichiers] {[annexes] au contrat} sont attachés au message
Application glissante
Réduction des ambiguïtés d'inclusion avec UnitexOption "Longest matches" (par défaut) : toute séquence reconnue incluse dans une autre est éliminée des résultats[Les fichiers] {annexes au contrat} sont attachés au message
Option "Shortest matches" : toute séquence reconnue en contenant une autre est éliminée des résultats[Les fichiers] [annexes] au contrat sont attachés au message
Option "All matches" : toutes les séquences reconnues sont conservées dans les résultats[Les fichiers] {[annexes] au contrat} sont attachés au message
Application glissante
Exemple 1 : les expressions qui marquent les dialogues (dit-il...)
Insérer des balises <dialogue> et </dialogue> avant et après une forme reconnue
Même si le contexte est nécessaire pour reconnaître les formes, on peut ne pas l'inclure dans la zone marquée
Exemple 2 : les chunks
Marquage des séquences reconnues
Un automate fini contient des séquences qui peuvent être reconnues dans un texte existant Un transducteur fini est utilisé pour engendrer une nouvelle version du texte : il contient des séquences qui seront reconnues (séquences d’entrée) et d’autres qui seront insérées (séquences de sortie)
Transducteurs
Avec Unitex
Les séquences de sortie sont affichées au-dessous des noeuds Pour créer un transducteur, insérer une barre (/) entre la séquence d’entrée et la séquence de sortie correspondantePour appliquer le transducteur : - dans Locate, indiquer si les séquences de sortie doivent être insérées à gauche des séquences d’entrée correspondantes (mode Merge), ou si elles doivent les remplacer (mode Replace) - dans Display, indiquer le nom du fichier de sortie, sans extension
Transducteurs
Dans un transducteur Unitex, un noeud sans barre (/) est interprété comme un noeud avec une sortie vide (/<E>)
Si le transducteur est appliqué en mode Replace, les parties reconnues par des noeuds sans sortie ne sont pas copiées dans le fichier de sortie
Exemple : pour supprimer le balisage, reconnaître les balises et appliquer le transducteur en mode Replace
Effacer avec un transducteur
Comme un RTN mais les noeuds peuvent avoir des sorties
sauf ceux qui appellent un sous-graphe (les sorties sont spécifiées dans le sous-graphe)
RTN à sorties
Application glissante d'un transducteur ou d'un RTN à sorties
Deux sources d'ambiguïté
L'application glissanteComme l'application d'un graphe ou d'un RTN : les séquences reconnues peuvent se suivre, se chevaucher ou être incluses les unes dans les autres
L'ambiguïté des transducteursUne séquence donnée peut être reconnue par plusieurs chemins du même transducteur, mais avec des sorties différentes
Le résultat est une structure complexe
Ambiguïté
ObjectifObtenir un résultat simpleChoisir entre les sorties incompatibles produites par le transducteur ou le RTN à sorties
Linéarisation
1. Supprimer certaines séquences reconnues en fonction des options "Longest matches" ou "Shortest matches"
2. En cas de chevauchement entre séquences restantes, la séquence qui se termine en premier a la priorité
[Les fichiers {annexes] [au contrat} de travail][Les fichiers annexes] [au contrat de travail]
3. Il peut rester des incompatibilités entre séquences qui se terminent au même point. Unitex en choisit une, mais le choix n'est pas spécifié. Exemple : une même séquence reconnue par deux chemins différents
[XN La [N table ronde]] sur les revêtements naturels
[XN La [N table] [XA ronde]] sur les revêtements naturels
Linéarisation d'Unitex
Accord grammatical
P --> GN attend Le public attendLe GN est obligatoirement au singulier :
* Les spectateurs attend
P --> GN attendent Les spectateurs attendent
Le GN est obligatoirement au pluriel :* Le public attendent
On considère les traits du GN et de attendre comme des paramètres de la règle
On ajoute des équations aux règles
Accord grammatical
P --> GN <attendre> {GN.nombre =
<attendre>.nombre ; GN.personne =
<attendre>.personne ; }Le public attendLes spectateurs attendentVous attendez
Les équations peuvent être vérifiées par unification
Paires attribut-valeurÉtiquettes lexicalesviendrai[ 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
Paires attribut-valeur avec variables
Étiquettes lexicalesviendrai[ catgram="verbe"
lemme="venir"temps="futur"personne=personneVerbenombre=nombreVerbe ]
je[ catgram="pronom"
personne=personnePronom
nombre=nombrePronom ]Les valeurs d'un attribut peuvent être des
constantes ou des variablesÉquations exprimant les contraintes d'accord :
token1.personneVerbe = token2.personnePronomtoken1.nombreVerbe = token2.nombrePronom
Paires attribut-valeur avec structures
viendrai[ catgram="verbe"
lemme="venir"temps="futur"accord= [
personne=personneVerbe
nombre=nombreVerbe ] ]
je[ catgram="pronom"
accord= [
personne=personnePronom
nombre=nombrePronom ] ]
La valeur d'un attribut peut être un ensemble de paires attribut-valeur (récursif)
token1.accord = token2.accord
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 traitsLes pointeurs permettent à deux structures de traits
d'avoir une partie commune
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
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'équationtoken1.accord = token2.accord
Pour chaque valeur d'attribut, on aura un contenu (constante ou structure ou vide) et un pointeur (éventuellement nul)
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 :
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 pointeur
Le 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 contenu
deref(feature-structure S)if (S.pointer is null)
return S.contentelse return * S.pointer
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"]
Exemples
Combinaison d'informations[ personne="1"] [ nombre="singulier"]
= [ personne="1"nombre="singulier"]
[ nombre="singulier"] [ (vide) ]= [ nombre="singulier"]
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
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" ] ] ]
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" ] ] ]
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" ] ] ]
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
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"]
Exemple
[ sujet= [ accord=(pointeur) ] verbe= [ catgram="verbe"
accord= [ (vide) ] ] ] [ sujet= [ accord=(pointeur) ] verbe= [ catgram="verbe"
accord= [ personne="1"
nombre="singulier" ] ] ]
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
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
nombre contenu : "singulier"pointeur :
personnecontenu : "1"pointeur :
nombre contenu : "singulier"pointeur :
données
contenu :pointeur :
contenu :pointeur :
contenu :pointeur :
personnecontenu : "1"pointeur :
personne
pointeur :contenu :
résultat
pointeur :contenu :
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" }
données
contenu :pointeur :
personnecontenu : "1"pointeur :
personne
pointeur :contenu :
résultat
pointeur :contenu :
contenu :pointeur :
personnecontenu : "1"pointeur :
personnepointeur :contenu :
pointeur :contenu :
données
contenu : "1"pointeur :
pointeur :contenu :
résultat
contenu : "1"pointeur :
pointeur :contenu :
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 :
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 :
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
Utilisation pratiqueviens[ catgram="verbe"
lemme="venir"temps="futur"accord= [personne="2"nombre="singulier" ] ]
je[ catgram="pronom"
accord= [personne="1"
nombre="singulier" ] ]
token1.accord = token2.accordDans ce cas, échec de l'unificationSi je est le sujet de viens, viens n'est pas à la 2e
personneviens,V:P1s viens,V:P2s on lève une ambiguïté