GASPAR, UN DISPOSITIF EXPERIMENTAL POUR LE TRAITEMENT AUTOMATIQUE DU LANGAGE NATUREL AVEC LA PROGRAMMATION A PROTOTYPES
REPRESENTATION ET CLASSIFICATION EVOLUTIVES DES CONNAISSANCES POUR LE LANGAGE NATUREL
Serge Fleury
ELI (Equipe Linguistique et Informatique)
Ecole Normale Supérieure de Fontenay-St Cloud
31 avenue Lombart
F-92260 Fontenay aux Roses
e-mail : fleury@ens-fcl.fr
http://www.ens-fcl.fr/~fleury/
Approche d'un méta-protocole
GASPAR permet de guider la mise au point de nouveaux résultats : l'utilisateur peut, à chaque étape, examiner les résultats déjà établis pour ensuite soit sélectionner parmi les outils disponibles ceux qui permettent d'améliorer la qualité des résultats, soit agir directement sur les objets construits pour les modifier ou pour les remodeler. La mise en place de regards croisés sur les savoirs représentés dépend directement du méta-regard de l'utilisateur sur les résultats qu'il génère en activant les outils définis : le méta-regard de l'utilisateur et ses interventions guident le travail d'affinement des résultats construits et leur interprétation.
Un environnement de programmation pour l'expérimentation
L'environnement mis en place avec Self facilite les manipulations concrètes et directes sur les entités représentées. Un utilisateur peut "communiquer" avec les agents du programme directement pour les modifier éventuellement sans avoir à connaitre précisément les mécanismes qui permettent ces modifications. Un programme Self est constitué d'entités "vivantes" et non d'entités inertes et immuables. Pour changer un objet, il est inutile de recompiler, il suffit de modifier l'objet suivant les besoins. Notre approche expérimentale s'accorde bien avec la possibilité dans l'environnement programmatique choisi de modifier interactivement les représentations informatiques créées. L'interface graphique de Self permet une visualisation des objets, et l'utilisateur peut "ausculter" les contenus des différents attributs ou des méthodes associés aux objets. Il peut aussi agir sur ces différentes facettes d'un objet. Nous avons déjà indiqué que certaines phases de travail manuel peuvent être réalisées pour affiner les résultats construits quand une action directe sur les représentations produites est nécessaire. Pour construire un programme de TALN capable d'agir dynamiquement sur ces mêmes objets, on doit disposer d'outils qui produisent les mêmes résultats mais qui agissent de manière transparente pour permettre une modification dynamique des représentations construites. Le système GASPAR gère automatiquement les savoirs rencontrés et leurs modifications éventuelles. Il peut sélectionner les savoirs à traiter et agir sur eux. Pour réaliser ce type de sélection, GASPAR utilise les méta-outils mis en place par Self pour interroger la structure d'un objet donné [FLE 97].
Réflexion de structure avec Self
Une des caractéristiques de Self est que les objets manipulés sont complètement déterminés par les comportements qui leur sont associés. Cette priorité de représentation permet une extension et une flexibilité dans le développement de nouvelles applications. Self dispose aussi d’une facette fondamentale : on peut souhaiter pouvoir examiner ou manipuler les objets au cours d’un processus de calcul ; on utilise les objets comme des données et non plus seulement comme des entités associées à la représentation d’un concept. Ce type de réflexivité permet de "parler" à propos d’un objet plutôt que de lui parler. Cette action est faite en Self avec des objets appelés miroirs ([WOL 95], [COI 91-93]). Un objet Self est essentiellement un dictionnaire (association attributs et valeurs). Les attributs peuvent être constants ou modifiables, parents ou non. Ces informations sont conservées dans des entités appelées maps. Une réflexion de structure est introduite en Self par des entités appelées miroirs. Ces entités rendent visibles au niveau du langage les informations contenues dans la représentation interne des objets. Un miroir sur un objet x permet essentiellement de faire des requêtes sur la représentation interne de cet objet. Dans la réalité, les miroirs sont des objets qui ne contiennent aucune information en eux-mêmes. Un miroir est simplement un receveur capable de répondre à un ensemble de primitives du système qui donnent accès en lecture aux informations sur l'objet.
Prenons un exemple. Si un attribut de même nom est disponible dans un prototype et dans un ou plusieurs de ses parents, Self permet de sélectionner le récepteur auquel on veut adresser une requête sur cet attribut. Il convient pour cela de pouvoir :
• 1. Connaître pour un prototype les liens d'héritage qui lui sont associés.
• 2. Récupérer tous ses parents.
• 3. Retenir le destinataire visé.
Self permet d'interroger la structure de tous les objets disponibles dans le système : on peut ainsi déterminer si un attribut donné dans un objet est un attribut parental, (i.e. cet attribut induit un lien de délégation entre l'objet visé et un autre objet). En outre, Self offre des primitives qui permettent de "forcer" l'envoi d'un message à un parent donné. On peut donc adresser le message souhaité au parent visé en utilisant, par exemple, la syntaxe suivante :
'message' sendTo: Objet DelegatingTo: parentChoisi.
Utilisation des méta-savoirs et contrôle
GASPAR active différents outils qui permettent d'agir à un méta-niveau pour évaluer ou contrôler les objets manipulés. GASPAR utilise les méta-processus capables d'évaluer la structure interne des objets construits pour, par exemple, rechercher et sélectionner parmi tous les objets disponibles un objet particulier avec un type donné d'attribut. Il peut ensuite lui appliquer les opérations voulues. Ces opérations, intégrées aux programmes construits, restent évidemment transparentes pour l'utilisateur. Ce dernier constitue, malgré tout, une "entité" de méta-contrôle indispensable pour évaluer les résultats construits. C'est à lui d'interpréter et d'évaluer toutes les mises à jour réalisées : il peut d'ailleurs lui même être à l'origine de modifications sur les savoirs représentés. Puisque l'utilisateur joue un rôle central dans notre approche expérimentale, il est important de souligner que si l'on veut qu'il soit capable d'intervenir pour évaluer ou modifier les objets ou les résultats construits, il doit pouvoir suivre pas à pas les différentes opérations réalisées par les programmes construits pour ensuite évaluer les changements d'états des objets manipulés [HAB 93]. On conçoit donc qu'il soit utile, voire indispensable, de pouvoir suivre ces évolutions potentielles. A cet effet, les processus réflexifs disponibles avec le cadre de représentation choisi ont permis de développer des outils de suivi ou de mise au point de l'analyse. Ces outils présentent, de manière raisonnée, les différents états pertinents des traitements réalisés et des résultats construits à chaque étape.
Limites actuelles des méta-processus
Tous les méta-processus définis n'agissent en fait que de manière structurelle par rapport aux objets construits. Ils permettent soit d'ajouter un comportement, soit de retirer un comportement, soit enfin de modifier globalement un comportement. En effet, si on veut affiner un comportement dans un programme et de manière transparente pour l'utilisateur, il est nécessaire de le redéfinir complètement. Les processus disponibles ne sont pas encore capables de modifier partiellement la valeur d'un attribut, et notamment des attributs qui portent des procédures. Si l'on doit modifier ce type d'attribut de manière transparente pour l'utilisateur (et sans passer par l'interface graphique), il convient de modifier globalement la valeur de cet attribut i.e réécrire le code associé et le réaffecter à l'attribut visé. Il est clair qu'une telle mise à jour nécessite une intervention manuelle qui dépasse très souvent les compétences du non spécialiste. Si l'utilisateur peut intervenir dynamiquement et de manière interactive sur tous les objets construits en utilisant l'interface graphique de Self, il reste important de souligner qu'à moins de connaître toutes les finesses de la programmation avec Self, il reste difficile à un utilisateur non spécialiste de ce langage de gérer tout seul ce type de mise à jour. La mise au point de tels outils de mise à jour dynamique et ponctuelle des objets représentés est d'ailleurs loin d'être triviale ([COI 93-95]).
Mettre en place la génération de nouveaux savoirs
Notre travail vise à permettre aux objets créés d'apprendre par ajustements successifs de nouvelles connaissances. Dans la phase de génération dynamique des représentations associées aux mots présentée supra, les prototypes de mots apprennent dynamiquement les informations syntactico-sémantiques qu'il est possible de leur associer. Cet apprentissage est réalisé sous la forme d'une relation d'apprentissage d'un maître à un élève. Le maître en l'occurrence se matérialise tout d'abord sous la forme des informations initiales recueillies sur un corpus donné. Le classement produit peut aussi conduire l'utilisateur à intervenir directement sur les résultats construits pour affiner ces résultats. Cet apprentissage via l'acquisition de connaissances proposées par un maître ne suffit pas [PIT 95]. Un programme de TALN doit pouvoir construire de nouvelles connaissances à partir des connaissances connues. Cette dernière assertion pose d'ailleurs des problèmes qui dépassent notre cadre de travail.
Création de pôles de comportements
La phase de travail qui consiste à repérer les savoirs communs puis à définir et à créer les pôles de comportements partagés peut être assimilée à une première étape dans la construction de nouveaux savoirs. Celle-ci reste à affiner et à développer. Ces regroupements de savoirs partagés par un ensemble de prototypes de mots ou de prototypes d'arbres ne sont en effet pas identifiés ou nommés. L'opération qui consiste à évaluer la ressemblance comportementale entre les mots ne qualifie pas les ressemblances constatées.
Affiner les processus autodescriptifs des objets
Les objets construits doivent évaluer leurs fonctionnements et leurs comportements par rapport aux autres objets. Il convient donc de mettre en place des processus fins pour permettre aux objets construits de donner une bonne description d'eux-mêmes afin qu'ils puissent comparer cette description à celles des autres objets. Si deux objets (représentant des mots ou des arbres) doivent "dialoguer" pour évaluer leurs descriptions respectives et celles de leurs comportements, il convient que ces objets puissent activer des processus capables de produire ces descriptions. De plus, dans la mesure où les objets construits sont susceptibles d'évoluer, il convient que les processus d'autodescription des objets construits puissent être affinés dynamiquement pour tenir compte de ces évolutions potentielles. Self permet la mise en place de mécanismes qui réalisent cette description des attributs d'un objet donné à tout moment de son existence dans le système. La mise en oeuvre de telles opérations sur tous les objets du système construit reste à faire. De même il convient de poursuivre la mise en place de processus capables d'interroger plus précisément les attributs (de comportements) attachés aux mots et à ceux des arbres associés si l'on veut donner du sens aux savoirs ainsi représentés.
Une interface pour linguiste
Notre travail vise aussi à penser et à mettre en œuvre une interface graphique qui permette à l'utilisateur d'évaluer et d'interpréter les résultats. Ce développement constitue une voie de travail de grande ampleur qui ne peut être développé ici. Self offre d'ailleurs des solutions intéressantes pour réaliser cette interface. Nous présentons ici une des composantes de l´interface graphique de GASPAR qui propose une présentation des données traitées et des résultats construits par GASPAR.
Nous avons adapté le browser disponible dans Self-4.0 afin de créer un point d´entrée pour la présentation de GASPAR. Ce browser permet une présentation de GASPAR et de ses composants. Il permet aussi de rendre accessible les données traitées par GASPAR au gré de leurs évolutions. Il permet enfin une présentation des résultats construits par GASPAR. Ces résultats sont mis à jour automatiquement par les programmes développés dans ce dispositif. Les classes de mots construites sur les corpus traités constituent à ce jour les premiers résultats disponibles via cette interface.