• Aucun résultat trouvé

2.2 Description de Nessie

2.2.3 Arbres

lemma man, woman : noun;

Ce lexique devrait être assez aisé à lire compte tenu de ce qui précède. Remarquons qu’il ne définit aucune constante, mais nous aurons l’occasion de montrer des lexiques plus conséquents par la suite, notamment aux chapitres 3, 4 et 6.

2.2.3 Arbres

À la sous-section précédente, nous avons vu comment définir un lexique permettant d’asso-cier à chaque mot sa représentation sémantique. Dans cette section, nous allons présenter un langage permettant de spécifier comment combiner ces représentations sémantiques pour obte-nir celles de syntagmes plus complexes et, finalement, la représentation sémantique de phrases et de discours.

Comme nous voulons que la combinaison des représentations des mots soit guidée par la structure syntaxique de la phrase, nous supposons que l’étape d’analyse syntaxique peut rendre compte de cette structure et demandons qu’elle le fasse en utilisant un arbre. En première ap-proximation, disons que les feuilles de cet arbre correspondent essentiellement aux mots de la phrase et que les nœuds de l’arbre représentent les syntagmes plus complexes, leurs sous-arbres correspondant aux syntagmes plus simples à partir desquels les syntagmes plus complexes sont construits. Intuitivement, les arbres qui sont envisagés ici sont proches des arbres de dérivation qui apparaissent notamment lorsque l’on prouve qu’une certaine chaîne appartient au langage reconnu par une grammaire hors contexte. Il ne faut cependant pas prendre cette intuition trop au sérieux car, comme nous allons le voir, il n’est pas nécessaire, pour qu’un arbre puisse être utilisé parNessie, qu’il rende compte aussi fidèlement de la syntaxe du texte dont on cherche à construire le sens.

Par ailleurs, cette structure d’arbre ne suffit pas, à elle seule, à spécifier comment les représen-tations des sous-syntagmes d’un syntagme doivent être combinées pour obtenir la sémantique de ce dernier. Il convient donc, d’une façon ou d’une autre, de spécifier pour chaque nœud de l’arbre comment sa représentation sémantique peut être obtenue à partir de celles de ses fils. Le langage que nous utilisons pour indiquer les règles de combinaison à utiliser dans les nœuds n’est autre que leλ-calcul simplement typé lui-même. Plus précisément, nous allons demander que chaque nœud de l’arbre fourni en entrée àNessiecontienne unλ-terme qui est à même de construire la représentation sémantique du nœud complet lorsqu’il reçoit comme arguments les représen-tations des sous-arbres de ce nœud. C’est pour cette raison que l’implantation des arbres, tout comme celle des lexiques, dépend d’une implantation des termes. Fidèles à la démarche que nous avions adoptée pour les lexiques, nous allons donc donner à la fois une spécification abs-traite des arbres et un foncteur construisant une implantation de cette spécification à partir d’une implantation des termes. Cependant, contrairement aux lexiques, les arbres sont implantés de sorte que la spécification exporte le type des arbres, ce qui ne permet pas plusieurs implantations

de ce type. Il nous a en effet semblé préférable que la définition du type des arbres soit visible de l’extérieur, plutôt que cachée. Voici donc la spécification des arbres ainsi que le foncteur l’implantant à partir d’un module sur les termes :

module type TREE = sig type term

type t =

| Leaf of entry

| Unary of string * t | Binary of string * t * t

| Nary of string * term * t list end

module Make (Term : TERM) : TREE = struct type term = Term.t

type t =

| Leaf of entry

| Unary of string * t | Binary of string * t * t

| Nary of string * term * t list end

Les extraits de code que nous venons de montrer appellent plusieurs explications. En premier lieu, rappelons que le type entryest celui qui a été défini à la sous-section précédente et qui regroupe un nom de lemme et un nom de famille. Dans le code réel deNessie, ce type n’est pas défini dans le module de lexiques, mais dans un module distinct. C’est pour cette raison que l’implantation des arbres ne dépend pas de celle des lexiques. En second lieu, remarquons que tous les constructeurs utilisés dans le code ci-dessus hormis ceux pour les feuilles prennent comme premier argument une chaîne de caractère. Cette chaîne de caractère n’est pas utilisée pour la construction de représentations sémantiques. Elle n’a qu’un but informatif et l’utilisateur est libre de s’en servir comme il l’entend. Pour notre part, nous utilisons ce champ principale-ment pour y stocker le nom de la catégorie syntaxique du nœud, comme on pourra le voir dans les exemples qui vont suivre.

