Brevet FR3087555A1 — publié le 20200424

MEREMIND1.FRD Dispositif de traitement automatique de texte par ordinateur L'invention concerne le domaine du traitement automatique d'un texte par ordinateur, et plus particulièrement le domaine du traitement du langage naturel, ou NLP (Natural Language Processing en anglais). Le traitement du langage naturel connaît deux principales branches les méthodes linguistiques et les méthodes à base d'entraînement automatique. 10 Les méthodes de la première branche sont basées sur la théorisation des langues issues des théories de Chomsky. Cependant, cette branche n'a fait l'objet que de mises en oeuvre à bases d'heuristiques largement manuelles et complexes et n'a jamais connu d'application informatique donnant des résultats satisfaisants pour une application générale. 15 Les bases de l'intelligence artificielle fondée sur l'entraînement automatique ont été posées dans les années 1960. Dans les cinq dernières années, au gré des évolutions technologiques, et avec l'explosion des quantités de données accessibles pour réaliser des entraînements automatiques (MIL pour machine learning en anglais, DL pour Deep 20 Learning en anglais et NN pour Neural Networks en anglais), ce domaine a connu une progression exponentielle. D'une manière générale, les entraînements automatiques reposent sur la détermination par une machine d'un modèle statistique déterminé sur la base d'un entraînement dont les 25 paramètres sont fixés par la personne qui programme l'entraînement, et sur la base d'un jeu d'entraînement. Dans la pratique, cela signifie que le concepteur maîtrise les principes de l'entraînement et les paramètres de celui-ci ainsi que les données sur lesquelles l'entraînement se fonde, mais pas le résultat, qui est appelé modèle d'inférence. Ainsi, une fois l'entraînement terminé, c'est le modèle d'inférence qui est utilisé pour réaliser 30 les prédictions sur les données d'entrée que l'on souhaite traiter, sans que le concepteur soit capable de le voir autrement que comme une boîte noire (black box en anglais). 2 Appliquées au NLP, ces méthodes reposent principalement sur la vectorisation des mots, avec des modèles de type Bag-of-words, ou encore Word2Vec, et le traitement de ces vecteurs comme un problème d'entraînement automatique. Ces modèles reposent également sur un enchaînement analyse syntaxique suivi d'une analyse sémantique. Ainsi, les phrases sont d'abord découpées syntaxiquement, puis un sens est plaqué sur le résultat. Néanmoins, la nature « boîte noire » des modèles d'inférence produits est contradictoire avec l'objectif poursuivi dans le NLP. En effet, le langage a un sens, c'est même son 10 fondement. De plus, ce sens ne s'exprime pas uniquement par la syntaxe ou par la sémantique, mais par une combinaison des deux. Pour ces raisons, et contrairement à ce que l'on pourrait croire, les solutions de cette deuxième branche reposent également sur une quantité d'heuristiques importante, qui ont le défaut supplémentaire d'être dépourvues de sens ou de logique perceptible, car elles sont créées pour satisfaire le 15 moteur d'inférence dont l'organisation n'est pas comprise Il existe donc un besoin pour un dispositif de traitement automatique de texte stable, fonctionnel dans le sens le plus général du terme, et qui ne repose pas exclusivement sur des heuristiques. 20 L'invention vient améliorer la situation. A cet effet, l'invention propose un dispositif de traitement automatique de texte par ordinateur, comprenant une mémoire agencée pour recevoir des données de texte à analyser sous la forme de jetons comprenant chacun une chaîne de caractères et un identifiant de jeton unique, une base de données de concepts 25 associant des chaînes de caractères et des identifiants de concept, certains au moins des identifiants de concept étant associés entre eux, des données de constructions lexicales modèles et des données de constructions structurelles modèles, comprenant chacune une ou plusieurs conditions d'application à une caractéristique et une ou plusieurs conclusions constituant des éléments à appliquer à une caractéristique, et une base de données 30 d'observations associant au moins deux identifiants de concept, un type de relation et une valeur d'observation indiquant une probabilité de véracité du type de relation entre les au moins deux identifiants de concept, le dispositif étant agencé pour travailler de manière 3 répétitive sur un transitoire comprenant des caractéristiques lexicales et des caractéristiques structurelles produites en appliquant des constructions lexicales modèles et des constructions structurelles modèles, le transitoire étant initialisé avec des caractéristiques lexicales comprenant pour chaque jeton un identifiant de concept dont la fréquence est la plus importante dans la base de données de concepts et qui est associé à la chaîne de caractère du jeton. Ce dispositif comprend en outre : un rectificateur agencé pour déterminer pour chaque caractéristique lexicale d'un 10 transitoire une liste d'identifiants de concept associés à l'identifiant de concept de cette caractéristique lexicale, pour déterminer un ensemble d'observations correspondant aux identifiants de concept des listes ainsi déterminées, et pour appliquer un moteur d'inférence logique probabiliste non-monotone pour déterminer l'identifiant de concept de chaque liste tel que les valeurs d'observations associées à ces identifiants de concept 15 minimisent une fonction de coût définie en appliquant un opérateur de logique multivaluée à une ou plusieurs règles tirées du contenu des caractéristiques du transitoire et instanciées avec des valeurs d'observations correspondantes, et pour remplacer les identifiants de concept des caractéristiques lexicales du transitoire par les identifiants de concept ainsi déterminés, 20 - un apparieur agencé pour déterminer parmi les constructions structurelles modèles celles dont la ou les conditions s'appliquent à une ou plusieurs des caractéristiques du transitoire, et pour retourner la liste des constructions structurelles avec la ou les caractéristiques auxquelles s'appliquent leurs conditions, le dispositif étant en outre agencé pour classer les constructions structurelles associées à chaque caractéristique par 25 fréquence d'utilisation, la première construction structurelle devant être appliquée au transitoire et les autres formant une liste d'options, et un combinateur agencé pour exécuter de manière séquentielle la sélection d'une construction structurelle devant être appliquée au transitoire, le stockage d'une copie du transitoire avec la liste d'options associée à la construction structurelle, et l'application 30 de la construction structurelle devant être appliquée au transitoire à la ou les caractéristiques du transitoire à laquelle cette construction structurelle a été associée par 4 l'apparieur, et pour répéter cette exécution séquentielle sur le transitoire ainsi modifié avec la construction structurelle devant être appliquée au transitoire suivante. Ce dispositif est en outre agencé pour déterminer, après l'exécution du combinateur, si les caractéristiques du transitoire produit définissent un arbre dont tous les noeuds sont liés entre eux et dépourvu de cycle, pour retourner cet arbre si c'est le cas, et pour répéter l'exécution du rectificateur, de l'apparieur et du combinateur sur le dernier transitoire produit sinon, et est en outre agencé, lorsque l'apparieur ne retourne aucune construction structurelle à appliquer au transitoire, pour remplacer le transitoire courant par la copie du transitoire la plus récente, et pour exécuter le combinateur avec la première construction de la liste d'options en tant que construction structurelle à appliquer au transitoire.. Ce dispositif est particulièrement avantageux car il permet de résoudre les problèmes décrits plus haut. En effet, il repose entièrement sur l'application d'un algorithme dont les règles sont liées à la linguistique. Dans diverses variantes, le dispositif pourra présenter une ou plusieurs des caractéristiques suivantes : - le moteur d'inférence logique probabiliste non-monotone comprend un optimisateur utilisant l'algorithme des multiplicateurs avec directions alternées, - le dispositif comprend en outre un filtre agencé pour déterminer, pour chaque construction structurelle devant être appliquée et la liste d'options associée un jeu de règles, pour déterminer un jeu d'observations à partir du jeu de règles et du ou des identifiants de concept associé à la caractéristique à laquelle doit être appliquée la construction structurelle devant être appliquée, et pour appliquer le moteur d'inférence logique probabiliste non-monotone avec le jeu de règles et le jeu d'observation afin de déterminer la construction structurelle devant être appliquée au transitoire et la liste d' opti on s, - le rectificateur définit des règles fréquentielles à partir de caractéristiques lexicales du transitoire, des règles de voisinage à partir des identifiants de concept des caractéristiques lexicales du transitoire et des identifiants de concept qui leur sont associés dans la base de données de concept à une distance choisie, et des règles structurelles tirées d'attributs 5 sémantiques de caractéristiques non lexicales du transitoire liant entre elles deux caractéristiques lexicales, - le combinateur est agencé pour stocker uniquement la copie du transitoire avec la liste d'options associée à la construction structurelle, et en ce que, lorsque l'apparieur ne 5 retourne aucune construction structurelle à appliquer au transitoire, pour remplacer le transitoire courant par la copie du transitoire la plus récente, et pour exécuter le combinateur avec la première construction de la liste d'options en tant que construction structurelle à appliquer au transitoire, puis en répétant l'application du rectifieur, de l'apparieur et du combinateur avec le transitoire résultant, 10 - le combinateur est agencé pour stocker les constructions structurelles restantes devant être appliquées au transitoire en même temps que la copie du transitoire avec la liste d'options associée à la construction structurelle, et en ce que lorsque l'apparieur ne retourne aucune construction structurelle à appliquer au transitoire, pour remplacer le transitoire courant par la copie du transitoire la plus récente, et pour exécuter le 15 combinateur avec la première construction de la liste d'options en tant que construction structurelle à appliquer au transitoire ainsi que les constructions structurelles restantes, puis en répétant l'application du rectifieur, de l'apparieur et du combinateur avec le transitoire résultant, - le dispositif est agencé pour analyser l'arbre retourné et pour produire un graphe 20 sémantique dont les noeuds sont formés par les caractéristiques lexicales et leur identifiant de concept, et donc les liens sont définis par les attributs sémantiques de caractéristiques non lexicales liant entre elles deux caractéristiques lexicales, et - le moteur d'inférence est agencé pour appliquer un opérateur de logique multivaluée choisi parmi le groupe comprenant la t-norme de Lukasiewicz, la t-norme minimale et le 25 produit de Hamacher. L'invention concerne également un procédé de traitement automatique de texte mis en oeuvre par ordinateur, comprenant les opérations suivantes : a) recevoir des données de texte à analyser sous la forme de jetons comprenant 30 chacun une chaîne de caractères et un identifiant de jeton unique, une base de données de concepts associant des chaînes de caractères et des identifiants de concept, certains au moins des identifiants de concept étant associés entre eux, des données de constructions 6 lexicales modèles et des données de constructions structurelles modèles, comprenant chacune une ou plusieurs conditions d'application à une caractéristique et une ou plusieurs conclusions constituant des éléments à appliquer à une caractéristique, et une base de données d'observations associant au moins deux identifiants de concept, un type 5 de relation et une valeur d'observation indiquant une probabilité de véracité du type de relation entre les au moins deux identifiants de concept, b) initialiser un transitoire pouvant comprendre des caractéristiques lexicales et des caractéristiques structurelles produites en appliquant des constructions lexicales modèles et des constructions structurelles modèles, avec des caractéristiques lexicales comprenant 10 pour chaque jeton un identifiant de concept dont la fréquence est la plus importante dans la base de données de concepts et qui est associé à la chaîne de caractère du jeton, c) travailler de manière répétitive sur le transitoire en répétant les opérations successives suivantes: cl) déterminer pour chaque caractéristique lexicale d'un transitoire une liste 15 d'identifiants de concept associés à l'identifiant de concept de cette caractéristique lexicale, pour déterminer un ensemble d'observations correspondant aux identifiants de concept des listes ainsi déterminées, et pour appliquer un moteur d'inférence logique probabiliste non-monotone pour déterminer l'identifiant de concept de chaque liste tel que les valeurs d'observations associées à ces identifiants de concept minimisent une 20 fonction de coût définie en appliquant un opérateur de logique multivaluée à une ou plusieurs règles tirées du contenu des caractéristiques du transitoire et instanciées avec des valeurs d'observations correspondantes, et pour remplacer les identifiants de concept des caractéristiques lexicales du transitoire par les identifiants de concept ainsi déterminés, 25 c2) déterminer parmi les constructions structurelles modèles celles dont la ou les conditions s'appliquent à une ou plusieurs des caractéristiques du transitoire, et pour retourner la liste des constructions structurelles avec la ou les caractéristiques auxquelles s'appliquent leurs conditions, c3) classer les constructions structurelles associées à chaque caractéristique par 30 fréquence d'utilisation, la première construction structurelle devant être appliquée au transitoire et les autres formant une liste d'options, et 7 c4) exécuter de manière séquentielle la sélection d'une construction structurelle devant être appliquée au transitoire, le stockage d'une copie du transitoire avec la liste d'options associée à la construction structurelle, et l'application de la construction structurelle devant être appliquée au transitoire à la ou les caractéristiques du transitoire à laquelle cette construction structurelle a été associée par l'apparieur, et pour répéter cette exécution séquentielle sur le transitoire ainsi modifié avec la construction structurelle devant être appliquée au transitoire suivante, c5) déterminer, après l'exécution du combinateur, si les caractéristiques du transitoire produit définissent un arbre dont tous les noeuds sont liés entre eux et dépourvu de cycle, 10 pour retourner cet arbre si c'est le cas, et pour répéter les opérations cl) à c5) sur le transitoire courant sinon, c6) si l'opération c2) ne retourne aucune construction structurelle à appliquer au transitoire, remplacer le transitoire courant par la copie du transitoire la plus récente, exécuter l'opération c5) avec la première construction de la liste d'options en tant que 15 construction structurelle à appliquer au transitoire. Dans diverses variantes, le procédé pourra présenter une ou plusieurs des caractéristiques suivantes : - l'application du moteur d'inférence logique probabiliste non-monotone comprend 20 l'application d'un optimisateur utilisant l'algorithme des multiplicateurs avec directions alternées, - le procédé comprend en outre, entre l'opération c3) et l'opération c4) c7) déterminer, pour chaque construction structurelle devant être appliquée et la liste d'options associée un jeu de règles, déterminer un jeu d'observations à partir du jeu de 25 règles et du ou des identifiants de concept associé à la caractéristique à laquelle doit être appliquée la construction structurelle devant être appliquée, et appliquer le moteur d'inférence logique probabiliste non-monotone avec le jeu de règles et le jeu d'observation afin de déterminer la construction structurelle devant être appliquée au transitoire et la liste d'options, 30 - l'opération cl) comprend la définition de règles fréquentielles à partir de caractéristiques lexicales du transitoire, de règles de voisinage à partir des identifiants de concept des caractéristiques lexicales du transitoire et des identifiants de concept qui leur sont associés 8 dans la base de données de concept à une distance choisie, et de règles structurelles tirées d'attributs sémantiques de caractéristiques non lexicales du transitoire liant entre elles deux caractéristiques lexicales, - l'opération c4) stocker uniquement la copie du transitoire avec la liste d'options associée à la construction structurelle, et dans lequel, après de l'exécution de l'opération c7), les opérations cl) à c7) sont répétées sur le transitoire courant, - l'opération c4) stocke les constructions structurelles restantes devant être appliquées au transitoire en même temps que la copie du transitoire avec la liste d'options associée à la construction structurelle, et dans lequel, après l'exécution de l'opération c7), l'opération 10 c5) est appliquée avec les constructions structurelles restantes, puis en répétant l'application du rectifieur, puis, les opérations cl) à c7) sont répétées sur le transitoire courant, et - le procédé comprend en outre l'opération suivante : d) analyser l'arbre retourné par l'opération c6) et produire un graphe sémantique 15 dont les noeuds sont formés par les caractéristiques lexicales et leur identifiant de concept, et donc les liens sont définis par les attributs sémantiques de caractéristiques non lexicales liant entre elles deux caractéristiques lexicales. D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lecture de la 20 description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels : - la figure 1 représente une vue schématique d'un dispositif selon l'invention, - la figure 2 représente un exemple de mise en oeuvre d'une fonction de traitement automatique de texte par le dispositif de la figure 1, 25 - les figures 3 à 7 représentent des exemples de mise en oeuvre d'opérations de la figure 2, - les figures 8 à 17 représentent des représentations d'étapes de traitement de la fonction de la figure 2 sur un exemple simplifié, - la figure 18 représente un arbre retourné par le dispositif selon l'invention, et - la figure 19 représente un graphe sémantique tiré de l'arbre de la figure 18. 30 9 Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d'auteur et/ou le copyright. Le titulaire des droits n'a pas d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa description, telle qu'elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits. 10 La figure 1 représente une vue schématique d'un dispositif selon l'invention. Le dispositif 2 comprend une mémoire 4, un rectificateur 6, un apparieur 8, un filtre 10, un combinateur 12 et un validateur 14. 15 Dans le cadre de l'invention, la mémoire 4 peut être tout type de stockage de données propre à recevoir des données numériques : disque dur, disque dur à mémoire flash (SSD en anglais), mémoire flash sous toute forme, mémoire vive, disque magnétique, stockage distribué localement ou dans le cl oud, etc. Les données calculées par le dispositif peuvent être stockées sur tout type de mémoire similaire à la mémoire 4, ou sur celle-ci. Ces 20 données peuvent être effacées après que le dispositif a effectué ses tâches ou conservées. Dans l'exemple décrit ici, la mémoire 4 reçoit des données permanentes qui servent à mettre en oeuvre le dispositif 2 et peuvent être enrichies au fur et à mesure de ses exécutions. Dans l'exemple décrit ici, la mémoire 4 reçoit également des données 25 temporaires ou données de travail, qui sont générées pour les besoins d'une exécution donnée du dispositif 2, et qui ne sont pas conservées après cette exécution. Les données permanentes et les données de travail peuvent être stockées sur une même mémoire 4 ou sur des mémoires distinctes. 30 Les données permanentes comprennent une base de données de concepts sémantique basée au moins en partie sur la base de données Wordnet (voir https://wordnet.princeton.edu/) pour la langue anglaise (d'autres bases de données 10 pourront être utilisées pour d'autres langues). Les données permanentes contiennent également, et de manière non exhaustive, les données suivantes, qui seront définies en détail plus bas : - des constructions lexicales modèles pour une langue donnée, c'est-à-dire une condition 5 basée sur la catégorie lexicale d'un mot (son Part of speech en anglais), et une conclusion permettant de caractériser la caractéristique lexicale par sa chaîne de caractère, son part of speech, son identifiant unique de jeton et un identifiant de concept, - des constructions structurelles modèles pour une langue donnée, c'est-à-dire une ou plusieurs conditions qui relient une caractéristique lexicale ou structurelle et une autre 10 caractéristique lexicale ou structurelle et reflète la structuration syntaxique de la langue donnée, comme le fait qu'un adjectif est préposé ou postposé, ou encore la structure d'une proposition subordonnée de cause, etc., - des règles de filtrage, qui permettent de formuler chacune une règle associée à une construction structurelle, afin de lever une ambiguïté lexicale grâce à la sémantique, et 15 - une base de données d'observations, qui sont des quadruplets associant un type de relation, deux identifiants de concepts, et une valeur d'observation comprise entre 0 et 1 (0 signifiant que le type de relation suggéré est faux, 1 qu'il est vrai, et les autres valeurs une probabilité qu'il soit vrai ou faux). Par exemple, pour le type de relation Est Un(A,B), la valeur de l'observation de Est Un(Einstein, homme) serait 1, tandis que 20 la valeur de l'observation de Est Un(Einstein, chien) serait 0, et que celle de Est Un(Einstein, génie) serait de 0,95. Ainsi, selon un concept de « closed world » (le monde est fermé), si deux concepts ne sont pas reliés, alors les observations les reliant sont initialisées à 0. Cette base de données d'observations peut être complétée à partir du contenu de la base de données de concepts pour déduire des relations logiques entre les 25 concepts. Les observations pourraient lier plus de deux identifiants de concept. Néanmoins, ce type de relation peut être reformulé par un jeu de plusieurs observations reliant les identifiants de concept deux à deux. Dans le cadre de l'invention, le rectificateur 6, l'apparieur 8, le filtre 10, le 30 combinateur 12 et le validateur 14 sont des éléments accédant directement ou indirectement à la mémoire 4. Ils peuvent être réalisés sous la forme d'un code informatique approprié exécuté sur un ou plusieurs processeurs. Par processeurs, il doit 11 être compris tout processeur adapté aux calculs décrits plus bas. Un tel processeur peut être réalisé de toute manière connue, sous la forme d'un microprocesseur pour ordinateur personnel, d'une puce dédiée de type FPGA ou SoC (« system on chip » en anglais), d'une ressource de calcul sur une grille, d'un microcontrôleur, ou de toute autre forme propre à fournir la puissance de calcul nécessaire à la réalisation décrite plus bas. Un ou plusieurs de ces éléments peuvent également être réalisés sous la forme de circuits électroniques spécialisés tel un ASIC. Une combinaison de processeur et de circuits électroniques peut également être envisagée. 10 La figure 2 représente un exemple de mise en oeuvre d'une fonction de traitement automatique de texte par le dispositif de la figure 1 Le rôle de la fonction de la Figure 2 est fondamental. En effet, c'est une boucle qui appelle le rectificateur 6, l'apparieur 8, le filtre 10, le combinateur 12 et le validateur 14 afin de 15 créer progressivement un graphe sémantique qui représente le sens de la phrase reçue en entrée. Ainsi, le dispositif 2 offre avec cette fonction une brique fondamentale au NLP car celle-ci est quasi-dépourvue d'heuristique, et offre donc une solution répétible pour créer une 20 sous-couche de langage qui permet aux machines d'accéder à la compréhension sémantique des textes. Le dispositif 2 trouve une application particulièrement efficace dans les domaines du « Question answering » (Réponse aux questions). En effet, il permet d'abord d'analyser un texte pour en établir la sémantique, puis d'analyser de la même manière une question pour la rapprocher de cette sémantique et fournir la réponse. Plus 25 généralement, le dispositif 2 se base sur une base de données de concepts sémantiques existante, mais est capable de l'enrichir grâce à son fonctionnement, contrairement aux méthodes à base d'entraînement automatique. La fonction de la figure 2 commence par une opération 200 avec une fonction Init(). Un 30 exemple de mise en oeuvre de la fonction Init( est explicité avec la figure 3. La fonction Init() a pour rôle d'initialiser la boucle de la figure 2, et en particulier d'initialiser l'objet principal qui est modifié par les boucles afin d'obtenir le graphe sémantique qui est le 12 résultat. Cet objet est ici appelé « transitoire », car il est appelé à évoluer de nombreuses fois, très rapidement, afin de générer le graphe sémantique. Comme on le verra dans la suite, un transitoire est composé de caractéristiques. Chaque caractéristique peut porter soit sur un jeton particulier, auquel cas elle est appelée caractéristique lexicale, soit sur une relation entre deux caractéristiques lexicales, auquel cas elle est appelée caractéristique structurelle. Une caractéristique structurelle peut elle-même porter sur la relation entre d'autres caractéristiques structurelles, ce qui permet de créer des sens sémantiques complexes. 10 Cette manière de travailler permet également de construire le graphe sémantique de manière à la fois syntaxique et sémantique, ce qui respecte la nature du langage. Enfin, cela permettra également de traiter le cas de phrases plurilingues. En effet, si une partie d'une phrase n'est pas résolue dans une langue donnée, elle peut être analysée avec les 15 caractéristiques d'une autre langue afin d'identifier un sous-ensemble de phrase dans une deuxième langue qui donne un sens sémantique à une phrase qui n'en avait pas dans la première langue. Cela est complètement inédit dans le domaine du NLP, et est complètement inaccessible aux solutions à base d'entraînement automatique. 20 Les caractéristiques, qu'elles soient lexicales ou structurelles, sont le fruit de l'application d'objets linguistiques appelés constructions. Ces objets, bien connus dans le domaine de l'analyse linguistique, n'ont jamais trouvé d'application informatique efficace jusqu'à aujourd'hui. 25 Les constructions s'appuient sur un couple condition(s)/conclusion(s). Dit autrement, une construction est un objet qui se comporte comme suit : si des caractéristiques lexicales ou structurelles remplissent la ou les conditions, alors on va leur appliquer la ou les conclusions de la construction. Ainsi, à chaque fois qu'une boucle trouve des constructions qui s'appliquent aux caractéristiques du transitoire, elle va les compléter ou 30 créer une ou des caractéristiques supplémentaires dans le transitoire si celles-ci n'existent pas encore. Le graphe sémantique sera ainsi construit de proche en proche, en partant des mots et en leur affectant le sens qu'ils ont dans la phrase, puis en regroupant ceux-ci en 13 groupes nominaux, groupes verbaux, puis phrases nominales et verbales, etc., jusqu'à ce que la phrase soit entièrement définie. Comme on le verra, la fonction de la figure 2 est particulièrement puissante car elle permet néanmoins de réévaluer au cours de son exécution le sens associé à un mot et de propager la conséquence de ce changement dans tout le graphe sémantique. Les conditions et les conclusions des constructions sont constituées de champs dont les valeurs sont fixes ou variables. 10 Les conditions portent typiquement sur un ou plusieurs des champs de l'un ou plusieurs des types suivants : - Frontières, qui utilise des prédicats du même nom pour définir les bornes d'un groupe d' éléments, - SousUnités, qui reçoit une liste d'éléments désignés par l'élément, 15 - CatégorieLexicale, qui définit une catégorie lexicale (par exemple, nom, verbe, nom commun, nom propre, adverbe, article, adjectif; etc., - ClasseLexicale, qui définit une classe lexicale (par exemple, verbe transitif, verbe intransitif, auxiliaire, déterminant, etc.), - CatégoriePhrasale, qui définit des groupes de mots entre eux (par exemple phrase 20 nominale, phrase verbale, etc.), et - CatégorieClausale, qui définit une catégorie de clause et permet de grouper des groupes de mots entre eux, par exemple des phrases nominales, des phrases verbales, etc. Les conclusions portent typiquement sur un ou plusieurs des champs de l'un ou plusieurs 25 des types suivants : - Référent, qui définit un identifiant de variable qui unit plusieurs éléments à un même niveau, - Args, qui définit un argument constitutif de liens entre éléments, - Parent, qui définit l'élément parent de l'élément courant dans la structure, 30 - Sens, qui définit un sens relationnel (par exemple une relation temporelle - simultanée, point de référence temporelle, etc.), et - ClasseSémantique(), qui définit une classe sémantique. 14 Les conditions et les conclusions peuvent présenter de nombreux autres champs, comme Forme (relative à une forme d'attribut), Chaîne (une chaîne de caractère), Précède (un prédicat liant deux éléments), Suit (un prédicat liant deux éléments), Interrogation (indique qu'un groupe d'éléments comprend un verbe, un pronom ou un adverbe interrogatif), Préposition, TypeDePhrase (par exemple, phrase nominale, etc.), Nombre, Date, Personne, ValenceSémantique (par exemple, acteur et son identifiant d'élément, etc.), ValenceSyntactique (par exemple, sujet ou objet et son identifiant d'élément), FonctionSyntaxique (par exemple adjectif, auxiliaire, verbe, etc.), Temps, Voix (active ou passive), FormePassive (oui ou non), etc. 10 Par exemple, la construction de type « Composé » peut être définie comme suit : { "id": "noms-composés", "score": 0.0, 15 "type": "Phrasai", "description": "règles de noms composés", "catégorie": "en", "groupe" - "stagel", "constructionClass": "Classic", 20 "locks": [ { le nom 1" "nom": "?nounl", "comprehension": { 25 "nom": "?nounl", "map": { "Catégori eLexi cale" 30 "nom": "?noun2", 15 "comprehension": "nom": "?noun2", "map": { " CatégorieLexicale ": "[nom]" } { "nom" : "?compound", "comprehension": 10 "nom": "?compound", "map": { "Forme": ( "nom": "?v2", "map": { 15 "Accolé": "[[?noun 1 noun2]]" 20 ], "conclusions": [ { "nom": "?compound", "map": { 25 "Accord": "?v5", "Args": "[?v9,?v7]", "Référent": "?ref', "ClasseSémantique": "identifier", "Parent" : "?v10", 30 "Sens": "[[attribute, ?v9, ?v6]]", "SousUnités": " [? noun 1,?noun2]//union", "CatégorieLexicale": "[nom,composé]" 16 Dans cette construction, le « ? » indique qu'il s'agit d'une variable, qui pourra se retrouver à la fois dans les conditions et dans les conclusions, servir à définir l'application de la construction, etc. 10 11 convient également de noter que la fonction de la figure 2 a une nature quasi-récursive. Cela rend sa compréhension moins aisée qu'une fonction séquentielle classique et doit être pris en compte dans la lecture de ce qui suit. C'est pour cette raison que sont fournies les figures 8 à 17. Elles n'apportent pas en soi un enseignement sur la technique du dispositif 2, mais elles permettent de mieux comprendre comment celui-ci explore tous 15 les possibles pour établir le graphe sémantique. La fonction [nit() commence avec une opération 300 dans laquelle un tableau Tk[] est initialisé par une fonction Lex(). La fonction Lex() réalise l'analyse lexicale d'une phrase reçue en entrée par le dispositif 2, et fournit un tableau Tk[] dans lequel la phrase est 20 découpée en jetons normalisés. Le tableau Tk[] stocke pour chaque jeton la chaîne de caractères lui correspondant et un identifiant unique de ce jeton dans la phrase. Ce résultat est également stocké dans un tableau Tst Stack[] qui sera décrit plus bas. La fonction Lex() implémente un analyseur lexical pour produire une séquence de jetons 25 (tokens en anglais) normalisés. La notion de normalisation est en référence au fait que certains mots peuvent être écrits sous plusieurs formes (par exemple les contractions en langue anglaise), ou que certains caractères doivent être supprimés ou regroupés. Ainsi l'analyseur lexical réalise une ou plusieurs des fonctions suivantes : - nettoyage des caractères gênants (indice de note de bas de page, caractères spéciaux, 30 etc.), - découpage d'un texte en phrases (grâce aux délimiteurs tels que le point, le point d'exclamation, etc.), 17 - regroupement des expressions spéciales entre elles (dates, etc.), - développement des mots contractés (par exemple « don't » devient « do not »), - découpage de la phrase en jetons normalisés pour traitement par le dispositif 2. L'analyseur lexical ne fait pas l'objet de l'invention et l'homme du métier connaît plusieurs solutions dans l'état de l'art pour le mettre en oeuvre. Ensuite, dans une opération 310, des prédicats de forme sont initialisés par une fonction SFPO qui reçoit le tableau Tk[] comme variable. La fonction SFPO prend le tableau Tk[] 10 et va produire des prédicats relatifs aux positions des jetons les uns par rapport aux autres. Ainsi, pour deux jetons [ballon][rouge], la fonction SFPO crée un prédicat de type Accolé([ballon],[rouge]) et un prédicat de type Précède([ballon],[rouge]). Ces prédicats indiquent donc que le jeton [ballon] est accolé au jeton [rouge] et qu'il le précède directement. Dans l'exemple décrit ici, le prédicat Précède() est généré pour tous les 15 jetons en aval d'un jeton amont. La fonction SFPO est agencée pour générer également des prédicats de type Frontières(), qui indiquent des indices de début et de fin d'une chaîne de plusieurs jetons. Le jeu de prédicats ainsi produit est stocké dans la mémoire 4, et est accédé pour déterminer l'application de conditions, comme décrit plus bas. 20 Une boucle est alors lancée pour analyser chaque caractéristique lexicale du transitoire afin d'initialiser les identifiants de concept. A ce stade, et c'est la dernière fois dans la boucle, on peut identifier caractéristique du transitoire et concept Ainsi, dans une opération 320, le transitoire Tst est dépilé, et dans une opération 330, une fonction Find() détermine, pour le jeton courant, l'identifiant de syntaxique de la base de données de 25 concepts de la mémoire 4 qui a la fréquence la plus importante, et le stocke dans un tableau Ltk[]. Par exemple, si le jeton est « rouge », la fonction Find() renverra l'identifiant syntaxique associé à l'adjectif « rouge » plutôt que celui associé à la couleur « rouge », car le mot est utilisé plus souvent en tant qu'adjectif qu'en tant que substantif. Simultanément, la fonction Find() attribue l'identifiant de concept le plus fréquent parmi 30 les identifiants de concept associés à cet identifiant syntaxique. Enfin, les autres identifiants syntaxiques sont stockés en tant qu'options dans un tableau OC [] Ces options seront stockées dans le tableau Tst Stack[] dans une opération 350 décrite plus bas. 18 Lorsque tous les jetons ont été ainsi traités, le tableau Ltk[] est fourni comme argument à une fonction LexConstr() dans une opération 340. La fonction LexConstr() retourne une liste de constructions lexicales Cstr[] qui permettront d'initialiser les caractéristiques lexicales du transitoire. Cela est réalisé dans une opération 350 dans laquelle une fonction Merge() reçoit la liste de constructions lexicales Cstr[] de l'opération 340 et le transitoire Tst, et les combine. Là encore, comme il s'agit de la première opération, la combinaison est garantie, c'est-à-dire que la condition de chaque construction lexicale de la liste Cstr[] est nécessairement 10 remplie par une caractéristique du transitoire Tst, puisqu'elles ont été choisies spécifiquement pour cela. Comme indiqué plus haut, des caractéristiques lexicales optionnelles sont générées et stockées dans un tableau Tst Stack[]. Ces options peuvent être explorées lorsqu'un problème est identifié. Cela est notamment assuré par une fonction Bck() dans une opération 290. Cela sera décrit plus en détail avec la description 15 du combinateur 12 en rapport avec la figure 7. En sortie, le transitoire Tst est donc initialisé avec les caractéristiques lexicales correspondant à chaque jeton, avec l'identifiant unique de jeton et l'identifiant de concept qui a été déterminé comme étant le plus probable. Les prédicats de type Accolé() et 20 Précède() sont également stockés pour la suite, et la fonction se termine dans une opération 399. Après l'opération 200 d'initialisation, la boucle de la figure 2 commence avec une opération 205 dans laquelle une fonction Max() détermine si une condition de sortie liée 25 à un nombre excessif d'exécutions de boucle est remplie. Cela permet d'éviter de rester bloqué dans une boucle de calcul trop longue (par exemple au-delà de 1000 itérations). Lorsque cette condition est remplie, la fonction de la figure 2 se termine dans une opération 299 par une erreur. En variante, l'opération 205 peut être omise. 30 Ensuite, une nouvelle boucle commence. Cette boucle commence dans une opération 210 par l'exécution d'une fonction Sem(). La fonction Sem() est dans l'exemple décrit ici mise en oeuvre par le rectificateur 6, et la figure 4 en donne un exemple de réalisation. 19 D'un point de vue général, le but poursuivi par la fonction Sem() est d'analyser le transitoire courant, qui vient d'être enrichi par la boucle précédente, et de voir s'il ne serait pas approprié de changer un ou plusieurs des identifiants de concepts des caractéristiques lexicales compte tenu des caractéristiques structurelles du transitoire. Dit autrement, la fonction Sem() vient « secouer » le sac d'identifiants de concepts disponibles pour chaque caractéristique lexicale, afin de déterminer s'il n'y a pas un nouveau concept qui donnerait plus de sens à la phrase décrite par le transitoire à ce stade, d'un point de vue sémantique. 10 Ainsi, dans une opération 400, le rectificateur 6 crée un tableau Concept[] qui recueille tous les identifiants de concept des caractéristiques lexicales du transitoire courant Tst. Ensuite, dans une opération 410, une fonction Extrap() détermine pour chacun de ces identifiants de concept la liste des identifiants de concept qui lui sont reliés dans la base 15 de données de concepts et stocke chaque liste dans une entrée d'un tableau Candid[]. Sur la base du tableau Candid[], une fonction Obsety() collecte toutes les observations reliées à chacun des concepts de chaque liste du tableau Candid[] et les regroupe dans un tableau Obs[] dans une opération 420. 20 Enfin, dans une opération 430, une fonction Infer() utilise le tableau Candid[] et le tableau Obs[] pour modifier le transitoire courant, et la fonction se termine avec une opération 499. Plus précisément, la fonction Infer() utilise un moteur d'inférence logique probabiliste 25 non-monotone qui calcule une multitude de fonctions de coût en fonctions des observations du tableau Obs[] pour chaque combinaison d'un identifiant de concept par liste du tableau Candid[]. Dit autrement, la combinaison des listes crée une combinatoire d'identifiants de concept, et les observations associées à chaque identifiant de concept sont utilisés pour calculer une fonction de coût à partir de celles-ci. 30 La fonction de coût est réalisée en déterminant une pluralité de règles à partir du transitoire. Ensuite, ces règles sont évaluées sur la base des observations en appliquant un 20 opérateur de logique multivaluée qui permet de linéariser le problème. Dans la version préférée de l'invention, c'est la t-norme de Lukasiewicz. En variante, l'opérateur pourrait être la t-norme minimale ou le produit de Harnacher. Ces règles appartiennent à trois catégories. La première catégorie de règles comprend des règles dites fréquentielles. Elles sont basées sur la fréquence de l'identifiant de concept qui est associé aux caractéristiques lexicales présentes dans le transitoire. Ces règles s'expriment sous la forme CaractLex 10 (Groupe(Car)) => Concept(Groupe(Car)). Il y a une règle par groupe d'identifiants de concept issu de la fonction ExtrapQ. La deuxième catégorie de règles comprend des règles dites de voisinage, qui sont basées sur les liens entre les identifiants de concept des caractéristiques lexicales dans la base de 15 données de concept. Pour ces règles, la base de données de concepts est explorée à partir de chaque groupe d'identifiants de concept, et cherche les identifiants de concept « voisins » dans les autres groupes d'identifiants de concept, à une distance choisie. Par exemple, si un premier groupe contient le concept « Fred », et un deuxième contient le concept « hold » (tenir en anglais), alors ces concepts sont à une distance de deux 20 concepts dans la base de données de concepts. En effet, « Fred » est un nom propre, associé au concept « être humain », et le concept « être humain » est lui-même relié à la capacité « hold » puisque les êtres humains tiennent des objets. Ainsi, lorsqu'une liaison est trouvé entre deux identifiants de concept de deux groupes distincts à une distance choisies dans la base de données de concepts, une règle de voisinage est créée. Ces règles 25 s'expriment sous la forme : CaractLex(Groupe(Carl))& Caract Lex(Group e(C ar2))& Li en(Groupe(Carl),Groupe(Car 2)) => Concept(Groupe(Car2)) Enfin, la troisième catégorie de règles comprend des règles dites structurelles, car elles 30 sont issues des liens sémantiques établis entre les caractéristiques lexicales au sein du transitoire. Ces règles sont donc tirées des attributs sémantiques des caractéristiques issues des constructions structurelles qui lient entre elles deux caractéristiques lexicales. 21 Par exemple, s'il a été identifié que la caractéristique lexicale associée à la chaîne « Fred » est liée à la caractéristique lexicale associée à la chaîne « holds » par un attribut sémantique de type « acteur », alors une règle correspondante vient remplacer la règle de deuxième catégorie qui liait ces deux caractéristiques lexicales. Ces règles s'expriment donc sous la forme : CaractLex(Groupe(Carl))& Caract Lex(Group e(C ar2))8.4. AttSem (Groupe(Carl), Groupe( Car2)) Concept(Groupe(Car2)) La fonction de coût vient instancier ces règles avec les observations choisies en fonction 10 de la combinatoire d'identifiants de concepts de chaque groupe issu de la fonction ExtrapO. L'optimisation de cette fonction de coût permet de déterminer la combinaison de chaque identifiant de concept de chaque liste qui offre la meilleure sémantique pour le transitoire courant, dont les caractéristiques lexicales sont ainsi mises à jour avec les nouveaux identifiants de concept qui sont considérés comme plus pertinents. 15 11 apparaît donc que, lorsque le transitoire ne contient que des constructions lexicales, il n'y a que des règles de première catégorie et de deuxième catégorie, et la fonction de coût est basée sur la co-occurrence des identifiants de concept dans la base de données de concepts. Puis, au fur et à mesure que les constructions structurelles rajoutent des liens 20 sémantiques entre les caractéristiques lexicales dans le transitoire, des règles de troisième catégorie, beaucoup plus discriminantes, sont introduites dans la fonction de coût et vont la contraindre fortement. La Demanderesse a découvert que l'utilisation d'un moteur d'inférence logique 25 probabiliste non-monotone permet d'offrir pour la première fois un résultat satisfaisant pour implémenter une méthode à base de constructions linguistiques. En effet, la fonction Sem(), grâce à l'ajustement sémantique qu'elle offre à chaque exécution de la boucle, est fondamentale dans l'obtention d'un résultat favorable. 30 La Demanderesse a en outre découvert qu'il était particulièrement avantageux d'utiliser un moteur d'inférence incluant un optimisateur utilisant l'algorithme des multiplicateurs avec directions alternées (ou ADMIM pour « Alternating Direction Method of 22 Multipliers » en anglais). En effet, l'utilisation d'un tel optimisateur permet de réduire les coûts de temps de calcul en linéarisant le problème, alors que le problème de base est de type NP, c'est-à-dire une combinatoire de toutes les variantes de chaque liste entre elles, multipliée par la quantité d'observations pour chaque membre de chaque liste. Une fois l'ajustement sémantique réalisé, la boucle se poursuit avec une boucle qui va tester chacune des constructions structurelles modèles sur toutes les caractéristiques du transitoire et déterminer celles qui sont susceptibles de s'appliquer. Pour cela, dans une opération 220 un tableau ConStr[] des constructions structurelles modèles est dépilé, et 10 dans une opération 230, la construction structurelle c issue de l'opération 220 est testée avec toutes les caractéristiques du transitoire courant dans une fonction Match°. La fonction Match() est exécutée par l'apparieur 8 et la figure 5 représente un exemple de mise en oeuvre de cette fonction. D'une manière générale, la fonction Match() analyse 15 chacune des conditions de la construction structurelle c et construit les n-uplets de conditions qui satisfont les conditions de la construction structurelle. Ainsi, dans une opération 500 la liste L[] des conditions de la construction c est récupérée au moyen d'une fonction Locks[]. Ensuite, une boucle est lancée dans laquelle cette liste est dépilée dans une opération 510 et les caractéristiques du transitoire courant sont chacune comparées à 20 la condition courante. Pour cela, le transitoire est dépilé dans une opération 520 et la caractéristique f correspondante comparée à la condition 1 courante dans une opération 530. Si la caractéristique f satisfait la condition 1, alors la caractéristique suivante est testée en répétant l'opération 520. Si la caractéristique f satisfait la condition, alors une fonction AddFt() est exécutée dans une opération 540. La fonction AddFt() vient ajouter 25 dans un tableau m[] tous les groupes de caractéristiques qui satisfont une condition de la construction structurelle. Ainsi, lorsqu'une caractéristique satisfait la condition 1, la fonction AddFt() détermine ceux des groupes du tableau m[] qui sont compatibles avec cette caractéristique compte tenu de l'ensemble des conditions de la construction structurelle, et ajoute la caractéristique f à tous les groupes de caractéristiques 30 compatibles. Après l'opération 540, ou si l'opération 530 est négative, alors la boucle reprend avec la caractéristique suivante dans l'opération 520. 23 Lorsque toutes les caractéristiques ont été testées pour la condition 1 courante, la boucle est répétée avec la condition suivante en répétant l'opération 510. Lorsque toutes les conditions ont été testées, dans une opération 550, une fonction Rem() réduit le tableau m[] pour vérifier les groupes de caractéristiques produits et ne garder que ceux qui sont complets, c'est-à-dire qui remplissent toutes les conditions de la construction structurelle. Ces groupes forment donc des n-uplets de caractéristiques qui sont susceptibles de se voir appliquer la construction structurelle, puis la fonction se termine dans une opération 599. Il est à noter que la fonction de la figure 5 peut être réalisée de nombreuses manières. Par 10 exemple, la boucle pourrait être réalisée de manière à exclure le test d'une caractéristique dès qu'il est détecté qu'elle ne satisfait pas une condition, par exemple en testant la valeur qui lui est associée dans le tableau m[] en début de boucle. D'autres variantes pourront être envisagées. 15 Les caractéristiques qui correspondent à la construction c sont ensuite stockées dans un tableau Con[] dans une opération 235, puis la boucle reprend avec l'opération 210. Une fois toutes les constructions structurelles modèles testées, le tableau Con[] est testé dans une opération 240. Si le tableau Con[] contient des constructions, alors les opérations 250 à 270 vont analyser ces constructions et choisir les plus pertinentes et établir une liste 20 d'options pour le cas où les constructions choisies conduiraient à une impasse dans les boucles suivantes. Si ce tableau est vide, alors aucune construction structurelle ne trouve à s'appliquer aux caractéristiques du transitoire. Comme ce test est à l'intérieur d'une boucle, cela signifie que le graphe sémantique n'a pas été totalement résolu. Le fait que le tableau Con[] soit vide indique qu'il n'est pas possible de compléter le graphe 25 sémantique. Il faudra donc explorer les options établies dans la ou les boucles précédentes. Cela sera réalisé dans une opération 290. Dans l'opération 250, une fonction Ord() traite le tableau Con[] et produit deux tableaux C2M[] et OC[]. Le tableau C2M[] contient la liste des constructions structurelles les plus 30 probables, tandis que le tableau OC[] contient la liste des options. Plus précisément, la fonction Ord() initialise une première liste en retirant le premier n-uplet du tableau Con[]. Ensuite, elle parcourt tous les autres n-uplets du tableau Con[], et, à chaque fois qu'un n- 24 uplet concerne une caractéristique du premier n-uplet, il l'introduit dans la première liste et le retire du tableau Con[]. Une fois tous les n-uplets parcourus, l'opération est répétée avec le reste du tableau Con[], jusqu'à ce que celui-ci soit vide. Il en découle un tableau C2M[] contenant les n-uplets qui ont servi à générer les listes, et un tableau OC[] qui contient les n-uplets qui ont été progressivement rajoutés à chaque liste, en tant qu'options au n-uplet correspondant du tableau C21\4]. Dans l'opération 260, les tableaux C2M[] et OC[] sont traités dans une fonction Filt() par le filtre 10 afin de déterminer s'il existe une raison de penser que le choix fréquentiel 10 n'était pas le bon. Plus précisément, dans le cas des tableaux C2M[] et OC[], on se trouve dans une situation où plusieurs constructions structurelles correspondent à la même caractéristique. Dit autrement, il existe une ambiguïté lexicale, et la fonction Filt() va essayer de la lever par une analyse sémantique. La figure 6 représente un exemple de mise en oeuvre de la fonction Filt(). 15 La fonction Filt() est une boucle qui analyse chaque conclusion du tableau C2M[] en dépilant celui-ci dans une opération 610. Ensuite, dans une opération 620, une fonction Opt() génère un tableau N[] qui reçoit la conclusion courante c et toutes les options lui correspondant dans le tableau OC[]. Puis, dans une opération 620, une fonction Rules[] 20 génère un tableau R[] de règles d'analyse. Par exemple dans le cas où deux groupes nominaux sont séparés par une virgule, il est nécessaire de déterminer s'il s'agit d'une liste ou s'il s'agit d'une apposition. Pour cela, les constructions structurelles correspondant à la liste d'une part et à l'apposition d'autre part sont traduites en deux règles qui sont stockées dans le tableau R[] avec les identifiants de concept attachés à la 25 caractéristique concernée. Ces règles sont dans l'exemple décrit ici tirées des règles de filtrage dans la mémoire 4. Plus précisément, les règles définissent des prédicats entre les caractéristiques. Néanmoins, si pour toutes les constructions du tableau N[] il n'y a aucune règle, alors rien n'est introduit dans le tableau R[] pour la construction c. Ensuite, dans une opération 630, un tableau d'observations Obs[] est généré par une fonction 30 Observ() afin de déterminer les observations en rapport avec l'identifiant de concept de la caractéristique concernée par la construction c et chacune des règles du tableau R[]. Enfin, dans une opération 640, le moteur d'inférence est à nouveau appliqué sur le tableau 25 R[] et le tableau Obs[]. Si le tableau R[] est vide, alors rien n'est fait et l'ordre établi avec les tableaux C2M[] et OC[] est maintenu. Sinon, le moteur d'inférence permet de déterminer sémantiquement celle des constructions qui est la plus pertinente sémantiquement. Il en résulte un tableau Con2[] des constructions à appliquer au transitoire courant et un tableau OC[] d'options. Lorsque toutes les constructions du tableau C2M[] ont été traitées, la fonction se termine dans une opération 699. En variante, la fonction Filt[] pourrait être omise. Une fois la fonction Filt() exécutée, les constructions choisies du tableau Con2[] sont appliquées au transitoire courant dans une 10 opération 270 par le combinateur 12 dans une fonction Merge0. La figure 7 représente un exemple de mise en oeuvre de la fonction MergeQ. Là encore, le tableau Con2[] est dépilé dans une opération 700. Ensuite, dans une opération 710, le tableau OC[] est également dépilé afin de stocker les options 15 correspondantes. Puis dans une opération 720, le transitoire courant est stocké avec les options de l'opération 710 dans une opération 720. Cette opération est cruciale car c'est elle qui permettra de parcourir de la manière la plus complète et efficace dans l'opération 290. Il y a donc un transitoire couplé à une liste d'options de constructions qui est généré avant chaque application d'une construction, et autant de solutions de repli en cas d'échec. 20 Dit autrement, les transitoires introduits dans le tableau Tst Stack[] à l'opération 720 sont tous différents les uns des autres puisqu'entre deux applications de l'opération 720, le transitoire est modifié dans l'opération 730. Ainsi, le tableau Tst Stack[] contient le détail de toutes les constructions appliquées au transitoire, une par une, et classée temporellement par la nature même de la boucle. 25 Enfin, dans une opération 730, les conclusions de la construction dépilée dans l'opération 700 sont appliquées au transitoire courant. Pour cela, si ces conclusions s'appliquent à une caractéristique existante, alors celle-ci est mise à jour. Sinon, une nouvelle caractéristique est créée dans le transitoire. Lorsque toutes les constructions ont 30 été appliquées au transitoire, la fonction Merge() se termine dans une opération 799. 26 Une fois que la fonction Merge() est terminée, une opération 280 détermine avec une fonction Goal() si la phrase a été entièrement résolue et si le graphe sémantique est fini. Pour cela, la fonction Goal() détermine si tous les jetons ont été remplis avec un identifiant de concept, si toutes les caractéristiques définissent entre elles un arbre dont toutes les branches sont reliées entre elles, c'est-à-dire s'il est possible d'atteindre toutes les caractéristiques de l'arbre à partir de chaque caractéristique, et enfin s'il n'existe pas de cycle dans la structure générée. Si c'est le cas, alors la fonction de la figure 2 se termine dans l'opération 299. Sinon, la boucle reprend avec l'opération 205 pour traiter le transitoire courant. 10 L'opération 290 consiste à dépiler le tableau Tst Stack[] alimenté par l'exécution de l'opération 720, et à reprendre la boucle à l'opération 270 en utilisant la première option. Dans ce qui précède, il apparaît donc que la fonction de la figure 2 est un algorithme 15 systématique basé sur des données connues et quasi dépourvu d'heuristiques (on pourrait qualifier les règles de filtrage d'heuristique, mais elles sont optionnelles). Cela démontre le caractère répétible du traitement du dispositif 2. De plus, le traitement du dispositif 2 est à la fois syntaxique par l'application des constructions structurelles et sémantique par l'utilisation du rectificateur 6 et du filtre 10. C'est cette approche totalement nouvelle, 20 rendue possible grâce à l'utilisation d'un moteur d'inférence logique probabiliste non- monotone qui rend possible l'application d'un modèle à base de constructions et qui produit une compréhension sémantique. Les figures 8 à 17 sont données à titre d'exemple afin d'aider à mieux comprendre le 25 fonctionnement de la boucle de la figure 2 et en particulier l'opération 290 sur la phrase « Freds holds a small match ». Dans une première étape représentée sur la figure 8, le dispositif 2 initialise le transitoire avec les constructions lexicales dans l'ordre de leur fréquence dans la base de données de 30 concepts : « Holds, verbe » « small, adjectif », « a, article de construction », « match, verbe » et « Fred, nom propre ». En variante, les constructions lexicales pourraient être classées par leur ordre dans la phrase, ou dans un ordre choisi de façon à déterminer un 27 degré de confiance dans le choix des premières constructions lexicales, et pour placer vers la fin du transitoire les constructions lexicales pour lesquelles le degré de confiance est le plus bas. A la boucle suivante, représentée sur la Figure 9, une phrase adjectivale a été créée au-dessus de « small », une phrase nominale au-dessus de « Fred », et deux phrases verbales respectivement au-dessus de « holds » et de « match ». Dans la boucle représentée sur la figure 10, une clause vient lier la phrase nominale de 10 « Fred » et la phrase verbale de « holds », puis les boucles ultérieures échouent. Cet échec remonte des les transitoires du tableau Tst Stack[] jusqu'à déterminer que l'erreur porte sur la construction lexicale de « match ». Comme « Fred » est de rang inférieur à « match », le transitoire est réduit à la figure 11 « match, nom commun » et « Fred, nom propre » sont alors testés comme option, puis les figures 12 à 15 montrent le 15 développement des constructions sur cette base. Enfin, avec la figure 16 la phrase verbale est conclue et la structure est fermée avec une clause affirmative représentée sur la figure 17. Afin de mieux comprendre les règles de première, deuxième et troisième catégorie, celles-ci vont être explicitées pour l'exemple 20 des figures 16 et 17. Sur la figure 16, un seul lien sémantique est établi entre les caractéristiques lexicales le lien d'attribut entre « small » et « match ». Ainsi, le jeu de règles produit sera : CaractLex(Groupe(Fred))=>Concept(Groupe(Fred)) 25 CaractLex(Groupe(hold))=>Concept(Groupe(hold)) CaractLex(Groupe(a))=>Concept(Groupe(a)) CaractLex(Groupe(small))=>Concept(Groupe(small)) CaractLex(Groupe(match))=>Concept(Groupe(match)) CaractLex(Groupe(Fred))&taractLex(Groupe(hol d))&Li en(Groupe(Fred),Groupe(hol d 30 )) Concept(Groupe(hold)) CaractLex(Groupe(hold))&CaractLex(Groupe(match))&Lien(Groupe(hold),Groupe (ma tch)) => Concept(Groupe(match)) 28 CaractLex(Groupe(small))&CaractLex(Groupe(match))&Attrib(Groupe(small), Groupe( match)) => Concept(Groupe(match)) Sur la figure 17, deux autres liens sémantiques sont établis entre les caractéristiques lexicales : le lien d'acteur de « Fred » sur « hold » et le lien de thème entre « hold » et « match ». Ainsi, deux règles de troisième catégorie sont ajoutées et remplacent les règles de deuxième catégorie de la figure 16 : 10 CaractLex(Groupe(Fred))&CaractLex(Groupe(hold))&Acteur(Groupe(Fred),Groupe (ho 1d)) => Concept(Groupe(hold)) CaractLex(Groupe(hold))&CaractLex(Groupe(match))&Thème(Groupe(hold), Groupe( match)) => Concept(Groupe(match)) 15 La figure 18 représente le transitoire complet associé à l'exemple de la figure 17, et la figure 19 représente le graphe sémantique qui lui correspond. Ainsi, il apparaît que les caractéristiques lexicales sont liées entre elles par des attributs sémantiques dans des caractéristiques non lexicales. Cela transparaît sur la figure 18 par la liaison d'éléments de type ?argXX et ?refYY ou de type ?argXX et ?argYY. 20 Ainsi, il apparaît les liens suivants : Actor ?arg27 ?ref28, Theme ?arg27 ?ref28, Attr ?arg15 ?arg17, NonldentifiableReferent ?arg 2 ?arg17. 25 La figure 19 traduit ces liens sémantiques, et permet de représenter le graphe sémantique qui décrit le sens de la phrase, tel que produit par le dispositif 2. Le dispositif 2 produit donc un transitoire final qui a une structure d'arbre qui contient tous les liens à la fois syntaxiques et sémantiques de la phrase produite en entier. Cet arbre permet de produire un graphe sémantique qui donne le sens de la phrase. 30 Cela est vraiment fondamental car il est possible de créer de manière automatique, sans intervention humaine, une couche de description sémantique d'un texte, qui devient donc 29 interrogeable. De plus, par la nature même du dispositif 2, cette couche de description sémantique peut être enrichie de manière incrémentielle, en fournissant de nouvelles phrases, sans avoir à refaire tout l'entraînement. De plus, cette couche est interrogeable, et permet d'analyser ce que comprend le dispositif 2, REVENDICATIONS1 Dispositif de traitement automatique de texte par ordinateur, comprenant une mémoire (4) agencée pour recevoir des données de texte à analyser sous la forme de jetons comprenant chacun une chaîne de caractères et un identifiant de jeton unique, une base de données de concepts associant des chaînes de caractères et des identifiants de concept, certains au moins des identifiants de concept étant associés entre eux, des données de constructions lexicales modèles et des données de constructions structurelles modèles, comprenant chacune une ou plusieurs conditions d'application à une caractéristique et une ou plusieurs conclusions constituant des éléments à appliquer à une caractéristique, et une base de données d'observations associant au moins deux identifiants de concept, un type de relation et une valeur d'observation indiquant une probabilité de véracité du type de relation entre les au moins deux identifiants de concept, le dispositif (2) étant agencé pour travailler de manière répétitive sur un transitoire comprenant des caractéristiques lexicales et des caractéristiques structurelles produites en appliquant des constructions lexicales modèles et des constructions structurelles modèles, le transitoire étant initialisé avec des caractéristiques lexicales comprenant pour chaque jeton un identifiant de concept dont la fréquence est la plus importante dans la base de données de concepts et qui est associé à la chaîne de caractère du jeton, le dispositif (2) comprenant en outre un rectificateur (6) agencé pour déterminer pour chaque caractéristique lexicale d'un transitoire une liste d'identifiants de concept associés à l'identifiant de concept de cette caractéristique lexicale, pour déterminer un ensemble d'observations correspondant aux identifiants de concept des listes ainsi déterminées, et pour appliquer un moteur d'inférence logique probabiliste non-monotone pour déterminer l'identifiant de concept de chaque liste tel que les valeurs d'observations associées à ces identifiants de concept minimisent une fonction de coût définie en appliquant un opérateur de logique multivaluée à une ou plusieurs règles tirées du contenu des caractéristiques du transitoire et instanciées avec des valeurs d'observations correspondantes, et pour remplacer 30 31 les identifiants de concept des caractéristiques lexicales du transitoire par les identifiants de concept ainsi déterminés, un apparieur (8) agencé pour déterminer parmi les constructions structurelles modèles celles dont la ou les conditions s'appliquent à une ou 5 plusieurs des caractéristiques du transitoire, et pour retourner la liste des constructions structurelles avec la ou les caractéristiques auxquelles s'appliquent leurs conditions, le dispositif (2) étant en outre agencé pour classer les constructions structurelles associées à chaque caractéristique par fréquence d' uti I i sati on, la première construction structurelle devant être appliquée au 10 transitoire et les autres formant une liste d'options, et un combinateur (12) agencé pour exécuter de manière séquentielle la sélection d'une construction structurelle devant être appliquée au transitoire, le stockage d'une copie du transitoire avec la liste d'options associée à la construction structurelle, et l'application de la construction structurelle devant être 15 appliquée au transitoire à la ou les caractéristiques du transitoire à laquelle cette construction structurelle a été associée par l'apparieur (8), et pour répéter cette exécution séquentielle sur le transitoire ainsi modifié avec la construction structurelle devant être appliquée au transitoire suivante, le dispositif (2) étant en outre agencé pour déterminer, après l'exécution du 20 combinateur (12), si les caractéristiques du transitoire produit définissent un arbre dont tous les noeuds sont liés entre eux et dépourvu de cycle, pour retourner cet arbre si c'est le cas, et pour répéter l'exécution du rectificateur (6), de l'apparieur (8) et du combinateur (12) sur le dernier transitoire produit sinon, le dispositif (2) étant en outre agencé, lorsque l'apparieur (8) ne retourne aucune 25 construction structurelle à appliquer au transitoire, pour remplacer le transitoire courant par la copie du transitoire la plus récente, et pour exécuter le combinateur (12) avec la première construction de la liste d'options en tant que construction structurelle à appliquer au transitoire. 30 2. Dispositif selon la revendication 1, dans lequel le moteur d'inférence logique probabiliste non-monotone comprend un optimisateur utilisant l'algorithme des multiplicateurs avec directions alternées. 32 3. Dispositif selon la revendication 1 ou 2, comprenant en outre un filtre (10) agencé pour déterminer, pour chaque construction structurelle devant être appliquée et la liste d'options associée un jeu de règles, pour déterminer un jeu d'observations à partir du jeu de règles et du ou des identifiants de concept associé à la caractéristique à laquelle doit être appliquée la construction structurelle devant être appliquée, et pour appliquer le moteur d'inférence logique probabiliste non-monotone avec le jeu de règles et le jeu d'observation afin de déterminer la construction structurelle devant être appliquée au transitoire et la liste d'options. 10 4. Dispositif selon l'une des revendications précédentes, dans lequel le rectificateur (6) définit des règles fréquentielles à partir de caractéristiques lexicales du transitoire, des règles de voisinage à partir des identifiants de concept des caractéristiques lexicales du transitoire et des identifiants de concept qui leur sont associés dans la base de données de concept à une distance choisie, et des règles 15 structurelles tirées d'attributs sémantiques de caractéristiques non lexicales du transitoire liant entre elles deux caractéristiques lexicales. 5. Dispositif selon l'une des revendications 1 à 4, dans lequel le combinateur (12) est agencé pour stocker uniquement la copie du transitoire avec la liste d'options 20 associée à la construction structurelle, et en ce que, lorsque l'apparieur (8) ne retourne aucune construction structurelle à appliquer au transitoire, pour remplacer le transitoire courant par la copie du transitoire la plus récente, et pour exécuter le combinateur (12) avec la première construction de la liste d'options en tant que construction structurelle à appliquer au transitoire, puis en répétant 25 l'application du rectifieur (6), de l'apparieur (8) et du combinateur (12) avec le transitoire résultant. 6. Dispositif selon l'une des revendications 1 à 4, dans lequel le combinateur (12) est agencé pour stocker les constructions structurelles restantes devant être 30 appliquées au transitoire en même temps que la copie du transitoire avec la liste d'options associée à la construction structurelle, et en ce que lorsque l'apparieur (8) ne retourne aucune construction structurelle à appliquer au transitoire, pour remplacer le transitoire courant par la copie du transitoire la plus récente, et pour 33 exécuter le combinateur (12) avec la première construction de la liste d'options en tant que construction structurelle à appliquer au transitoire ainsi que les constructions structurelles restantes, puis en répétant l'application du rectifieur (6), de l'apparieur (8) et du combinateur (12) avec le transitoire résultant. 7. Dispositif selon l'une des revendications précédentes, agencé pour analyser l'arbre retourné et pour produire un graphe sémantique dont les noeuds sont formés par les caractéristiques lexicales et leur identifiant de concept, et donc les liens sont définis par les attributs sémantiques de caractéristiques non lexicales liant 10 entre elles deux caractéristiques lexicales. 8. Dispositif selon l'une des revendications précédentes, dans lequel le moteur d'inférence est agencé pour appliquer un opérateur de logique multivaluée choisi parmi le groupe comprenant la t-norme de Lukasiewicz, la t-norme minimale et 15 le produit de Harnacher. 9. Procédé de traitement automatique de texte mis en oeuvre par ordinateur, comprenant les opérations suivantes : 20 a) recevoir des données de texte à analyser sous la forme de jetons comprenant chacun une chaîne de caractères et un identifiant de jeton unique, une base de données de concepts associant des chaînes de caractères et des identifiants de concept, certains au moins des identifiants de concept étant associés entre eux, des données de constructions lexicales modèles et des données de 25 constructions structurelles modèles, comprenant chacune une ou plusieurs conditions d'application à une caractéristique et une ou plusieurs conclusions constituant des éléments à appliquer à une caractéristique, et une base de données d'observations associant au moins deux identifiants de concept, un type de relation et une valeur d'observation indiquant une probabilité de 30 véracité du type de relation entre les au moins deux identifiants de concept, b) initialiser un transitoire pouvant comprendre des caractéristiques lexicales et des caractéristiques structurelles produites en appliquant des constructions lexicales modèles et des constructions structurelles modèles, avec des 34 caractéristiques lexicales comprenant pour chaque jeton un identifiant de concept dont la fréquence est la plus importante dans la base de données de concepts et qui est associé à la chaîne de caractère du jeton, c) travailler de manière répétitive sur le transitoire en répétant les opérations 5 successives suivantes : cl) déterminer pour chaque caractéristique lexicale d'un transitoire une liste d'identifiants de concept associés à l'identifiant de concept de cette caractéristique lexicale, pour déterminer un ensemble d'observations correspondant aux identifiants de concept des listes 10 ainsi déterminées, et pour appliquer un moteur d'inférence logique probabiliste non-monotone pour déterminer l'identifiant de concept de chaque liste tel que les valeurs d'observations associées à ces identifiants de concept minimisent une fonction de coût définie en appliquant un opérateur de logique multivaluée à une ou plusieurs 15 règles tirées du contenu des caractéristiques du transitoire et instanciées avec des valeurs d'observations correspondantes, et pour remplacer les identifiants de concept des caractéristiques lexicales du transitoire par les identifiants de concept ainsi déterminés, c2) déterminer parmi les constructions structurelles modèles celles dont la 20 ou les conditions s'appliquent à une ou plusieurs des caractéristiques du transitoire, et pour retourner la liste des constructions structurelles avec la ou les caractéristiques auxquelles s'appliquent leurs conditions, c3) classer les constructions structurelles associées à chaque 25 caractéristique par fréquence d'utilisation, la première construction structurelle devant être appliquée au transitoire et les autres formant une liste d'options, et c4) exécuter de manière séquentielle la sélection d'une construction structurelle devant être appliquée au transitoire, le stockage d'une 30 copie du transitoire avec la liste d'options associée à la construction structurelle, et l'application de la construction structurelle devant être appliquée au transitoire à la ou les caractéristiques du transitoire à laquelle cette construction structurelle a été associée par l'apparieur (8), et pour répéter cette exécution séquentielle sur le transitoire ainsi modifié avec la construction structurelle devant être appliquée au transitoire suivante, c5) déterminer, après l'exécution du combinateur (12), si les caractéristiques du transitoire produit définissent un arbre dont tous les noeuds sont liés entre eux et dépourvu de cycle, pour retourner cet arbre si c'est le cas, et pour répéter les opérations cl) à c5) sur le transitoire courant sinon, 10 c6) si l'opération c2) ne retourne aucune construction structurelle à appliquer au transitoire, remplacer le transitoire courant par la copie du transitoire la plus récente, exécuter l'opération c5) avec la première construction de la liste d'options en tant que construction structurelle à appliquer au transitoire. 15 10. Procédé selon la revendication 9, dans lequel l'application du moteur d'inférence logique probabiliste non-monotone comprend l'application d'un opti mi sateur utilisant l'algorithme des multiplicateurs avec directions alternées. 20 11. Procédé selon la revendication 9 ou 10, comprenant en outre, entre l'opération c3) et l'opération c4) : c7) déterminer, pour chaque construction structurelle devant être appliquée et la liste d'options associée un jeu de règles, déterminer un jeu d'observations à partir du jeu de règles et du ou des identifiants de 25 concept associé à la caractéristique à laquelle doit être appliquée la construction structurelle devant être appliquée, et appliquer le moteur d'inférence logique probabiliste non-monotone avec le jeu de règles et le jeu d'observation afin de déterminer la construction structurelle devant être appliquée au transitoire et la liste d'options. 30 12. Procédé selon l'une des revendications 9 à 11, dans lequel l'opération cl) comprend la définition de règles fréquentielles à partir de caractéristiques 36 lexicales du transitoire, de règles de voisinage à partir des identifiants de concept des caractéristiques lexicales du transitoire et des identifiants de concept qui leur sont associés dans la base de données de concept à une distance choisie, et de règles structurelles tirées d'attributs sémantiques de caractéristiques non lexicales du transitoire liant entre elles deux caractéristiques lexicales. 13. Procédé selon l'une des revendications 9 à 12, dans lequel l'opération c4) stocker uniquement la copie du transitoire avec la liste d'options associée à la construction structurelle, et dans lequel, après de l'exécution de l'opération c7), les opérations 10 cl) à c7) sont répétées sur le transitoire courant. 14. Procédé selon l'une des revendications 9 à 12, dans lequel l'opération c4) stocke les constructions structurelles restantes devant être appliquées au transitoire en même temps que la copie du transitoire avec la liste d'options associée à la 15 construction structurelle, et dans lequel, après l'exécution de l'opération c7), l'opération c5) est appliquée avec les constructions structurelles restantes, puis en répétant l'application du rectifieur (6), puis , les opérations cl) à c7) sont répétées sur le transitoire courant. 20 15. Procédé selon l'une des revendications 9 à 14, comprenant en outre l'opération suivante : d) analyser l'arbre retourné par l'opération c6) et produire un graphe sémantique dont les noeuds sont formés par les caractéristiques lexicales et leur identifiant de concept, et donc les liens sont définis par les attributs sémantiques de 25 caractéristiques non lexicales liant entre elles deux caractéristiques lexicales.