next up previous contents
Next: Résolution des équations associées Up: Représentation de la structure Previous: Représentation de la structure

Construction des frames

Les frames sont construites pendant l'analyse de la phrase par les règles de productions (voir plus loin). Les frames initiaux sont ceux des entrées du lexique, puis par unifications successives, on construit le frame correspondant à la phrase de départ. L'action essentielle sur les frames est donc l'unification, c'est-à-dire la réunion ensembliste de deux frames, à condition que les attributs de même nom aient la même valeur, ou deux valeurs unifiables. L'unification est réalisée par l'opérateur <-/2. F <- G signifie que F est unifié avec G.

L'algorithme utilisé est le suivant :

Si G est vide, on lie F et G à l'aide de l'unification de Prolog.

F <- G :- var(G), !, F=G.

Si F est vide, il faut le créer. Il y a deux possibilités, soit G est un attribut, auquel cas on doit créer la liste, soit G est déjà un frame, il suffit alors d'unifier (au sens Prolog) F et G.

F <- G :- var(F), !, (G=(_=_) -> F=[G|_] ; F=G).

Sinon, on est dans le cas où F est déjà construit et G est une liste d'attributs. Il faut donc parcourir G et ajouter chaque attribut de G à F.

F <- [A=V|G] :- !, F <- A=V, (var(G) -> true ; F<-G).

Il faut maintenant traiter le cas où l'on ajoute un attribut dans F. Soit cet attribut est déjà présent, dans ce cas les valeurs associées à ces attributs doivent être unifiables, soit cet attribut est nouveau et sera ajouté dans F par la deuxième règle. On parcourt donc le frame F jusqu'à trouver l'attribut à ajouter ou arriver en fin de la liste.

[A=V1|_] <- A=V2 :- !, V1<-V2.

[_|F] <- A=V :- !, F<-A=V.

Dans tous les autres cas, il s'agit d'unifier des valeurs d'attributs qui ne sont pas des frames. A ce niveau, c'est l'unification de Prolog est utilisée.

F <- F.

Lors de l'unification, il faut tenir compte d'un cas particulier. En effet, dans le formalisme LFG, on prend en compte les liaisons longue distance. Ces liaisons sont mémorisées dans les frames sous forme d'une liste de frames. Dans ce cas, les frames ne doivent pas être unifiés mais concaténés (en supprimant les redondances). On rajoute donc après les trois premières règles les règles suivantes.

[far_up=FAR_UP|_] <- far_up=UP :- !, FAR_UP+=UP.

[far_down=FAR_DOWN|_] <- far_down=DOWN :- !, FAR_DOWN+=DOWN.

Dans ces règles, l'opérateur += effectue la concaténation.


next up previous contents
Next: Résolution des équations associées Up: Représentation de la structure Previous: Représentation de la structure
Christophe Delord
1998-09-02