Enfin, nous avions annoncé des arbres dont chaque nœud devrait contenir un terme indi-quant comment combiner les représentations sémantiques des sous-arbres pour construire celle de l’arbre tout entier. Pourtant, dans le code ci-dessus, les constructeurs UnaryetBinaryne prennent pas de termes en arguments. Ceci est lié au fait que nous avons choisi de permettre la construction d’arbres où les règles de construction des représentations sémantiques sont im-plicites. C’est le cas pour les arbres unaires et binaires qui apparaissent ci-dessus. Ainsi, la représentation d’un arbre unaire est celle de son seul sous-arbre. Ceci pourrait être exprimé à l’aide d’un arbren-aire à un seul fils et contenant unλ-terme décrivant la fonction identité. De la même façon, la règle de construction de représentations sémantiques implicitement associée aux arbres binaires applique la représentation du sous-arbre gauche à celle du sous-arbre droit. Ceci est équivalent à un arbren-aire contenant deux sous-arbres et dont le terme est une fonction à deux arguments qui applique son premier argument à son second argument.

On le voit, les arbres unaires et binaires n’augmentent en rien l’expressivité du langage d’arbres, puisque tout ce qu’ils expriment pourrait être exprimé en termes d’arbresn-aires. Nous

les utilisons cependant, d’abord pour une raison historique – ces arbres étaient les seuls arbres utilisés par les premières versions de Nessie–, ensuite parce que, dans la pratique, ils suf-fisent bien souvent, dans la mesure où il est fréquent qu’un syntagme soit construit à partir d’un ou de deux sous-syntagmes, sa représentation sémantique pouvant quant à elle être construite simplement par application d’une représentation sémantique à une autre, l’ordre des syntagmes dans le texte n’indiquant pas nécessairement quelle représentation utiliser en tant que foncteur et laquelle passer en argument. Ceci signifie que l’arbre utilisé pour calculer la représentation sémantique d’un texte ne reflète pas nécessairement de façon précise sa structure syntaxique. En particulier, il n’est pas nécessaire que l’ordre des nœuds reflète l’ordre des syntagmes qu’ils représentent. Toute liberté est donc laissée à l’étape d’analyse syntaxique quant à l’arbre qu’elle produit.

Ceci constitue une première nuance à apporter à ce qui a été affirmé au début de cette section, à savoir que l’arbre donné en entrée àNessieest un arbre syntaxique du texte d’entrée. Une deuxième nuance à apporter concerne les feuilles de cet arbre. Au début de cette sous-section, nous avions affirmé que, en première approximation, on pouvait considérer que chaque feuille de l’arbre correspond à un mot. Ceci n’est qu’une approximation, dans le sens où rien n’empêche d’introduire dans l’arbre des feuilles qui ne correspondent à aucun mot. Par exemple, nous avons mentionné à la section précédente le fait que la sémantique des verbes conjugués peut être ob-tenue en appliquant une fonction conjuguant le verbe à une représentation sémantique du verbe à l’infinitif. Ceci peut être modélisé en définissant un ensemble de fonctions prenant en entrée une représentation sémantique à l’infinitif et renvoyant une représentation conjuguée. L’arbre construit pour un verbe conjugué peut alors être non une feuille, mais plutôt un arbre binaire dont la première feuille contient la fonction de conjugaison et dont la deuxième feuille contient le verbe à l’infinitif. Un exemple de tels arbres sera présenté en détail au chapitre 4.

