Serge Fleury
POLAS FRITAS
"Prototype Oriented Language HAS FREED US"
La Programmation à Prototypes (PàP), un outil pour une linguistique expérimentale. Mise en oeuvre de représentations évolutives pour le TALN
Résumé de thèse
POLAS FRITAS : Prototype Language Has Freed Us
La programmation à prototypes, un outil pour une linguistique expérimentale. Mise en oeuvre de représentations évolutives des connaissances pour le Traitement Automatique du Langage Naturel
Serge Fleury
4 octobre 1997
Directeur : François-Xavier Testard-Vaillant
Cette thèse vise à la mise au point d'outils de modélisation adaptés à des problèmes fondamentaux de sémantique linguistique. Notre démarche propose une nouvelle approche, fondée sur la programmation à prototypes, qui permet de définir de nouveaux objets en les faisant dériver d'objets déjà existants (sans utiliser la notion de classe). Cette démarche de représentation offre une grande souplesse pour la description des propriétés syntaxico-sémantiques des unités lexicales et pour la réalisation de systèmes de modélisation de la construction du sens dans un dispositif de traitement automatique du langage naturel. Ce travail prend appui sur une extraction de "savoirs linguistiques" attachés aux mots à partir d'occurrences en corpus et il vise aussi à établir une classification évolutive des mots représentés sous la forme d'objets informatiques appelés des prototypes.
Cette thèse comprend trois parties.
Partie 1
Chapitre 1 : Enjeux linguistiques et informatiques du traitement automatique de la construction du sens
Ce chapitre introduit la nécessité de construire des représentations évolutives pour modéliser les faits de langue. Le traitement automatique du langage naturel doit passer par une phase de représentation des éléments linguistiques contrainte à figer les savoirs à modéliser. Un examen des comportements des mots révèle des variations qu'il semble difficile de fixer dans des structures de représentations statiques. L'hypothèse suivie dans ce travail pour la représentation des informations linguistiques consiste à ne pas prédéterminer de manière figée ni les structures définies pour cette représentation ni leurs classements. Nous convenons avec [HAT 91] que "la construction d'une hiérarchie est un processus incrémental" et qu'une hiérarchie "évolue et s'améliore en fonction des résultats obtenus jusqu'à ce qu'une certaine forme de stabilité soit atteinte". On peut considérer que les comportements des mots ne sont pas tous prédéfinis mais que ceux-ci "émergent" dans le contexte dans lequel ces mots "agissent". Il n'est donc pas raisonnable de les considérer comme acquis par définition. Il s'agit au contraire de les mettre en lumière ainsi que les corrélations multiples qui existent entre les mots dans un flot continu de discours. Notre démarche consiste en quelque sorte à "faire émerger" les comportements des mots puis à les représenter ou à affiner les représentations existantes et enfin à classer les structures de représentation construites.
Chapitre 2 : Le langage, si loin, si proche
Ce chapitre présente certains modèles (Fuchs et Victorri 1990, Pustejovsky 1991, Briscoe et Copestake 1994, Kayser 1987-1992, Rastier 1987-1992) qui traitent de la construction du sens. Notre approche s'inscrit fondamentalement dans la lignée des modèles présentés, même si nous nous montrons critique sur certains aspects de ces modèles. Ces approches visent toutes à concevoir la construction du sens comme la mise en action de mécanismes. Ces approches s'écartent d'un appariement de termes et de sens. Elles ne consistent pas non plus à recourir uniquement à de l'induction ou à du raisonnement. Il s'agit plutôt d'établir un compromis entre des informations figées et des heuristiques qui peuvent enrichir ces informations. Ce qui est en jeu, c'est la confrontation entre la représentation de savoirs minimaux et les mécanismes qui permettent d'étendre ces savoirs en fonction des réalités contextuelles. Il s'agit pour certains d'organiser les savoirs de manière hiérarchique de telle sorte que des processus attachés à ce type de représentation permettent de reconstruire le sens ; pour les autres, il s'agit au contraire de décrire plus précisément les mécanismes qui réalisent la construction du sens. Le problème fondamental pointé ici tourne donc autour de la difficulté à représenter les savoirs à l'oeuvre dans les descriptions linguistiques dans la mesure où ces derniers ne sont pas donnés une fois pour toutes. La langue évolue en permanence et les résultats acquis par la description linguistique sont toujours remis en question par la prise en compte de nouvelles informations. En suivant ce constat, notre travail vise à décrire puis à représenter des conditions nécessaires pour des sens possibles et non des conditions nécessaires pour des sens effectifs.
Chapitre 3 : Modèle de classification pour le langage naturel
Ce chapitre présente deux types d'outils disponibles pour mettre en oeuvre des processus de représentation : la Programmation à Objet dans une taxonomie de classes et la Programmation à Prototypes. Dans le premier cadre programmatif, on définit au préalable une classe abstraite dans laquelle sont définies des propriétés. A partir de cette abstraction, de ce moule, on peut créer des objets. On est donc obligé de prédéterminer toutes les propriétés des objets à représenter, ces propriétés étant définies dans le moule que constitue la classe qui sert de support à la définition des futurs instances de cette classe. La programmation à prototypes utilise une démarche inverse. A partir d'un élément particulier d'un domaine à représenter, on va construire un objet informatique sans passer par un filtre prédéfinitoire : le lien classe instance de classe n'existe pas. La représentation prototypique ne prédétermine donc pas toutes les propriétés des objets d'un domaine à représenter. Une fois que l'on a construit un objet particulier, on utilise deux opérations fondamentales pour représenter d'autres éléments sous la forme de prototypes : le clonage et l'ajustement. L'opération de clonage produit une copie conforme de l'objet cloné. Il convient ensuite d'ajuster le prototype issu de l'opération de clonage pour représenter adéquatement le nouvel élément. L'ajustement de l'objet cloné n'altère en rien le prototype qui a servi de support pour l'opération de clonage. On peut modifier les propriétés de ce nouvel objet sans modifier les propriétés du prototype initial. On peut ensuite réitérer les opérations de clonage et d'ajustement pour représenter les objets souhaités. Il est important de souligner que la notion de prototype mise en avant par la programmation à prototypes ne correspond en rien à la notion de prototype développée par la psychologie cognitive.
Ce chapitre réalise une comparaison critique du pouvoir expressif de ces deux cadres de représentation. Dans un cas, il est plus facile de représenter des savoirs établis donc de fixer ces savoirs dans des hiérarchies. Dans l'autre cas, le processus de représentation est contraint par des savoirs non connus à l'avance : il est donc plus difficile de présumer de ces savoirs et de leur mode de structuration et d'organisation. Ce chapitre évalue les apports pertinents de chacun de ces cadres pour la représentation du langage naturel, ce dernier articulant très bien ces deux aspects de la manipulation des connaissances.
Chapitre 4 : Un dispositif pour le traitement automatique du langage naturel
Ce chapitre introduit ensuite la démarche de représentation qui sera suivie dans ce travail via la programmation à prototypes. Il présente enfin les premiers choix faits pour une représentation de la construction du sens des séquences nominales du type moulin à N2. Notre travail utilise le prototype comme un outil de représentation de certains faits linguistiques dans la mesure où nous pensons qu'il peut répondre à certains problèmes que posent ces faits de langue. Cet outil de représentation conduit à construire des structures de représentation simples et ajustables pour rendre compte justement des problèmes d'ajustements qui sont à l'oeuvre dans la construction du sens dans le langage naturel. Avec programmation à prototypes, il ne s'agit pas de partir d'une somme d'informations figées et connues par avance mais de construire progressivement les entités informatiques suivant les informations dont on dispose sur le domaine visé. Si les informations à représenter ne sont pas connues de manière définitive, il est possible de commencer le processus de représentation en utilisant les informations déjà recensées puis d'affiner dynamiquement les objets construits dès que de nouvelles informations sont disponibles. Cette mise à jour des objets peut être réalisée manuellement ou automatiquement (en définissant les opérations idoines). On peut donc envisager des processus de représentation qui se déroulent de manière continue suivant les flux d'informations disponibles.
Le choix d'une représentation à l'aide de prototypes privilégie la définition des éléments représentés de manière contextuelle puis leur spécialisation en tenant compte des évolutions contextuelles rencontrées. En termes de représentation, les prototypes permettent d'envisager une définition minimale du savoir linguistique. Il convient ensuite de mettre en lumière les mécanismes qui permettent d'affiner ces savoirs initialement représentés. Notre travail de représentation prend appui sur des connaissances très générales (on utilise au départ par exemple un cadre de sous catégorisation approximatif ) qui sont affinées voire remodelées et changées au gré des observations rencontrées de la même manière que les savoirs linguistiques évoluent (les dictionnaires sont mis à jour périodiquement...). Il s'agit ainsi pour nous de tendre vers un modèle cohérent qui ajuste les descriptions linguistiques dès qu'une certaine stabilité apparaît.
Partie 2
Chapitre 5 : Classifier en terrain mouvant, approche prototypique pour la construction du sens des séquences moulin à N2
Ce chapitre est une introduction pour la mise en place d'une représentation des informations linguistiques avec des prototypes dans la programmation à prototypes et en particulier pour la mise au point d'outils pour la construction du sens des séquences moulin à N2. On prend appui ici sur un modèle sémantique particulier présenté dans le chapitre 1. Ce chapitre présente également le langage à prototypes Self qui est utilisé ici pour la mise au point d'un dispositif de traitement automatique du langage naturel. Self est un langage à prototypes qui permet l'héritage multiple et dynamique. Self a été conçu par David Ungar et Randall Smith à l'université de Stanford. Le texte "fondateur" de Self a été publié dans OOPSLA'87 et s'intitule "Self : The power of Simplicity" [UNG 87]. La 1ère implémentation de Self date elle aussi de 1987. La dernière version, Self-4.0 est disponible depuis juillet 95 [SEL 95, UNG 95, WOL 95, DUV 95]. Self est désormais développé par Sun Microsystems.
Un prototype est une entité composée d'attributs. Ces attributs peuvent porter des données, des méthodes ou pointer sur d'autres objets. La définition structurelle d'un objet peut être modifiée à tout moment. Self offre des primitives qui permettent d'ajouter ou de supprimer dynamiquement des attributs aux objets. Les objets définis dialoguent entre eux via un mécanisme d'envoi de messages. L'héritage en Self se réalise au travers de la notion de délégation. Pour mettre en place l'héritage avec Self, on commence par créer des objets qui vont porter les comportements partagés. On établit ensuite un lien entre ces objets et les prototypes qui délèguent les comportements factorisés en inscrivant dans ces prototypes le chemin de délégation défini. Pour inscrire un chemin de délégation dans un objet on ajoute un attribut parent qui pointe sur l'objet qui porte les comportements délégués. Dans le langage Self, un parent commun à plusieurs prototypes est appelé un objet traits.
Chapitre 6 : Le prototype veut enfin représenter, un nouveau type de moulin à N2
Ce chapitre poursuit le travail de mise au point du dispositif qui traite de la construction du sens des séquences moulin à N2. La démarche de représentation suivie amène à reformuler le problème traité et à proposer une nouvelle solution pour la représentation des savoirs manipulés. Ce chapitre poursuit également le développement d'outils pour l'élaboration de descriptions linguistiques dans l'environnement expérimental du langage Self. En utilisant les mécanismes propres à ce langage, nous construisons progressivement une démarche pour la représentation de données linguistiques par ajustements successifs. Ce chapitre montre aussi la possibilité d'établir une représentation décentralisée de l'information pour rendre compte des problèmes linguistiques traités.
Chapitre 7 : Des arbres aux prototypes, vers une classification dynamique
Ce chapitre étend le processus de représentation de savoirs linguistiques. Il ne s'agit plus de restreindre le processus de représentation à certains types de séquences nominales mais de prendre appui sur des corpus (de taille importante) pour représenter les savoirs linguistiques à l'oeuvre sur les mots de ces corpus. Notre travail vise à automatiser les traitements de représentation des mots et de leur classement et à souligner les limites de cette induction de savoirs (un travail d'interprétation manuel semble indispensable).
L'hypothèse suivie ici est qu'il y a peu de sens à vouloir faire de l'acquisition sémantique en dehors d'un sous-langage. L'apprentissage sur corpus vise à repérer les arbres élémentaires de dépendance entre mots (relations opérateur-opérandes) et les contraintes sur les combinaisons de ces arbres. La phase d'acquisition de savoirs à partir de corpus prend appui sur la systématicité structurelle et sémantique propre aux sous-langages [HAR 70-88] afin de mettre au jour les proximités de cooccurrences entre mots pour dégager les relations sémantiques sous-jacentes. Le point de départ du travail de représentation est constitué par le corpus MENELAS [ZWE 94]. Les informations utilisées par les processus de représentation informatique des mots et des arbres associés sont issues d'une chaîne de traitements composée des logiciels LEXTER (LEXTER [BOU 93] est un outil d'acquisition terminologique conçu et réalisé dans un environnement industriel : la Direction des Etudes et Recherches de EDF, pour aider à la mise au point de terminologie), AlethIP (AlethIP est un extracteur de groupes nominaux développé par GSI-ERLI dans le cadre du projet Eureka GRAAL) et ZELLIG (le logiciel ZELLIG [HAB 96] est une chaîne de recyclage développée par Benoît Habert et Adeline Nazarenko en C sous Linux et Solaris). Le but de ces outils est d'une part d'extraire des informations à partir de corpus (LEXTER, AlethIP) et d'autre part de simplifier ces informations puis de caractériser leurs fonctionnements (ZELLIG). Ce chapitre introduit la présentation du dispositif GASPAR. Ce dispositif a pour but : d'une part de construire des représentations évolutives pour les mots à partir d'informations extraites sur corpus ; d'autre part, il doit conduire à la construction de classes de mots de manière inductive. Les classes de mots produites peuvent ensuite être utilisées dans des applications liées à la construction de bases de connaissances sur un domaine de spécialité. Notre objectif est de tendre vers la détermination de classes sémantiques, de manière inductive. Il convient de souligner que le classement opéré s'appuie principalement sur des contraintes syntaxiques. La syntaxe est utilisée pour dégrossir le classement. A l'inverse des approches harrissiennes et statistiques, notre approche ne conduit pas à la détermination de classes sémantiques satisfaisantes mais elle constitue une méthode d'amorçage pour l'élaboration de l'ontologie du domaine, nous suivons sur ce point la démarche suivie par [HAB 96] : la construction de l'ontologie du domaine étudié nécessite un part d'interprétation, "il y a, entre le flou notionnel inhérent aux langues naturelles, y compris aux langues de spécialités, et la stabilité conceptuelle qui est requise dans les ontologies construites, un seuil qui ne peut être franchi automatiquement".
Chapitre 8 : Représentation et classification dynamiques
Ce chapitre poursuit la présentation du dispositif GASPAR mis en place pour réaliser les objectifs établis dans le chapitre précédent. Il met aussi en avant les limites des processus mis en place et le travail qu'il reste à definir pour affiner les résultats construits.
GASPAR est une chaîne de traitements automatiques pour la représentation et le classement automatiques de mots et de leurs comportements syntaxico-sémantiques. Il dispose au départ d'informations extraites (via ZELLIG) à partir d'un corpus (sous la forme d'un fichier texte) : pour chaque entrée lexicale, le dispositif GASPAR dispose d'informations morphologiques et sémantiques décrivant ces mots, d'une liste d'arbres élémentaires et d'une liste d'arbres d'analyse associés aux arbres élémentaires. Le dispositif GASPAR utilise ces informations pour construire des prototypes afin de représenter les mots et leurs comportements (les arbres associés). Après la phase de représentation des mots et de leurs comportements syntaxiques, le dispositif GASPAR peut amorcer un début de classement des prototypes de mots en fonction de leurs comportements syntaxiques. Pour réaliser la mise en place de ce réseau de comportements partagés sur les objets construits, le dispositif GASPAR utilise la notion d'héritage définie dans l'implémentation de Self. Ce langage permet l'héritage multiple : il n'y pas de restriction dans le nombre de parent possible pour un prototype donné ; il permet l'héritage dynamique : on peut à tout moment modifier un lien de délégation sur un prototype donné. Soit en ajoutant un nouveau lien de délégation, soit en modifiant un lien existant si ce dernier est réalisé via un attribut assignable, soit en supprimant un lien. Les processus de classement utilisent ces deux propriétés fondamentales pour réaliser la mise en place d'un réseau de comportements partagés sur l'ensemble des prototypes construits. Ces processus ajoutent de manière dynamique des liens de délégation entre les prototypes de mot ou d'arbre et des pôles de comportements partagés construits automatiquement.
Le classement escompté ne concerne que l'examen des prototypes au regard des savoirs linguistiques qui leurs sont attachés. Le classement des prototypes de mots en ce sens signifie que l'on s'intéresse aux comportements linguistiques associés à ces objets et que l'on cherche à évaluer les partages possibles de tels comportements : il s'agit en particulier de chercher les prototypes d'arbres élémentaires communs à un ensemble de prototypes de mots. Ce classement sur les entités représentées vise à la construction de réseaux entre les prototypes définis à la manière d'un parcours entre ces prototypes pour y trouver le chemin interprétatif adéquat. Le réseau mis en place ne construit pas pour autant une représentation du sens attaché aux unités lexicales ou au structures syntaxiques représentées, il doit proposer des chemins interprétatifs qui ne constituent que des amorces d'interprétation devant être affinées par un travail d'interprétation plus fin. Notre approche vise donc à définir une démarche en spirale : construire des représentations par affinements successifs avec projections de savoirs soit constitués soit établis par ailleurs ; puis ajustements et affinements des représentations à chaque nouvelle étape.
Ce chapitre met aussi en avant la nécessité de penser puis de construire une interface homme-machine pour mener à bien l'exploration des représentations de données linguistiques par les mécanismes prototypiques. Cette interface doit aussi guider le linguiste dans son travail d'interprétation des faits de langue manipulés et des résultats produits dans ce dispositif expérimental.
Partie 3
Ce qu'il reste à faire : de la méta-connaissance à la réflexivité.
Chapitre 9 : La réflexivité pour une évolution des représentations dans le traitement automatique du langage naturel
Le traitement automatique de la construction du sens est confronté au problème de travailler sur de nombreuses connaissances et sur la nécessité d'en reconstruire de nouvelles. Cet impératif n'est pas encore accessible. On n'en sait pas encore assez sur les mécanismes qui permettent de reconstruire des connaissances. Il convient toutefois de poursuivre le travail de recherche sur l'utilisation des méta-connaissances pour le traitement automatique du langage naturel, quitte à limiter le champ d'étude sur des phénomènes restreints qui permettent de préciser les taches encore à effectuer. Ce travail sur des processus réflexifs pour un traitement automatique passe impérativement par une phase de développement de processus de traçage des activités d'un programme de traitement automatique. Dans notre travail, 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.
Le dispositif GASPAR construit des représentations de données linguistiques par ajustements successifs. Dans la phase de génération dynamique des représentations associées aux mots, les prototypes de mots sont construits dynamiquement à partir d'informations syntactico-sémantiques extraites sur des occurrences en corpus. 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. Dans ce chapitre nous nous limitons à présenter quelques exemples simples qui illustrent cette génération de nouveaux savoirs à partir de savoirs existants.
Perspectives
Le choix des prototypes semble cohérent avec la volonté de représenter des savoirs évolutifs. Les prototypes sont malléables : ils se construisent contextuellement et leur spécialisation se définit suivant les évolutions contextuelles. Ils peuvent commencer par fixer un savoir minimal - qu'il est possible d'attacher à une entrée lexicale - puis finir par étendre ce noyau de sens dans les directions permises par les configurations interprétatives rencontrées. Les limites de l'automatisation des processus de représentation et de classement marquent le champ de travail qu'il reste à effectuer manuellement pour mener à bien la représentation et le classement des unités lexicales.
La nécessité de sous-représenter la description des mots dans un dispositif de traitement automatique conduit de fait à une perte en richesse expressive. La syntaxe est utilisée dans notre travail comme un "marche-pied pour l'acquisition de connaissances" [HAB 96]. La programmation à prototypes permet ensuite d'établir un compromis intéressant entre formalisation et implémentation : cette démarche de représentation permet en effet de mener un travail d'expérimentation qui doit conduire à une représentation par ajustements successifs.
De nombreux prolongements restent à faire :
Sur le plan technique, la couverture des gros corpus doit être réalisée ; on pourrait ainsi, sur le plan linguistique, évaluer et analyser les résultats construits. Il reste aussi à penser et à mettre en oeuvre 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 mais reste en marge des problèmes exposés ici. Self offre d'ailleurs des solutions intéressantes pour réaliser cette interface.
Les aspects conceptuels n'ont pas été articulés aux phénomènes traités dans les processus construits ; une étude théorique et technique de ces articulations avec les autres niveaux de savoirs représentés doit conduire à étendre et affiner le travail de représentation amorcé. Le traitement de connaissances extra-linguistiques peut aussi complèter et affiner les processus mis en place.
Le développement d'outils pour la représentation et pour le classement dynamiques des savoirs linguistiques doit être étendu. Ce travail est contraint par une double nécessité. D'une part, il est nécessaire de mettre en place des outils de contrôle capables à tout moment d'évaluer les différents types de savoirs manipulés et leurs interrelations existantes ou à venir. D'autre part, la réalisation d'un classement automatique général des unités lexicales semble hors d'atteinte tant qu'on ne pourra pas construire de nouvelles connaissances capables d'enrichir les savoirs déjà établis : en sachant de plus que ce classement à atteindre ne sera jamais un résultat définitif. Il reste malgré tout possible d'affiner les processus de classement mis en place et de fait d'affiner le classement visé (en connaissant ses limites) tout en continuant à travailler sur les métaconnaissances à l'oeuvre dans les faits de langue utilisés.
Ce travail a aussi permis de tracer des pistes pour une réflexion sur les problèmes complexes liés aux traitements automatiques des faits (évolutifs) de langue. Notre approche des problèmes de classification, d'apprentissage, de refléxivité doit être étendue. Ces notions dépassent très largement le cadre linguistique étudié ici et la confrontation de nos choix et de nos résultats avec les travaux établis par ailleurs doit constituer une voie de recherche fructueuse.
Références bibliographiques