• Aucun résultat trouvé

Abduction : remonter à une hypothèse plausible

2.2. Langages d’expression des règles d’exploration contextuelle : de Ljava à Ltext

2.2.2. Langage Ljava

Le langage Ljava a représenté la première tentative pour exprimer plus formellement le langage d’expression des règles d’exploration contextuelle. Il est le fruit, sous ma direction, des travaux de S. Ben Hazez et de G. Crispino dans le cadre de leur thèse [CRI 99a, CRI 99c, BEN 02, CRI 02, MIN 01], à partir d’une première ébauche que j’avais proposé à partir des travaux réalisés dans le cadre du projet SERAPHIN [BER 95b].

Les règles d’exploration contextuelle y sont exprimées dans un langage formel de type déclaratif. Ce langage est centré sur la notion d’espace de recherche, c'est-à-dire un segment textuel déterminé à partir de l'indicateur, espace dans lequel les indices complémentaires doivent être recherchés. L'intérêt de cette notion, comme nous l’avons souligné précédemment, est qu'elle permet au linguiste de construire simplement un espace sans que celui-ci soit nécessairement formé de phrases contiguës dans le texte. Il faut souligner que les règles d'exploration contextuelle sont exprimées par le linguiste

au vu des observables que constituent les textes. Pour une même tâche, les règles doivent être indépendantes les unes des autres, contrainte qui n'a pas soulevé de difficultés jusqu'à présent.