Pour en revenir à l’expressivité du langage d’arbres, nous avons fait remarquer précédem-ment que les arbres unaires et binaires pouvaient être exprimés à l’aide d’arbresn-aires et que, par conséquent, ils n’ajoutaient rien à l’expressivité du langage. Autrement dit, nous sommes en train d’affirmer que les arbresn-aires sont plus expressifs que les arbres unaires et binaires, résultat qui n’est pas très surprenant. On est alors naturellement conduit à se demander si les arbresn-aires sontstrictementplus expressifs que les arbres unaires et binaires, ce qui revient à se demander s’il est possible de simuler des arbresn-aires à l’aide d’arbres unaires et binaires. Comme nous le verrons au chapitre 7, sous certaines conditions on peut répondre par l’affir-mative à cette question et montrer que les arbresn-aires peuvent être simulés à l’aide d’arbres binaires. Le fait de disposer de plusieurs types d’arbres n’est donc pas motivé par la recherche d’expressivité du langage, mais plutôt par le souci d’offrir un langage aussi commode et facile d’utilisation que possible en pratique.

Un autre questionnement en relation avec l’expressivité du langage d’arbres concerne lesλ -termes autorisés à apparaître dans les nœuds des arbres n-aires. Jusqu’à présent, nous avons été assez flous à ce sujet, laissant entendre que n’importe quel terme pouvait apparaître dans un nœudn-aire. La preuve d’équivalence entreNessieet une grammaire catégorielle abstraite d’ordre2, que nous donnerons au chapitre 7 nous a cependant amenés à nuancer quelque peu ce point de vue. En effet, comme nous le verrons au chapitre 7, si n’importe quel terme peut apparaître dans un nœud n-aire, alors cela signifie que la construction sémantique peut faire appel à des règles n’apparaissant pas dans le lexique, ce qui conduit à perdre l’équivalence

avec une grammaire catégorielle abstraite d’ordre2. En revanche, si les seuls termes autorisés à apparaître dans les nœudsn-aires sont des constantes déclarées ou définies dans le lexique, alors Nessieest bien équivalent à une grammaire catégorielle abstraite d’ordre2.

Nous avons néanmoins fait le choix de continuer à accepter – nous sommes tentés d’écrire « de tolérer »– des termes arbitraires dans les nœudsn-aires, principalement pour des raisons de compatibilité ascendante. Il convient cependant de remarquer que, même en pratique, l’utilisa-tion de termes arbitraires dans les nœudsn-aires n’est pas recommandée. En effet, comme nous le verrons au chapitre 6, une telle pratique conduit à produire des arbres qui ne pourront être utilisés qu’avec certains lexiques, alors que si l’on se limite à des constantes, il devient possible d’utiliser un même arbre avec des lexiques différents, chacun d’eux ayant alors toute liberté pour associer à ces constantes la sémantique appropriée.

Pour clore cette sous-section consacrée aux arbres, il nous reste à dire un mot de leur syntaxe concrète. Comme Nessie a été principalement utilisé en conjonction avec des DCGs, nous avons fait le choix de représenter les arbres par des termesPrologqui peuvent être construits facilement par les DCGs lors de l’analyse syntaxique des textes dont on cherche la représentation sémantique. Ainsi, une feuille étiquetée par un lemmelet une famillefsera représentée par le termeProlog leaf(l,f). Par exemple, une feuille représentant le nom propreJohn pourrait s’écrire leaf(john,pn), tandis qu’une feuille représentant le verbe intransitif walk pourrait s’écrireleaf(walk,iv). De la même façon :

unary(c,t)représente un arbre unaire de catégorie syntaxique cayant comme unique sous-arbret;

binary(c,t1,t2)représente un arbre binaire de catégorie syntaxiquecayant pour sous-arbre gauchet1et pour sous-arbre droitt2;

nary(c,m,t1,...,tn)représente un arbren-aire de catégorie syntaxiquecdont la re-présentation sémantique est construite en appliquantmaux représentations sémantiques des

nsous-arbrest1,...,tn.

Ainsi, si l’on souhaite calculer à l’aide deNessiele sens de la phrase « A man walks. », on peut le faire à l’aide de l’arbre suivant :

binary(s,

binary(np,leaf(indef,det),leaf(man,noun)), unary(vp,leaf(walk,iv))

)

Cet arbre met bien en évidence la structure syntaxique de la phrase, constituée d’un groupe nominal suivi d’un groupe verbal. Le groupe nominal consiste en un déterminant indéfini suivi d’un substantif, tandis que le groupe verbal consiste en un verbe intransitif. Remarquons que cet arbre ne contient pas d’arbresn-aires. Des exemples utilisant de tels arbres seront donnés au chapitre 3.