Chaque règle comprend une partie (QWrWH, une partie 'pFODUDWLRQG¶XQ(VSDFHGH5HFKHUFKH(, une partie &RQGLWLRQ et une partie $FWLRQqui n’est exécutée que si la partie &RQGLWLRQest vérifiée :

• La partie (QWrWH permet d’indiquer le nom à la règle mais surtout d’assigner la classe de l’indicateur qui déclenchera cette règle. Cette classe est unique. Des commentaires peuvent être placés dans cet (QWrWHenvuede documenter la règle.

• La partie 'pFODUDWLRQG¶XQ(VSDFHGH5HFKHUFKH( permet de construire un segment textuel, le contexte de recherche, en appliquant différentes opérations sur la structure du texte construite par le moteur d’exploration contextuelle. Il est possible de construire plusieurs espaces de recherche dans une même déclaration, à l’aide des opérations suivantes :

ƒ 9RLVLQDJH S : spécifie un espace de recherche qui commence à partir du p-ième token précédant l’indicateur jusqu’au p-ième token suivant ce dernier.

ƒ 9RLVLQDJH S S : spécifie un espace de recherche qui commence à partir du p1-ème token précédant l’indicateur jusqu’au p2-ip1-ème token suivant ce dernier.

ƒ *DXFKH S  spécifie un espace de recherche qui commence à partir du p-ème token précédant l’indicateur jusqu’au token qui précède immédiatement ce dernier.

ƒ 'URLWH S  spécifie un espace de recherche qui commence à partir du token qui suit immédiatement l’indicateur jusqu’au p-ième token suivant ce dernier.

ƒ $QWpULHXUHV : spécifie un espace de recherche qui commence à partir du début de la phrase contenant l’indicateur jusqu’au token qui précède immédiatement ce dernier.

ƒ 6XLYDQWHV : spécifie un espace de recherche qui commence à partir du token qui suit immédiatement l’indicateur jusqu’à la fin de la phrase contenant ce dernier.

ƒ 3KUDVHSDUHQW : représente la phrase qui contient l’indicateur.

Dans le langage Ljava, le contexte de recherche est toujours exprimé par rapport à l’indicateur et sa portée est au maximum celui de la phrase dans laquelle cet indicateur est présent. En conséquence, des prédicats prédéfinis permettent d’exprimer des conditions sur les agencements entre les indices ainsi que sur la position des éléments structuraux du texte (titre, section, paragraphe, phrase). Ces prédicats sont utilisés dans la partie &RQGLWLRQde la règleEn vue d’offrir au concepteur de la règle une vue complète des éléments qui doivent être pris en compte dans la règle, les classes d’indices, qui vont être recherchées dans les contextes de l’indicateur, sont aussi déclarées dans cette partie de la règle.

• La partie &RQGLWLRQexplicite les conditions que doivent vérifier les indicateurs et les indices complémentaires. Le langage propose les prédicats suivants qui peuvent être précédés d’un opérateur de négation :

ƒ ,OBH[LVWHBXQBLQGLFH[DSSDUWHQDQWBj&WHOBTXH vérifie l’existence d’un indice [ de la classe & dans le contexte ( pré-déclaré (dans la partie 'pFODUDWLRQ). L’opérateur

28peut-être utilisé pour exprimer une disjonction entre les noms de classes.

ƒ 3UpFqGH [ \ S) ce prédicat permet d’exprimer une condition d’ordre entre les indices. Il indique que l’indice [ doit précédé l’indice \ de p tokens. Ces deux indices

[ et \ doivent nécessairement avoir été préalablement déclarés dans un prédicat du type,OBH[LVWHBXQBLQGLFH

ƒ 3RVLWLRQ V) ce prédicat permet d’exprimer une condition sur la position S d’un des éléments du modèle du texte (sections, paragraphes, phrases , titres) qui contient l’indicateur déclenchant la règle. L’expression V est une expression symbolique où la position S est comparée aux éléments structuraux du texte. Ceci permet d’exprimer une condition du type, « la phrase où apparaît l’indicateur appartient au premier paragraphe de la dernière section ».

ƒ La partie $FWLRQ indique le type d’actions réalisées par la règle. Actuellement, deux actions possibles sont : $WWULEXHU H à un segment textuel ou 'pFOHQFKHU 5 . L’action $WWULEXHU H 

attribue l’étiquette de nom Hà la phrase qui contient l’indicateur qui a déclenché cette règle. Le nom de l’étiquette n’est pas spécifié dans la règle, puisqu’il est déclaré dans le système de gestion des connaissances linguistiques. L’action 'pFOHQFKHU 5 déclenche l’exécution de la règle R.

Nous allons illustrer les possibilités offertes par ce langage sur différents exemples extraits des travaux de recherche des membres de l’équipe LaLIC.

La figure 9 présente un exemple de règle utilisée dans la tâche de résumé automatique [MIN 01]. La règle de nom 5WKHPDWLTXH est attribuée à la tâche 7KpPDWLTXH et est déclenchée si un indicateur appartenant à la classe YHUEHBSUHVHQWDWLI, qui regroupe des formes lexicales des verbes présentatifs, est présent dans le contexte (Ce contexte s’étend, sur dix tokens, de part et d’autre de l’indicateur. Deux classes d’indice SDUWLHBGRFXPHQW et SDUWLHBGRFXPHQW sont déclarées. Une première

FRQGLWLRQ exprime qu’une occurrence d’un indice de la classe SDUWLHBGRFXPHQWqui regroupe des locutions comme « dans les lignes, etc. », doit être présente dans le contexte spécifié. Une seconde

FRQGLWLRQ exprime qu’une occurrence d’un indice de la classe SDUWLHBGRFXPHQWqui regroupe des locutions comme « TXLVXLYHQWVXLYDQWHVFLSUqVHWF », doit aussi être présente dans ce contexte. Le prédicat 3UHFHGH précise une contrainte sur l’agencement entre ces deux indices. La partie $FWLRQ

indique qu’une étiquette, dans le cas présent « $QQRQFH 7KHPDWLTXH », est attribuée à la phrase en question.

1RPGHODUqJOHRthematique 7kFKHGpFOHQFKDQWH Thématique ;

&RPPHQWDLUH : capte une occurrence du type : 'DQVOHVOLJQHVTXLVXLYHQW«QRXV SUpVHQWRQV«

&ODVVHGHO¶,QGLFDWHXU : &verbe_presentatif ; E1 := Créer_espace(voisinage,10)

C1:= &partie_document3 C2:= &partie_document1

&RQGLWLRQ Il_existe_un_indice x appartenant_à E1 tel_que classe_de x appartient_a (C1) ;

&RQGLWLRQ Il_existe_un_indice y appartenant_à E1 tel_que classe_de y appartient_a (C2) ; Precede(x,y, 5) ;

$FWLRQV:

$WWULEXHU(Etiquette )

)LJXUHUn exemple de règle écrite dans le langage Ljava [MIN 01]

Un autre exemple de règle (cf. fig. 10), extrait de [LEP 00], illustre la possibilité de créer différents espaces de recherche pour différents indices, les espaces ( et ( et d’exprimer des conditions de précédences entre les différents indices. De plus, F. Le Priol a étendu les possibilités du langage Ljava en construisant des règles génériques de repérage d’arguments d’une relation sémantique (statique) identifiée.

1RPGHODUqJOHRapp01

7kFKHGpFOHQFKDQWH RelationStatique

&RPPHQWDLUH : capte une occurrence du type $UHSUpVHQWHOHVpOpPHQWVGH% &ODVVHGHO¶,QGLFDWHXU : &Verbeinclusion ; E1 := Créer_espace(Anterieures) E2 := Créer_espace(Suivantes) C1:= &app1 C2:=&LlingPrep2 C3:=&ingcl

&RQGLWLRQ Il_existe_un_indice x appartenant_à E1 tel_que classe_de x appartient_a (C1) ;

&RQGLWLRQ Il_existe_un_indice y appartenant_à E2 tel_que classe_de y appartient_a (C2) ;

&RQGLWLRQ Il_existe_un_indice z appartenant_à E2 tel_que classe_de y appartient_a (C3) ; Precede(x,y) ;

Precede(y,z) ;

$FWLRQV:

$WWULEXHU(Etiquette ) ;

5HFKHUFKHU$JXPHQW(C1, C2, x1 [

)LJXUHUn exemple de règle écrite dans le langage Ljava [LEP 00]

Ces deux exemples démontrent la puissance d’expression du langage Ljava qui a été utilisé pour modéliser différentes tâches d’exploration contextuelle. Il présente néanmoins un inconvénient en terme d’ingénierie linguistique. En effet, ce langage, pour être exploitable par le logiciel ContextO doit être traduit dans le langage de programmation Java. Une règle de Ljava devient ainsi une méthode d’une classe Java. Cette méthode est elle-même compilée par la machine virtuelle et intégrée dans le

code de la plate-forme ContextO. Un compilateur du langage Ljava a été réalisé dans le cadre du mémoire de Amar Khetar [KHE 00] rendant ainsi ce cycle de compilations successives totalement automatique. Néanmoins, comme tout processus de compilation il est sensible à des erreurs lexicales ou syntaxiques, ce qui rend son utilisation délicate pour un non spécialiste. Ce constat a amené S. Ben Hazez, dans le cadre de sa thèse [BEN 00, 02] à proposer le langage Ltext dont l’un des avantages, entre autre, est de supprimer ce cycle de transformation.