Brevet FR2838212A1 — publié le 20031010

PROCEDE DECODAGE ETDE GENERATION DETEXTES La présente invention concerne un procédé de codage et de génération de textes, permettant notamment de générer des textes en diverses langues. Un texte est une suite écrite de signes qui dépendent de la langue et du code d'écriture utilisés pour écrire le texte. Ainsi, les signes sont formés par une lettre ou une association de lettres, par exemple en langue anglaise ou en langue française (mot), par un idéogramme ou une association d'idéogrammes, par exemple en langue chinoise, ou par l'utilisation de symboles tels que des points et des traits pour un texte utilisant le code morse. Les textes sont habituellement utilisés par leur(s) rédacteur(s) pour communiquer une information à leur(s) lecteur(s). Ainsi, le texte "aujourd'hui il pleut à Paris" indique à un lecteur une situation météorologique (pluvieuse) à un instant (aujourd'hui) et à un lieu (Paris). Lorsque le rédacteur d'un texte veut utiliser ce dernier pour communiquer une information identique à tous ses lecteurs, comme dans l'exemple de la situation météorologique ci-dessus, ce texte doit être univoque. En d'autres termes, le sens de ce texte doit être identique pour tous ses lecteurs. Pour cela, il est généralement nécessaire que le rédacteur du texte respecte la (ou les) grammaire(s) propre(s) à la (ou aux) langue(s) utilisée(s) dans la rédaction du texte, cette grammaire comprenant généralement deux catégories de règles: - Une première catégorie concerne les règles de syntaxe d'un texte, c'est-à-dire les règles relatives à l'influence de premiers signes d'un texte sur l'écriture de deuxième(s) signe(s) de ce même texte. Par exemple, en considérant la langue française, cette catégorie comprend les règles d'accord entre un adjectif et le substantif auquel il se rapporte, les règles de déclinaison d'un verbe en fonction de son sujet, ou l'ordre d'écriture des mots dans une phrase en fonction de la nature de cette dernière (exclamative, interrogative, etc). Une erreur de syntaxe dans l'écriture d'un texte obscurcit le sens de ce texte, ce dernier pouvant devenir ambigu. Ainsi, dans le texte "l'étoile brillent", la syntaxe n'est pas respectée, l'accord de nombre entre le sujet "l'étoile" et le verbe "brillent" n'étant pas réalisé. Dès lors, le texte est équivoque et l'on peut interpréter ce texte de deux façons : soit le texte se réfère à une seule étoile (en considérant que le verbe est mal accordé), soit le texte se réfère à une pluralité d'étoiles (en considérant que le sujet n'a pas été écrit correctement). Dans la suite, on utilise l'expression "contraintes syntaxiques d'un signe" pour définir l'ensemble des relations syntaxiques entre ce signe et les signes restants d'un texte. Par exemple, en considérant la langue allemande, les contraintes syntaxiques d'un verbe comprennent le nombre et le temps auxquels ce verbe doit se décliner. Et les contraintes syntaxiques d'un adjectif épithète comprennent le genre et le nombre auxquels cet adjectif doit être accordé. On définit comme "formes d'un signe" l'ensemble d'écritures possibles d'un signe lorsque ses contraintes syntaxiques varient. Par exemple, les formes de l'adjectif "beau" français sont beau (masculin singulier), belle (féminin singulier), beaux (masculin pluriel) et belles (féminin pluriel). Finalement, on dénomme "radical" la partie d'un signe qui n'est pas modifiée lorsque les contraintes syntaxiques de ce signe varient, et "terminaison" les parties devant être juxtaposées au radical pour obtenir le signe. Ainsi, "be" est le radical de beau, et "au", "Ile" et "aux" ses différentes terminaisons en langue française. - Une deuxième catégorie de règles concerne la sémantique du texte, c'est-à-dire les règles relatives aux relations de sens existant entre les signes de ce texte. Par exemple, dans le texte "L'homme prit son chapeau puis il partit", il existe une relation d'identification entre le sujet du verbe "prit" et le sujet du verbe "partit", l'utilisation du pronom "il" étant univoque pour tout lecteur de ce texte. De façon similaire aux règles syntaxiques, une irrégularité sémantique dans un texte rend ambigu ce dernier. Par exemple, "Jean prit son chapeau et Paul prit ses gants, puis il partit" a un sens ambigu, "il" pouvant se référer à "Jean" ou à "Paul". Les règles de sémantique définissent aussi les relations de sens entre des ensembles de signes, dénommés cidessous syntagmes, qui disposent d'un sens propre pouvant différer du sens littéral transmis par le groupe de signes du syntagme. Ainsi, le syntagme nominal "un pied de nez", le syntagme verbal "faire le gros dos" ou le syntagme adverbial "comme un cheveu dans la soupe" sont des exemples de syntagmes disposant d'un sens figuré dans la langue française. Par ailleurs, il est connu de définir le champ sémantique d'un premier signe comme l'ensemble des seconds signes dont le sens a un lien avec le sens du premier signe. Par exemple, les signes "joie", "bonheur" et "affection" sont généralement attribués au champ sémantique du signe "amour". Dans la majorité des langues, les règles de syntaxe et de sémantique sont nombreuses et souffrent fréquemment d'exceptions. Par ailleurs, ces règles sont en constante évolution, cette évolution étant propre à chaque langue. De ce fait, les générateurs automatiques de textes connus effectuent des opérations relativement simples, comme des substitutions ou des combinaisons de syntagmes indépendants, décrites ci-dessous à l'aide de trois modes de génération de texte: Selon un premier mode, on effectue une combinaison entre syntagmes prédéterminés tels que les règles sémantiques et syntaxiques sont respectées au sein de chaque syntagme. Par exemple, la combinaison d'un des trois syntagmes nominaux "le soleil", "la lune", "l'étoile" avec un des deux syntagmes verbaux "brille", "resplendit" et un des deux syntagmes adverbiaux "comme une perle", "comme un diamant", permet d'obtenir une phrase cohérente telle que "le soleil brille comme un diamant". On rappelle qu'un syntagme est une unité grammaticale composée d'un groupe de mots ayant une fonction propre telle que complément ou verbe. Les syntagmes combinés sont indépendants d'un point de vue syntaxique. En d'autres termes, le choix d'un premier syntagme n'entraîne pas de modifications dans le deuxième syntagme qui lui est combiné et ces combinaisons ne nécessitent pas de considérer des règles syntaxiques. Par ailleurs, le respect des règles sémantiques entre les syntagmes combinés est vérifié préalablement en considérant chaque combinaison possible entre les syntagmes utilisés. Un tel procédé de combinaisons présente de nombreuses limitations. Ainsi, la génération de texte est limitée aux combinaisons possibles de syntagmes en fonction d'une seule langue de génération. En effet, chaque langue a des règles syntaxiques propres vis-à-vis des influences entre les syntagmes. Par exemple, en français, un des syntagmes sujets "Marie-France, la femme d'Albert" ou "Martine, l'assistante de Nathalie" peut être combiné avec un des syntagmes verbaux "prend sa voiture" ou "prépare son café" conformément à la méthode précédemment décrite, générant alors un texte tel que "Martine, l'assistante de Nathalie, prépare son café". Toutefois, en anglais, ces syntagmes sujets "Françoise, the wife of Albert" ou "Martine, the assistant of Nathalie" ne peuvent pas être combinés avec des syntagmes compléments tels que "takes his car" ou "prepares his coffee", l'accord entre l'adjectif possessif et le sujet devant être pris en compte. Selon un deuxième mode de génération, on remplace un premier signe d'un texte par un deuxième signe dont le champ sémantique est associé à ce premier signe. Par exemple, si on considère que les signes "étinceler" ou "scintiller" font partie du champ lexical du signe "briller" en tant que synonymes, conformément au deuxième mode de génération, "le ciel brille comme des diamants" peut être transformé en "le soleil scintille comme un diamant" ou en "le soleil étincelle comme un diamant". Ainsi, deux nouveaux textes sont générés à partir d'un premier texte. Ce deuxième mode de génération prend en compte les rapports syntaxiques et sémantiques entre les différents signes. En effet, les règles sémantiques sont utilisées pour remplacer un premier signe par un deuxième signe appartenant à un même champ sémantique tandis que les règles syntaxiques s'appliquent pour effectuer un tel remplacement. Ainsi, dans l'exemple précédent, le verbe briller est remplacé par le verbe scintiller à la personne et au temps requis. Ce deuxième mode de génération présente l'inconvénient de nécessiter une intervention manuelle puisque, sans une telle intervention, il n'est pas possible d'effectuer une modification de façon automatique. Par exemple, dans la phrase la propriétaire de la maison qui est là , il n'est pas possible de déterminer de façon automatique à quel substantif, maison ou propriétaire, se réfère le pronom qui . Dès lors, seule une intervention manuelle, prenant en compte le contexte de la phrase et les règles sémantiques et syntaxiques propres à chaque langue peut déterminer le substantif auquel se rapporte le pronom qui. Selon un troisième mode de génération, décrit cidessous à l'aide des figures la, lb et le, on utilise des structures grammaticales prédéterminées propres à une langue et à certains signes pour générer un texte, la structure grammaticale d'un signe étant déterminée par les fonctions grammaticales (sujet, verbe, complément) nécessaires à l'utilisation de ce signe. Dans cet exemple, la structure sujet 1 verbe complément d'objet direct, nécessaire au verbe aimer dans la langue française, est utilisée en remplaçant les indications fonctionnelles (sujet, complément, ...) par des mots. Un texte est ainsi généré lorsque tous ces remplacements sont effectués. Sur la figure la est représentée une structure 10 grammaticale comprenant un syntagme nominal 12 " Agent", sujet du verbe "aimer" compris dans un syntagme verbal 14, ce dernier ayant un syntagme nominal 16 "objet" comme complément d'objet. Sur la figure lb est représenté un développement du syntagme nominal 16 "objet" en un signe, c'est-à-dire un mot dans cet exemple. A cet effet, le syntagme 16 nominal "objet" est aussi développé au moyen d'une structure grammaticale propre à un substantif 18 relatif au champ sémantique "homme". Cette structure comprend deux syntagmes nominaux 20 et 22 relatifs, respectivement, à des champs sémantiques "nom" et "partie d'un corps". Il apparaît qu'une analyse sémantique du verbe aimer, en langue française, a permis de déterminer préalablement qu'un signe du champ sémantique "homme" pouvait être un complément du verbe aimer. De même, une telle analyse révèle qu'un syntagme nominal du type "le visage de Pierre" indiquant un élément du corps d'une personne, tel que "le bras de Pierre", pouvait être complément du verbe aimer comme représenté sur la figure le. Cette troisième méthode de génération présente à nouveau l'inconvénient de dépendre d'une langue unique de génération. En effet, les champs lexicaux relatifs à un signe sont propres à chaque langue, tout comme l'ordre dans lequel les éléments doivent être écrits dans une phrase. Ainsi, la structure sujet 1 aimer 1 complément peut être inversée en langues allemande ou espagnole (complément#aimer#sujet), contrairement à la langue française. Par ailleurs, les méthodes de génération précédemment décrites présentent l'inconvénient de nécessiter une capacité importante de mémorisation et de transmission des données. En effet, un générateur de texte utilisant une des méthodes précédemment décrites doit attribuer des moyens de mémorisation et de transmission de données distincts à chacune des langues de génération, par exemple pour mémoriser des structures grammaticales propres à une langue. La présente invention résout le problème de la dépendance des générateurs de texte vis-à-vis d'une langue de génération. En d'autres termes, l'invention permet de s'affranchir des contraintes propres à une langue pour générer un texte dans une langue, étant entendu que la génération d'un texte comprend la traduction d'un texte. Cette invention résulte de la constatation que l'on peut définir un champ sémantique pour tout premier signe d'un texte par un ensemble, ou classe, de seconds signes pouvant remplacer ce premier signe dans ce texte. Elle résulte aussi de la constatation que l'on peut déterminer l'ensemble des relations, ou contraintes syntaxiques, existant entre ce premier signe et les seconds signes du texte à générer. Ainsi, l'invention concerne un procédé de codage de texte automatique caractérisé en ce qu'on code des signes par des données telles que pour une donnée sont définis des paramètres d'une métalangue représentant un champ sémantique, des contraintes syntaxiques et une langue de génération. Ces données constituent ainsi un texte dans une métalangue telle qu'à partir de celle-ci, il est possible de générer un texte en toute langue, les règles de grammaire de cette langue étant respectées. Pour cela, on remplace chaque donnée par un signe, appartenant à une langue désignée de génération, dont le champ sémantique correspond au champ sémantique défini par la donnée et dont la forme, c'est-à-dire le choix de sa déclinaison, correspond aux contraintes syntaxiques associées à la donnée. En d'autres termes, un générateur de texte conforme à l'invention utilise la sémantique et la syntaxique pour générer un texte dans une langue donnée de la façon suivante : le champ sémantique et la langue indiqués par une donnée permettent de sélectionner le ou les signes pouvant remplacer cette donnée en respectant un sens et une langue de génération prédéterminés, tandis que les contraintes syntaxiques permettent de sélectionner, dans un premier temps, une déclinaison de ce signe, c'est-à-dire une forme, qui correspond aux contraintes syntaxiques définies et, dans un deuxième temps, un ordre d'écriture ou position de ce signe par rapport aux autres signes. En outre, un générateur de texte utilisant un procédé conforme à l'invention peut générer des textes suivant plusieurs langues en nécessitant une capacité de mémorisation inférieure à celle d'un générateur de texte connu. En effet, les moyens de mémorisation d'un tel ordinateur peuvent être partagés entre plusieurs langues, par exemple pour identifier des structures grammaticales acceptées par ces langues. Selon une réalisation, on définit le champ sémantique d'une donnée en lui associant des groupes ou classes de signes, le champ sémantique de cette donnée étant un identifiant, ou clef, de ces classes. Dans ce cas, dans une réalisation, chaque classe comprenant des signes d'une même langue, on associe des classes de différentes langues à une même clef de classe. Dans une réalisation, on intègre dans une première classe la clef d'une deuxième classe. Selon une réalisation, on associe un descripteur contextuel à une donnée pour exclure ou imposer une association entre des classes de signes et une donnée. Dans une réalisation, on code à l'aide d'un descripteur syntaxique au moins une des contraintes syntaxiques suivantes : une négation, un temps et/ou une personne de conjugaison, un pronom sujet, un pronom complément, un ordre d'écriture, un genre et/ou un nombre, un déterminant. Selon une réalisation, on code séparément, dans une donnée, la partie invariable et les déclinaisons d'un signe. Dans une réalisation, chaque donnée code un champ sémantique, des contraintes syntaxiques et/ou une langue de génération à l'aide de marqueurs compris dans cette donnée et/ou à l'aide de marqueur(s) extérieur(s) à cette donnée. L'invention concerne aussi un procédé de génération automatique de texte utilisant des signes codés selon l'une des réalisations précédentes d'un procédé de codage. Dans une réalisation, pour générer un texte, on impose un ordre à un ensemble de données, on substitue chaque donnée par un (ou plusieurs) signe(s) propre(s) à la langue codée par cette donnée, puis on génère un texte en écrivant chaque signe généré dans l'ordre de substitution. Selon une réalisation, on remplace chaque donnée par un signe appartenant à une classe dont la clef correspond au champ sémantique de la donnée. Dans une réalisation utilisant un descripteur contextuel pour exclure ou imposer une association entre des classes de signes et une donnée, le descripteur contextuel est modifié au cours de la génération du texte de façon à augmenter le nombre de classes exclues ou imposées. Selon une réalisation, des bases de données déterminant la partie invariable et les terminaisons de signes associés au champ sémantique d'une donnée, on remplace cette donnée par une donnée comprenant la partie invariable et les terminaisons d'un signe associé. Dans ce cas, selon une réalisation, à partir des contraintes syntaxiques associées à une donnée, on choisit une terminaison qui, combinée à la partie invariable, génère un signe respectant les contraintes syntaxiques associées à la donnée remplacée. Dans une réalisation, on mémorise dans une base la partie invariable et les terminaisons des signes d'une même langue. Dans une réalisation, on mémorise dans chaque base la partie invariable et les terminaisons de signes relatifs à une utilisation particulière, telle qu'un domaine technique ou un lexique juridique. L'invention concerne aussi un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution d'un procédé selon l'un quelconque des procédés précédemment définis lorsque ce programme est exécuté sur un ordinateur. Il convient de souligner qu'un produit programme d'ordinateur comprend tout support physique du logiciel, tel qu'un disque ou une disquette, ainsi qu'un support du signal, par exemple optique ou électronique. L'invention concerne également un dispositif de génération automatique de texte caractérisé en ce qu'il comprend des moyens pour générer un texte à partir de données codées selon l'un des procédés précédemment définis. Un tel dispositif peut, par exemple, comprendre un serveur relié à plusieurs terminaux à partir desquels il est possible de coder des données conformément à une des réalisations précédentes décrites, ces données codées étant transmises au serveur de façon à ce qu'il génère un texte conformément à un des procédés précédemment définis. L'invention concerne aussi un serveur de génération de texte caractérisé en ce qu'il comprend des moyens pour générer un texte à partir de données codées selon l'un des procédés précédemment définis. L'invention se rapporte également à un terminal de génération de texte, caractérisé en ce qu'il comprend des moyens pour générer un texte à partir de données selon l'un des procédés précédemment définis. L'invention se rapporte également à une application du procédé de génération de texte à la réalisation d'un dispositif, serveur ou terminal de génération de texte. D'autres caractéristiques et avantages de l'invention apparaîtront avec la description effectuée ci-dessous à titre descriptif et non limitatif en se référant aux figures suivantes: Les figures la, lb et lc, déjà décrites, sont des schémas d'un procédé de génération de texte connu, les figures 2 et 3 représentent des opérations effectuées lors de l'utilisation d'un procédé de génération de texte conforme à l'invention. Conformément à l'invention, la réalisation de l'invention décrite ci-dessous permet de générer, à partir d'une suite de données, des textes en diverses langues. Dans cette réalisation, le procédé génère des textes écrits en toute langue utilisant des lettres pour former des signes, ces signes étant écrits suivant un même ordre de lecture allant de la gauche vers la droite de leur support d'écriture. Par exemple, de telles langues sont l'allemand, l'anglais, l'espagnol ou le français. La génération d'un texte écrit en une ou plusieurs de ces langues utilise, comme représenté sur la figure 2, le développement d'une suite [1] [2] ... [n] de données [i] en un texte 30, comprenant une suite de signes écrits conformément à une grammaire d'une langue choisie de génération, tel que "Es regnet heute", "it is raining today", "hoy llueve" ou "aujourd'hui il pleut". A cet effet, ce développement utilise des bases de données Bj, propres à chaque langue j, associant un champ sémantique à un groupe de signes propres à la langue j. Par exemple, en considérant le champ sémantique de l'amour, une base Bus propre à la langue anglaise associe des signes anglais tels que "love", "happiness", "joy" et "felicity" à ce champ sémantique tandis qu'une base BFR dédiée à la langue française associe des signes français tels que "joie" et "bonheur" à ce champ sémantique. Par la suite, on considère que la langue française est utilisée pour générer le texte 30 à partir de la suite [1] [2]... [n] de données, un tel choix étant codé par l'utilisateur du générateur de texte comme décrit ultérieurement. Ainsi, la base BFR est seule requise pour transformer une série de données [1] [2] ... [5] en un texte écrit en français. Une telle transformation est dénommée développement puisqu'elle utilise un développement de chaque donnée [i] en un ou plusieurs signes français destinés à former le texte 30. A cet effet, un ordre de développement, représenté par l'axe 32, est suivi par le générateur de texte pour développer successivement chaque donnée. Dans cet exemple, l'ordre de développement de chaque donnée [i] correspond à l'ordre d'écriture de ces données. Conformément à l'invention, le développement de la donnée [1], par exemple, utilise le codage d'une langue, d'un champ sémantique et de contraintes syntaxiques associés à cette donnée. Plus précisément, à partir du codage de la langue et du champ sémantique, le générateur 34 peut sélectionner un signe de la base BFR appartenant au champ sémantique codé par cette donnée [1]. A cet effet, on utilise dans le codage de la donnée [1] une clef de classe et un descripteur contextuel expliqués en détail ci-dessous. Une clef de classe est un chiffre, un symbole ou un signe, tel que "amoureux", qui permet d'identifier dans une base Bj, propre à une langue j, les ensembles ou classes de signes considérés par l'utilisateur du générateur comme appartenant au champ sémantique correspondant à cette clef de classe. Par exemple, en considérant que le sens des signes "absolu", "attentif", "conscient", "humain" et "lumineux" appartiennent au champ sémantique du signe "amoureux", la classe 'amoureux' comporte ces signes "amoureux", "absolu", "attentif", "conscient", "humain" et "lumineux". Dans ce qui suit, de façon à distinguer une clef de classe d'un signe, une clef de classe est codée au moyen de guillemets @ tandis qu'un signe est codé au moyen de doubles guillements "". De plus, par la suite, toute référence à une classe 1 s'effectue au moyen de sa clef de classe '1' . En d'autres termes, on dénommera chaque classe par sa clef de classe. Le raisonnement appliqué pour définir la classe 'amoureux' peut être effectué pour chacun des signes "absolu", "attentif", "conscient", "humain" et "lumineux". On crée ainsi des classes 'absolu', 'attentif', 'conscient', 'humain', 'lumineux', chacune de ces classes comprenant des signes considérés comme sémantiquement équivalents par l'utilisateur du générateur de texte. De façon à augmenter la diversité des textes créés par le générateur, on introduit dans certaines classes les clefs d'autres classes. Dans cet exemple, la clef de classe 'bonheur' est ainsi intégrée dans la classe 'amoureux'. Dès lors, le développement d'une donnée codant pour la clef de classe 'amoureux' peut aboutir, lors d'un premier développement, à la sélection d'une deuxième classe 'bonheur' ou à la sélection d'un des signes "absolu", "attentif", "conscient", "humain" et "lumineux" de la classe 'amoureux'. De fait, il apparaît à ce stade du développement d'une donnée qu'elle peut être de différentes natures telles qu'une clef de classe ou un signe. De façon générale, le générateur 34 utilise trois types de données codées à l'aide de crochets [] : - Un premier type de donnée est du type classe ou clef de classe, par exemple ['amoureux'], et fait appel à une clef 'amoureux' de classe. Une telle donnée, dite non-finie, est développée en une deuxième donnée comprise dans la classe référencée par cette donnée non-finie. Comme précédemment mentionné, cette deuxième donnée peut être une autre donnée classe ou une donnée correspondant aux deux types décrits cidessous. - Un deuxième type de donnée est du type intermédiaire. Elle est codée sous une forme telle que "O)passion#é ée és ées", décrite en détail ultérieurement, qui comprend le radical d'un signe ("passionn") et différentes déclinaisons ("é ée és ées") possibles pour ce radical. Pour obtenir une telle donnée intermédiaire, on remplace une donnée non-finie par une donnée intermédiaire, la sélection de cette donnée intermédiaire s'effectuant au moyen du champ sémantique et de la langue codés par la donnée nonfinie. En effet, outre des clefs de classes ou des signes, une classe peut comprendre des données intermédiaires. De plus, les contraintes syntaxiques codées par la donnée non-finie remplacée sont transmises à cette donnée intermédiaire pour générer un texte comme décrit ci-dessous. Il convient de signaler qu'une donnée intermédiaire peut aussi être directement codée par l'utilisateur du générateur 34 comme une donnée [i] à développer. - Selon un troisième niveau, la donnée ne nécessite plus de développement pour être insérée dans un texte. Par exemple, elle a la forme "passionné". Une telle donnée est dite finie et est obtenue, comme décrit ultérieurement en détail, en combinant un radical avec une terminaison d'une donnée intermédiaire, une telle combinaison respectant les contraintes syntaxiques codées par cette donnée intermédiaire. Sur la figure 2, le développement de la donnée [1], c'est-à-dire la transformation de cette donnée codée en un signe, utilise une clef 201, comprise dans la donnée [1] , pour déterminer quelles données [1.1] [1.2] ... [1.5], associées dans la base BFR à cette classe 201, peuvent remplacer cette donnée [1]. Puis, après avoir choisi une de ces données [1.1] [1.2] ... [1.5] comme décrit ultérieurement, on développe la donnée [1] en remplaçant cette dernière par la donnée choisie, dans l'exemple la donnée [1.1] . Cette nouvelle donnée est disposée suivant le même axe 32 de développement que la donnée [1] de telle sorte que, à ce stade de la génération, le texte généré comprend la suite de données [1.1] [2] ... [5] suivant cet ordre. A ce stade du développement, on considère que la donnée [1.1] est une clef de classe. Dès lors, une nouvelle clef 201.1, propre à la donnée [1.1], est utilisée pour développer cette donnée [1.1]. Toutefois, cette situation diffère de la situation précédente en ce que la donnée [1.1] doit être développée en une ou plusieurs données finies comprises dans la sémantique de la donnée [1.1] et dans la sémantique de la donnée [1] à l'origine du développement. En d'autres termes, la clef 201.1 codée par la donnée [1. 1] doit être modifiée de façon à comprendre la clef 201 dont elle est issue. Une telle modification est décrite ultérieurement. A l'aide de cette clef 201.1, des données [1.1.1] [1. 1.2] [1.1.5] sont choisies dans la base BFR pour remplacer la donnée [1.1]. La donnée [1.1.1] étant choisie pour effectuer ce remplacement, le texte généré à ce stade du développement se présente sous la forme [1.1.1] [2] [3]...[5] . L'utilisation des clefs 201 et 201.1 permet de développer la donnée [1] en données ultérieures [1.1] puis [1.1.1] dans un premier temps, puis de continuer ce développement jusqu'à ce que le développement de la donnée [1] aboutisse à une donnée finie, c'est-à-dire à un signe tel que "le ciel" prêt à être inséré dans le texte. Pour obtenir un tel résultat, le générateur de texte développe une donnée classe en une donnée intermédiaire, cette dernière étant développée ultérieurement en une donnée finie. Par exemple, en intégrant dans la classe [bonheur] précédemment utilisée les données intermédiaires "1)affecti#f ve fs ves", "0)passionné ée és ées", "0)sexuel 11e ls lles", "0)tendre es es" et "0)vivant te ts tes", le générateur de texte peut remplacer la donnée classe [bonheur] par une de ces données intermédiaires. Dans ce cas, la suite de données "il est [amoureux]" génère, par exemple, "il est [bonheur]", puis "il est [0) passionn 1 é ée és ées]", et finalement "il est passionné", cette dernière étape étant détaillée ultérieurement. Les différentes opérations effectuées dans le développement d'une donnée [i] sont résumées sur la figure 3 qui représente un générateur 40 de texte conforme à l'invention. Ce développement débute lorsque le générateur de texte 40 détecte une ou plusieurs données à développer. Cette opération, représentée par un bloc 42, est détaillée ultérieurement. Lorsque ces différentes données sont détectées, le générateur détermine (bloc 44) la langue devant être utilisée pour développer ces données ainsi que d'autres paramètres décrits ultérieurement, permettant, par exemple, de rattacher le texte généré à un texte déjà généré. Par la suite, les champs sémantiques, ou classes, associés à chaque donnée sont déterminés (bloc 46). Puis, chaque donnée [i] est développée individuellement en fonction de son ordre d'écriture au moyen d'une boucle d'opérations 47. Pour cela, la classe de la donnée développée est définie (bloc 48) et une sélection parmi les différentes données de cette classe est effectuée (bloc 50). Les opérations précédemment décrites (blocs 44,46 et 48) sont effectuées pour toute donnée, non-finie, intermédiaire ou finie. Toutefois, par la suite, les opérations effectuées dans la boucle 47 diffèrent en fonction de la nature de la donnée développée. - Lorsque la donnée développée est une donnée nonfinie, le générateur de texte effectue des sélections (blocs 50 et 56) consécutives de données dans les classes requises jusqu'à aboutir à une donnée intermédiaire. Un tel aboutissement est contrôlé après chaque sélection. - Lorsque la donnée développée est une donnée intermédiaire, le générateur de texte effectue un lissage de la donnée (bloc 52), c'est-à-dire qu'il détermine la forme du signe choisi respectant les contraintes syntaxiques codées par la donnée. En d'autres termes, il définit la terminaison qui, associée au radical de la donnée intermédiaire, génère un signe respectant des contraintes syntaxiques codées dans la donnée non finie. Par la suite, il associe ce radical à la terminaison en effectuant le développement de la donnée (bloc 54). - Lorsque la donnée développée est une donnée finie, le générateur délivre ce signe comme une partie du texte en développement. Un test (bloc 58) est effectué de façon régulière pour déterminer le niveau de développement de la donnée à chaque étape. Pour cela, en fonction du niveau de développement de chaque donnée (donnée non-finie, intermédiaire ou finie), le codage de cette dernière est effectué de différentes façons. Dans cette réalisation, une donnée non-finie a généralement la structure suivante : [descripteur contextuel#clefclasse#descripteur syntaxique] où ces différents éléments ont la fonction suivante : - les éléments de séparation [] permettent au générateur de texte de détecter une donnée et d'attribuer l'ensemble des codages compris entre ces éléments à cette unique donnée. L'élément délimite, à l'intérieur de chaque donnée, des éléments "descripteur contextuel", "clefclasse" et "descripteur syntaxique" décrits ci-dessous. l'élément "descripteur contextuel" limite le développement d'une donnée dans un champ sémantique déterminé, ce champ sémantique pouvant être défini par l'utilisateur du générateur de texte comme décrit dans l'exemple ci-dessous où l'on considère trois classes comprenant des données finies : Une première classe A, caractérisée par une clef "promenade", et comprenant les données suivantes : a - "Une jeune fille se promène dans la rue ensoleillée.,, b - "Un jeune homme passe." c - "La boulangère apporte son pain." d - "Un enfant sort de l'école." Ces données a, b, c et d correspondent à des données finies, c'est-à-dire entièrement développées. Ces données a, b, c et d de la classe A vont être combinées à des données appartenant à deux classes, définies par leur clefs respectives 'paysage' et 'temps ensoleillé', comprenant respectivement les données suivantes: B. Données de la classe paysage : a - "La ville est belle." b - "La lumière est éclatante." c - "Les passants ont l'air heureux." d - "La lumière est belle." e - "La transparence de l'air est tamisée par les fines gouttes d'eau de la pluie." C. Données de la classe temps ensoleillé : a - "Il fait très beau dans les champs." b - "La lumière est éblouissante." c - "Le soleil coupe au couteau de grandes tranches d'ombre et de lumière." d - "Le soleil plaque l'ombre sur les trottoirs." Dans cet exemple, on génère des textes par de simples combinaisons entre les données a, b, c et d de chaque classe A, B et C. Pour cela, on transmet au générateur une suite de données telle que "[promenade] [paysage] [temps ensoleillé]"ou "[temps ensoleillé] [promenade] [paysage]". On remarque que dans ces données, seule la clef de classe est précisée. De fait, les éléments "descripteur contextuel" et "descripteur syntaxique" ne sont pas obligatoires. De fait, le descripteur contextuel permet à l'utilisateur du générateur de déterminer un contexte pour l'ensemble des textes, ou pour des passages choisis de ce texte, définis par un descripteur contextuel propre à ce contexte. Aucun descripteur contextuel n'étant précisé, ces séries de données aboutissent, après le développement de chaque donnée non-finie par le générateur, à des juxtapositions aléatoires de données finies sélectionnées dans chaque classe. Par exemple, le texte "Une jeune fille se promène dans la rue ensoleillée. La transparence de l'air est tamisée par les fines gouttes d'eau de la pluie. Il fait très beau dans les champs." est généré à partir de la suite "[promenade] [paysage] [temps ensoleillé]". Cependant, il peut sembler incohérent de juxtaposer des données des classes A et C faisant référence à un temps ensoleillé avec une donnée de la classe B faisant référence à un temps pluvieux. De même, la combinaison entre une donnée faisant référence à un environnement urbain ("Une jeune fille se promène dans la rue ensoleillée") peut contraster avec une donnée faisant référence à la campagne ("Il fait très beau dans les champs"). Pour imposer un champ sémantique dans la création du texte, telle que "temps ensoleillé dans une ville", on utilise l'élément descripteur contextuel. Cet élément permet de regrouper les données de chaque classe en sous-classes, chaque sous-classe étant relative à un champ sémantique. Dans l'exemple "temps ensoleillé dans une ville", on crée un tel descripteur contextuel en attribuant à chaque donnée de la classe "paysage" une valeur de 1 à un premier chiffre de leur descripteur contextuel lorsque cette donnée fait référence à un temps ensoleillé. Inversement, ce premier chiffre prend une valeur de 2 lorsque la donnée fait référence à un temps pluvieux. On crée ainsi les données de la classe "paysage" suivantes: B. Paysage : a-1 "La ville est belle." b-0 "La lumière est éclatante." c-1 "Les passants ont l'air heureux." d-0 "La lumière est belle." e-2 "La transparence de l'air est tamisée par les fines gouttes d'eau de la pluie." une valeur 0 étant attribuée à toute donnée neutre, c'est-à-dire pouvant correspondre ou ne pas correspondre à un temps ensoleillé. La classe "paysage" est alors divisée en trois sous-classes comprenant, respectivement, des données a et c relatives à un temps ensoleillé, e relative à un temps pluvieux et b et d relatives à des temps pluvieux ou ensoleillés. Par la suite, on détermine des sous-classes, dans la classe "paysage", distinguant les données relatives à la ville des données qui ne se réfèrent pas expressément à un environnement urbain. Pour ce faire, on utilise un deuxième chiffre du descripteur contextuel auquel on attribue une valeur 1 lorsque la donnée associée est relative à la ville ou une valeur 2 lorsque la donnée est relative à un environnement champêtre. Dans ce cas, les données de la classe "paysage" deviennent : a-11 "la ville est belle." b-00 "la lumière est éclatante." c-10 "les passants ont l'air heureux." d-00 "la lumière est belle." e-00 "la transparence de l'air est tamisée par les fines gouttes d'eau de la pluie." La même opération de codage est effectuée avec les classes "promenades" et "temps ensoleillé". Pour cette dernière classe, il résulte les données suivantes: C. Données de la classe "temps ensoleillé" : a - 12 "Il fait très beau dans les champs." b - 10 "La lumière est éblouissante." c - 10 "Le soleil coupe au couteau de grandes tranches d'ombre et de lumière." d - 11 "Le soleil plaque l'ombre sur les trottoirs." Dès lors, l'utilisateur du générateur de texte peut imposer, dans le développement des données, un champ sémantique tel qu' "urbain" ou "champêtre" et "temps ensoleillé" ou "temps pluvieux" pour lesquels le descripteur contextuel a été défini. Le descripteur contextuel est ainsi utilisé comme un filtre pour sélectionner les données compatibles avec un champ sémantique imposé à la génération d'un texte. Par exemple, en voulant générer un texte se déroulant dans une ville sous un temps ensoleillé, il suffit de fixer le descripteur contextuel des données fournies au générateur à ce champ sémantique. Ainsi, la suite de données [111 promenade] [111 paysage] [111 temps ensoleillé]", où le descripteur contextuel 11 requiert une sémantique de "temps ensoleillé dans une ville", est développée en un texte sémantiquement cohérent tel que : "Une jeune fille se promène dans la rue ensoleillée. La ville est belle. Le soleil plaque l'ombre sur les trottoirs" Le moteur de génération peut aussi déterminer aléatoirement un descripteur contextuel pour un texte, par exemple lorsque l'utilisateur du générateur ne veut pas déterminer un champ sémantique dans un domaine, tel que la situation météorologique. Dans ce cas, le descripteur contextuel des données est codé par une valeur neutre 00 à laquelle le générateur attribue, de façon aléatoire, une valeur. Ainsi, en considérant la suite de données "les personnes sont très animées, [00 1 paysage] , [ 00 -paysage] le moteur de génération détermine lors du développement de la donnée [00 1 paysage] un descripteur contextuel, par exemple un contexte "urbain pluvieux" correspondant au descripteur contextuel 12. Par la suite, la deuxième donnée [00 1 paysage] est aussi développée en accord avec ce contexte. Le texte traité par le générateur est alors "les personnes sont très animées, [121 paysage], [12#paysage]". Il est possible de combiner les modes de développement précédemment indiqués. Ainsi, en considérant la suite de données "les rues sont très animées, [00 1 paysage] , [00#paysage] [00#regard amoureux] ", le concepteur du texte impose la sémantique utilisée pour le type de paysage choisi à un type de regard. D'une façon générale, il est nécessaire de pouvoir définir si des classes Co, Ci , ...,CN sont dépendantes ou non du descripteur contextuel d'une autre classe Co, Ci , ..., CN donnée. Pour ce faire, on utilise un tableau tel que le tableau cidessous. 1 1 CI C2 1 ... 1 CN ~Ci~~~~~0 0 ... 0 C2 0 0 ... 1 CN 0 1 0 Lorsqu'aucune entrée du tableau ne relie une clase Ci à une autre classe Cj, cette classe Ci est indépendante du descripteur contextuel propre à cette classe Cj. Inversement, si une entrée du tableau relie une classe Ci à une classe Cj, ces classes ont des influences réciproques. Plus précisément, le générateur de texte peut déterminer qu'une classe "bonheur" Ci est compatible avec la classe "enfance" C2, mais incompatible avec la classe "tristesse" CN, cette dernière étant compatible avec la classe "enfant" C2. De façon à développer les descripteurs contextuels au fur et à mesure du développement du texte, le descripteur contextuel peut se développer au cours de la génération de texte. Par exemple, en considérant que "0" est une valeur neutre suivant laquelle un descripteur n'est plus concerné par une sémantique, on effectue le développement d'une classe telle que [bonheur] en lui attribuant la valeur 1 du premier chiffre d'un descripteur comprenant trois valeurs. Ainsi, toute donnée présentant un descripteur contextuel du type "100" pourra être développée par une donnée de la classe [bonheur]. Si par la suite ce descripteur est combiné avec une autre classe telle que "[enfant]", associée à la valeur 1 du deuxième chiffre du descripteur, toute classe dont le descripteur indique "110" pourra fournir une donnée dont la sémantique correspond au bonheur et à l'enfant. En d'autres termes, une classe associée au bonheur et aux enfants est caractérisée par un descripteur "110" égal à la combinaison des deux descripteurs précédemment utilisés. Inversement, une classe correspondant à une sémantique incompatible avec la sémantique du terme bonheur sera définie par un descripteur incompatible avec le descripteur de la classe bonheur. Par exemple, la classe "[tristesse]" a un descripteur contextuel "200" incompatible avec le descripteur "100". Dans ce cas, il est impossible de créer une classe de bonheur et de tristesse, sans modifier le descripteur associé à une des classes "[bonheur]" ou "[tristesse]". Il apparaît ainsi que, dans ce cas, le descripteur contextuel se précise au fur et à mesure que le texte est généré jusqu'à atteindre une valeur limite à partir de laquelle ce descripteur contextuel ne peut plus être modifié. Par exemple, tel est le cas lorsque l'ensemble des chiffres codant le descripteur sont fixés. Les informations contenues dans chaque donnée doivent aussi préciser la relation existant entre ces données. Ainsi, un verbe doit être associé à son sujet de façon à se décliner en accord avec la personne de ce dernier, tandis qu'un adjectif épithète doit être associé au mot auquel il se rapporte pour effectuer l'accord de personne et de nombre. Pour prendre en compte ces relations, chaque donnée comprend un descripteur qui code les contraintes syntaxiques devant être respectées par le signe en cours de génération. Pour cela, le générateur de textes considère les données suivant différents types de fonction: - Une fonction émettrice d'information requise par des données du texte, par exemple l'information concernant le genre et/ou le nombre auxquels doivent s'accorder un adjectif ou se décliner un verbe. D'une façon générale, tout substantif est un émetteur d'information. - Une fonction réceptrice d'information, par exemple lorsque la donnée est un adjectif ou un verbe. Une telle fonction est indiqué par un marqueur "=" intégré dans le codage de la donnée, comme décrit ci-dessous en considérant comme exemple la génération du texte "l'homme est très souvent une louve agressive pour les hommes ainsi que pour les femmes". Dans cet exemple, la chaîne de données à la base d'un tel texte peut se coder de la façon suivante: Tableau 1 Donnée Sous~cat:. Genre Nombre Code Vecteur [l~m~homme] ~~~~~- - - ~ 10 [v~être 0100000] v [61#] # [69#] [8~m~louve] m~ Féminin singulier 20 10,20 [=l~a~agressif] a~ [64#] [51~m~honme] m~ masculin pluriel 11 10,20,11 [41#] [71#] [64#] [51~m~femme) m~ Féminin pluriel 21 10,20,11,21 Dans ce tableau 1, une colonne "donnée" indique une donnée générant un signe du texte. Ainsi, la première donnée "[1~m~homme]" génère "l'homme", la deuxième donnée "[0100000~v~être]" génère "est", "[8~m~louve]" génère "une louve" et "[=l~a~agressif]" génère "agressive" (le codage de chaque donnée est expliqué en détail ultérieurement). Des colonnes "genre" et "nombre" indiquent le genre, masculin ou féminin, et le nombre, singulier ou pluriel, de chaque substantif généré. Ces informations sont mémorisées par un code à deux chiffres tel que le premier chiffre est égal à 1 (2) lorsque le substantif est masculin (féminin) et tel que le deuxième chiffre est égal à 0 (1) lorsque le substantif est au singulier (pluriel). Un vecteur transmetteur d'information (colonne "Vecteur") mémorise ces codes au fur et à mesure que des éléments émetteurs d'information sont considérés par le générateur de texte. Lorsque le générateur détecte un élément récepteur d'information, tel qu'un adjectif, à l'aide du marqueur " = ", un code (singulier ou pluriel, masculin ou féminin) est transmis à ce récepteur. A cet effet, le code (genre/nombre) que le vecteur doit considérer, parmi tous les codes mémorisés, est indiqué en considérant le nombre " X " indiqué dans le codage du récepteur d'information X " par l'opération suivante : nombre d'informations sur le vecteur - X + 1. Ainsi, lorsque l'adjectif issu de la donnée [=1~ a~agressif] est généré, le générateur de texte attribuera à ce signe la déclinaison propre à un accord avec le substantif identifié par le vecteur de position 2-1+1=2, c'est-à-dire la deuxième donnée émettrice d'information précédant la donnée réceptrice, et qui correspond à la donnée ([8 m louve]). Suivant un autre exemple, le texte "la présence du prince sur l'astéroïde n'a pas été expliquée" peut être généré en considérant la suite de données "[1~m~présence] [7~m~prince] [58#] [l~m~astéroïde] [3100000~v~avoir] [=x~a~été] [=3~a~expliqué]"comme décrit ci-dessous à l'aide du tableau 2. Tableau 2 Donnée Sous cat Genre Nombre Code Vecteur t. [~m~présence] m~ Féminin singulier 20 20 [7~m~prince] m~ Masculin singulier 10 20,10 [58#] # [1~m~astéroïde] m~ Masculin singulier 10 20,10,10 [v~avoir 3100000] [=x~a~été] a~ [=3 a expliqué] a Comme montré à l'aide du tableau 2, lorsque le moteur de génération développe la donnée adjective [=x a été], la valeur " x " suivant le signe " = " de cette donnée indique qu'il y a un blocage de l'information, le masculin singulier étant alors adopté par défaut pour accorder cet adjectif. Lorsque la donnée [=3~a~expliqué] est rencontrée par le générateur de texte, conformément à la règle précédemment mentionnée, le générateur de texte détermine la position du vecteur à considérer (nombre de vecteurs-nombre déterminé par le marqueur +1, c'est-à-dire 3-3+1=1) et accorde l'adjectif issu de cette classe avec le substantif associé à ce vecteur " 20 ", c'est-à-dire le substantif issu de la classe [1~m~présence]. Un codage particulier est utilisé pour les adjectifs placés avant les substantifs. Pour cela, on considère que l'adjectif est associé au substantif dans une même donnée identifiée par exemple à l'aide du marqueur @. Ainsi, la donnée "le petit prince" peut être obtenue à partir du développement de la donnée [l~a~petit@m~prince] . Le codage d'un syntagme verbal permet à ce dernier de recevoir l'ensemble des informations nécessaires, par exemple, à la conjugaison d'un verbe vis-à-vis de son sujet et/ou à l'accord d'un participe passé vis-à-vis d'un sujet ou d'un complément. En outre, un tel codage doit déterminer des informations propres au syntagme verbal, telle que la présence d'une négation. De façon générale, dans cet exemple, une donnée intermédiaire relative à un verbe est codée de la façon suivante: [descripteur de forme#v~avoir Idescripteur syntaxique] où chacun de ces éléments a la (ou les) fonction(s) suivante(s). - l'élément v indique que la donnée considérée a une nature verbale tandis que avoir indique le verbe considéré. - l'élément descripteur syntaxique est le descripteur codant les contraintes syntaxiques associées à cette donnée verbale et définies par l'utilisateur du générateur. Ce descripteur syntaxique comprend huit chiffres ABCDEFGH dont les valeurs indiquent un contexte grammatical pour le verbe à générer. Ainsi, la valeur A détermine la présence d'une négation par rapport au verbe comme indiqué ci-dessous, où les négations utilisées dans le développement d'une donnée sont représentées en fonction de cette valeur de A : A = 0, pas de négation. - A = 1, négation = "ne... pas"; A = 2, négation = "ne... plus" ; A = 3, négation = "ne... jamais" ; A = 4, négation = "ne... rien"; A = 5, négation = "ne... que" ; A = 6, négation = "ne... personne" ; A = 7, négation = "ne... guère" ; Par exemple, la donnée [v~rire#3100000] est développée comme "ne [v~rire#0100000] jamais". Dans un autre exemple, [v~chanter#2100000] est développé comme "ne [chanter)0100000] plus". Il convient de souligner que le premier terme de la négation est modifié si une élision est nécessaire devant le verbe généré par la donnée verbale. Par exemple, si le verbe "aimer" est considéré, la négation de "il aime" doit s'écrire "il n'aime pas boire". Pour effectuer l'élision de la négation, on utilise l'élément )descripteur de formes) qui code aussi des contraintes syntaxiques propres au signe choisi pour remplacer la donnée. Ce descripteur de formes définit si le signe en cours de génération requiert l'élision du signe le précédant en codant une valeur de 1 (élision requise) ou de 0 (élision non requise). Ainsi, la valeur 1 du descripteur de forme d'une donnée intermédiaire "1#aim#6". requiert l'élision dans la négation "n'... personne" imposée par la valeur 6 du descripteur syntaxique. La deuxième fonction codée dans le descripteur syntaxique concerne le temps verbal auquel doit être développée la donnée. A cet effet, on utilise un tableau de correspondances associant une valeur B à un temps verbal. Dans cet exemple, les différents temps verbaux associés à des valeurs B sont le présent (B = 1) , l'imparfait (B = 2) , le passé simple (B = 3), le futur (B = 4), le conditionnel présent (B = 5), le subjonctif présent (B = 6), l'impératif (B = 7), le participe présent (B = 8), et l'infinitif (B = 9). Comme décrit ultérieurement, lorsque la valeur de B est égale à 0, on considère qu'elle est associée au présent (B = 1) si un temps verbal n'est pas imposé par le générateur. Dès lors, le développement d'une donnée verbale en un signe s'effectue en combinant son radical, par exemple "chant" pour le verbe chanter avec une terminaison sélectionnée dans un tableau de conjugaisons des verbes en fonction du type de verbe considéré (radical), du temps requis (valeur de B), du genre et du nombre du sujet. Un tel tableau de verbes est joint dans l'annexe A pour les déclinaisons françaises d'un verbe, ce tableau étant représenté en cours de formation de telle sorte que certains verbes et/ou paragraphes sont en développement. Dans un tel tableau, les terminaisons sont considérées suivant les temps correspondant aux valeurs de B (présent de l'indicatif, imparfait de l'indicatif, passé simple, futur, conditionnel présent, infinitif et participe présent), un numéro de paragraphe indiquant le type de conjugaison propre à chaque radical. Il convient de signaler que le participe passé est codé comme un adjectif, c'est-à-dire qu'il est codé comme un récepteur d'informations permettant de réaliser l'accord de ce participe passé avec, par exemple, le substantif auquel il se rapporte. Ainsi, en considérant la suite de données "[v~être 10130000 Il .] [a~chanté 1 =x] ", la donnée "[v être0130000.]" agit comme transmetteur d'information tandis que la donnée "[a~chanté#=x]" est réceptrice d'information. Le texte généré est alors "ils sont chantés". Dans un autre exemple, la suite de données "Marie [v~être#0130000#. Toutefois, lorsque le verbe auxiliaire est le verbe avoir, un tel accord ne se produit pas. Ainsi, "[v~avoir#0130000#.] [a~chanté#=x]"génère "ils ont chanté". Finalement, l'impératif d'un verbe est déterminé à partir d'un codage impliquant la troisième personne du singulier (par exemple "chante") ou la deuxième personne du singulier ("viens"). De façon à maintenir la cohérence temporelle d'un texte, par exemple d'un roman, le temps déterminé pour un verbe peut être transmis automatiquement à d'autres verbes lorsque ces derniers codent un temps verbal neutre (B=0). Ainsi, la suite de données " [v~rire 1 0130000] et [v~pleurer~0000000] et [v~bégayer#0000000]" est développée en "il rit et pleure et bégaie". De même, "[v~rire#0230000], [v~pleurer#0000000], [v~bégayer#0000000]"génère "il riait, pleurait et bégayait". Les valeurs C, D, E, F et G du descripteur syntaxique du verbe sont utilisées pour coder l'utilisation de pronom(s) relatifs au (x) verbe (s) en génération. Pour cela, on distingue deux types d'information transmise par un pronom, à savoir la nature (nombre et genre) du signe auquel se réfère ce pronom et la nature du pronom. De fait, la nature d'un pronom, par exemple le pronom "on", peut se référer à un homme ou à une femme, mais il a une nature propre définie, dans cet exemple, par la troisième personne du masculin. Pour cela, la troisième valeur C du descripteur syntaxique indique le genre et le nombre d'un éventuel pronom sujet en utilisant les correspondances suivantes : C = 0, troisième personne du singulier sans pronom sujet écrit. Par exemple, "[v~chanter#0100000]" développe "chante". - C = 1, première personne du singulier. Ainsi, "[v~ chanter 10110000] développe "je chante". Cette fonction est modifiée si une élision est requise de telle sorte que [v~aimer#01100000]"développe "j'aime". - C = 2, deuxième personne du singulier; "[v~chanter 10120000]" développe "tu chantes". - C = 3, troisième personne du singulier; " [v~chanter 01300000] développe "il chante", "elle chante", ou "on chante". - C = 4, première personne du pluriel "[v~aimer 101400000]"génère "nous aimons". - C = 5, deuxième personne du pluriel. "[v~parler 01500000]" génère "vous parlez". -C = 6, troisième personne du pluriel. " [v~réciter 01600000]" génère "ils récitent". Un tel codage présente deux inconvénients. Premièrement, lorsque C = 3, on utilise la troisième personne du singulier. Mais cette troisième personne peut se rapporter à un genre masculin "il", féminin "elle" ou neutre "on". Deuxièmement, l'utilisation d'un transmetteur d'information tel que précédemment décrit peut être inefficace pour référencer le substantif auquel se réfère chaque pronom si ce pronom est après le verbe, comme par exemple dans la texte "Etait-il seul Il. Pour cela, on utilise dans cette réalisation, un codage spécifique dans le descripteur syntaxique comprenant les éléments X. Plus précisément, "[...... X]" signifie que le pronom sujet se rapporte au Xième substantif après le verbe. Par exemple : "[m~cheval#7] [v~être#0100000] [a~beau #=1] [v~galoper#0130000 # [a~beau =1] [v~galoper | 0130000 | | 2], dans [m~forêt# 7], [m~oiseau #57]" " développe "chantent, dans la forêt, les oiseaux". Le sujet peut être composé par une pluralité de substantifs. Dans ce cas, les règles d'accord sont à nouveau considérées au cas par cas. Ainsi, en français, le pluriel composé par deux sujets masculins est un pluriel masculin, le pluriel composé par deux sujets féminins est un pluriel féminin et le pluriel composé par un sujet masculin et un sujet féminin est un pluriel masculin. Ces règles sont prises en considération par un codage effectué à l'aide d'un séparateur Ce séparateur permet d'indiquer si le sujet est un pluriel masculin ou féminin en fonction de la présence d'un chiffre 1 (masculin) ou 2 (féminin) après ce marqueur. Par exemple, "[m~cheval)7] et [m-iumentl7l [v être01000001.2] [a~beau 1 =1] [v galoper0130000 Un verbe peut être écrit sans pronom sujet, bien qu'il ait toujours une personne. Par défaut, par exemple lorsque le descripteur syntaxique du verbe est absent, la troisième personne du masculin singulier est appliquée. Le codage du verbe considère aussi l'utilisation de pronoms indéfinis comme pronom sujet. A cet effet, la septième valeur G du descripteur syntaxique est utilisée de la façon suivante . - G = 0, la fonction pronom sujet indéfini est ignorée. G = 1, 2, ...8 ou 9, la fonction pronom sujet indéfini est activée et la fonction pronom sujet, telle que précédemment décrite, est ignorée. Par ailleurs, en fonction de la valeur de G, des pronoms indéfinis prédéterminés sont utilisés. Plus précisément, ces pronoms sont "ce" (ou "c'" en cas d'élision) pour G = 1, "ça" pour G = 2, "on" pour G = 3, "il" pour G = 4, "cela" pour G = 5. Les valeurs des quatrième D et cinquième E chiffres du descripteur syntaxique déterminent le choix du pronom complément à l'aide d'une corrélation telle qu'indiquée dans le tableau ci-dessous: DE 01 02 03 04 05 06 07 Pronom me te le nous vous les [a~lui] DE 10... 19 20 21 22 23 24 Pronom se se en m'en t'en s'en y Si une élision est requise, on remplace le pronom complément déterminé par un pronom complément correspondant. Par exemple, "me" devient "m'" et "te" devient "t'". Finalement, la sixième valeur F du descripteur syntaxique indique l'ordre dans lequel le syntagme verbal va être constitué. Pour cela, on considère que chaque syntagme verbal peut comprendre : Un pronom sujet, défini par une variable prosuj . Une première partie de négation, placée avant le verbe, définie comme une variable debneg . Une deuxième partie de négation, située après le verbe, définie comme une variable finneg . Un pronom complément prodem . Un constituant verbal défini comme une variable centre . Dès lors, l'ordre dans lequel ces différents éléments peuvent être combinés est prédéfini de la façon suivante : - Lorsque le verbe est à l'infinitif (B vaut 9 dans le descripteur syntaxique), l'ordre imposé est debneg&finneg&prodem&centre . Un tel ordre génère des textes tels que "ne pas aimer". - Lorsque F vaut 6 dans le descripteur syntaxique, on utilise un ordre inversé debneg&prodem&centre&sujet&finneg combiné à l'adjonction du symbole "-" au centre . Des textes tels que n'est-il pas ou sourions-nous sont alors générés. La description des données intermédiaires de nature verbale effectuée précédemment peut être généralisée à la structure de toute donnée intermédiaire. Ainsi, toute donnée intermédiaire présente généralement la structure suivante: [Descripteur de forme#radical#terminaisons possibles Idescripteur syntaxique] ces éléments ayant les fonctions suivantes : - L'élément [radical] indique la partie invariable du signe allant être écrit dans le texte généré. Par exemple, la partie [radical] du signe "souris" est [souris] et la partie [radical] de l'adjectif "vif" est [vi] . - La partie [terminaisons] indique toutes les terminaisons pouvant être juxtaposées au radical associé. Ces terminaisons sont obtenues en considérant toutes les formes possibles du signe défini par son radical. Par exemple, pour une donnée relative au substantif "animal", le [radical] est [anima] tandis que les déclinaisons possibles sont codées sous la forme [1 ux], la première terminaison 1 formant avec le radical anima le signe singulier "animal" tandis que la deuxième terminaison ux forme avec le radical anima le pluriel "animaux". Il convient de souligner que, dans certains cas, le radical d'un signe peut être vide. Ainsi, le radical des verbes "avoir" ou "être" ou du substantif "#il" sont vides, leurs terminaisons comprenant leurs déclinaisons respectives telles que "ai", "as", "aurons", "soit" ou "yeux". Dans le cas d'un verbe, la partie [terminaisons] est plus nombreuse que dans le cas d'un substantif ou d'un adjectif puisqu'elle identifie l'ensemble des déclinaisons possibles de ce verbe. Par exemple, en français, la partie [terminaisons] du verbe "aimer" est la suivante: "e es e ons ez ent ais ais ait ions iez aient ai as a âmes âtes èrent erai eras era erons erez eront erais erais erait erions eriez eraient e e ions iez ent ant er", où ces déclinaisons correspondent à la conjugaison du verbe aimer au présent ("e es e ons ez ent"), à l'imparfait ("ais ais ait ions iez aient") , au passé simple ( "ai as a âmes âtes èrent"), au futur ("erai eras era erons erez eront"), au conditionnel ("erais erais erait erions eriez eraient"), au subjonctif ("e e ions iez ent), au participe présent ("ant") et à l'infinitif ("er"). De façon générale, des déclinaisons modèles sont déterminées (cf annexe A) en fonction de verbes modèles. Chaque verbe se conjugue alors en fonction d'une déclinaison modèle. - L'élément [Descripteur de forme] varie suivant la nature grammaticale (substantif, verbe, adjectif, ...) du signe sélectionné. Plus précisément, lors du développement d'un substantif, l'élément [Descripteur de forme] comprend les éléments [élision] , [genre] et [marqueur] décrits ci-dessous: - L'élément [élision] indique si le signe en cours de génération nécessite une élision du signe qui le précède dans le texte. A cet effet, le descripteur [élision] indique une valeur [0] pour indiquer la nécessité d'une élision, ou une valeur [1] pour indiquer qu'une élision est sans objet. Par exemple, le substantif "hérisson" ne requiert pas d'élision, l'élément [élision] d'une donnée intermédiaire relative à un hérisson est codé [0], tandis que pour une donnée relative au substantif "honneur", requérant une élision, son élément [élision] code [1]. L'élément [élision] est utilisé pour des données de natures diverses. Ainsi, le verbe "aimer" nécessite une élision ([1]) tandis que le verbe "chanter" ne nécessite pas d'élision ([0]). En outre, certains verbes nécessitent une élision à un temps donné tandis que l'utilisation d'un autre temps ne nécessite pas d'élision. Par exemple, le verbe "être" à la troisième personne du singulier de l'imparfait requiert une élision (était) tandis que cette même troisième personne du singulier au futur (sera) ne nécessite pas d'élision. Dans ce cas, on définit les conditions dans lesquelles un tel verbe requiert une élision en considérant sa première lettre. Ainsi, si la première lettre du verbe est "é, e, ê, a, i ou y", une élision est nécessaire. Par ailleurs, on prend en compte l'éventuelle présence d'un pronom complément ou d'une négation devant un signe pour effectuer l'élision de ce pronom complément ou de cette négation. Par exemple, un verbe nécessitant une élision de son sujet "j'étais" ne requiert plus cette élision lorsqu'un pronom complément ou une négation le suit (je n'étais pas). Ainsi, le codage de l'élision est modifié en fonction de la présence d'une négation ou d'un pronom complément. - L'élément [genre] indique le genre de la donnée développée au moyen d'une valeur [1] pour un substantif masculin, d'une valeur [2] pour un substantif féminin. L'élément [marqueur] est utilisé pour séparer l'élément [élision] de l'élément [genre]. En fonction de la nature du signe en cours de génération, cette séparation est effectuée différemment. Ainsi, on utilise deux [marqueur], ( et ) respectivement, pour un codage sous la forme [élision] [marqueur] [genre] [marqueur] si le signe généré est un substantif. Par exemple, [1(2)souris0] indique que le signe en cours de génération ne requiert pas d'élision 1, qu'il s'agit d'un signe féminin (2) dont le radical est souris et qui ne présente pas de déclinaisons. Lorsque le signe généré est un adjectif, l'élément [marqueur] est codé par un seul marqueur ) sous la forme [élision] [marqueur] [genre] . Ainsi, [1)élégan#t te ts tes] indique que le signe en cours de génération ne requiert pas d'élision 1), que son radical est élégan tandis que les terminaisons possibles sont t te ts tes. Lorsque le signe généré est un verbe, l'élément [marqueur] est \. Il est utilisé sous la forme [élision] [marqueur] [genre]. Les signes relatifs à des syntagmes sont codés de façon analogue à l'aide de marqueurs spécifiques "#" aux syntagmes. Le descripteur syntaxique est, dans ces cas, réduit au marqueur utilisé pour identifier ces données. Les signes relatifs à des déterminants sont codés au moyen d'un tableau, tel que celui représenté à l'annexe B, et d'une valeur codée par une donnée, cette valeur identifiant un déterminant pour le signe généré à partir de cette donnée. Pour cela, une famille de déterminants est représentée à chaque ligne du tableau suivant un ordre correspondant à un nombre, puis à un genre et à une nécessité d'élision comme détaillé cidessous pour le déterminant "article défini le": Ainsi, la donnée "[m~cheval#7]" génère "le cheval". De façon analogue à d'autres marqueurs, la valeur d'un déterminant peut être neutre, auquel cas cette valeur neutre est considérée commé égale à la valeur de déterminant précédente. Ainsi, "[m~cheval#7] et [m~chien#0]" génère "le cheval et le chien". La description de l'invention effectuée précédemment utilise le développement d'une donnée [i] en un ou plusieurs signes destinés à former un texte. Toutefois, l'invention permet aussi l'utilisation de données [I] non finies destinées à être développées en une suite ou chaîne de données non finies [j] [k]... [1] . A cet effet, on considère les différents types de données suivantes : Un premier type de donnée [I] est associé à une structure grammaticale, par exemple la structure "sujetverbecomplément" déjà décrite pour le verbe "aimer" en langue française. Suivant cet exemple, on utilise un marqueur "stru~"pour identifier les données structurelles et une donnée "[stru~aimer]peut alors être associée à une suite de données Il [m~personne] [v~aimer] [m~partieducorps] " correspondant à la structure grammaticale du verbe aimer. Un deuxième type de donnée [I] est associé à un thème prédéfini par l'utilisateur du générateur de texte, ce thème correspondant, par exemple, à une clef de classe ou à un descripteur contextuel prédéterminé. Une telle donnée, identifiée par un marqueur "th", génère le développement d'un texte suivant ce thème en choisissant des signes du texte au moyen de la clef de classe ou du descripteur imposé. De façon générale, une donnée thème comprend des données préstructurées, c'est-à-dire ordonnées, constituant une structure dont les contraintes syntaxiques et le champ sémantique sont prédéfinis. Par exemple, une donnée thème telle que [th-aimer] peut être associée à une suite de données telle que : [m~hérosl] [v~aimer] [th~partie du corps] [m~héros2]. On remarque qu'une première donnée thème peut être développée en une série de données comportant une deuxième donnée thème. Un troisième type de données [I] est associé à un dictionnaire particulier déterminé comme une sous-base bj (dp) de données dans une base Bj telle que définie à la figure 2. Le développement d'une donnée au moyen du dictionnaire particulier, commandé au moyen d'un marqueur "dp~", permet donc à l'utilisateur du générateur de contraindre ce dernier à l'utilisation de la sous-base de données personnalisée, par exemple relative à un domaine technique. Un quatrième type de données [I] est associé à une locution syntaxique au moyen d'un marqueur "lc~". Ainsi, une donnée telle que [lc~extrême] peut être développée en une donnée finie "plus royaliste que le roi" ou "plus chrétien que le pape" propre à une expression dans une langue donnée. A cet effet, une sous-base bj(lc) est aussi comprise dans la base Bj. D'une façon générale, l'invention permet de personnaliser les textes générés par l'utilisation de sousbases bi propres à un utilisateur du générateur. Pour augmenter la diversité des textes pouvant être générés, les données codées peuvent être associées à des marqueurs, dits de rhétorique, permettant à l'utilisateur d'imposer des caractéristiques propres à l'écriture d'un texte, telles que celles décrites ci-dessous. En d'autres termes, un marqueur de rhétorique définit un ou plusieurs modes de fonctionnement du générateur. Selon une première caractéristique, l'utilisateur du générateur de texte peut limiter le nombre de classes utilisées pour générer un texte. Par exemple, en considérant une classe "Poésie moderne" constituée des données suivantes: - "je m'offre à chacune" - "la lumière tremble" - "ta peau boit le soleil", un texte peut être généré en imposant cette seule classe et en utilisant une simple juxtaposition de ces données, telle que : "je m'offre à chacune, la lumière tremble, ta peau boit le soleil". Selon une deuxième caractéristique, l'utilisateur du générateur de texte peut imposer un nombre minimal de classes devant être utilisées lors de la génération d'un texte. En conséquence, il détermine la fréquence tolérée d'utilisation d'une même classe. De façon analogue, l'utilisateur peut définir un nombre d'utilisations minimal ou maximal d'un même signe pour remplacer une donnée. Selon une troisième caractéristique, le mode de sélection d'une donnée et/ou d'un signe choisis dans une classe est déterminé par l'utilisateur du générateur suivant un des trois modes suivant: Soit le choix est aléatoire et la donnée ou le signe remplaçant une donnée est choisi au hasard dans une classe requise, Soit le choix est systématique et la donnée ou un signe remplaçant une donnée est imposé dans une classe prédéterminée, Soit le choix utilise une combinaison, par exemple une alternance, des deux modes précédemment décrits. Suivant une autre caractéristique, l'utilisateur du générateur détermine si une donnée ou un signe utilisé(e) dans une classe peut être repris(e), et suivant quelle fréquence de telles reprises peuvent être effectuées. De même, comme décrit ultérieurement, l'auteur du texte peut déterminer suivant quel ordre est utilisée cette donnée. Le texte généré peut avoir une longueur prédéterminée par l'utilisateur du générateur au moyen d'un marqueur "FF" de fin de chaîne, ce marqueur étant compris dans la suite de données fournie au générateur. En l'absence d'un tel marqueur, la longueur du texte généré n'est pas limitée. Les relations entre les pages générées sont aussi gérées par des marqueurs rhétoriques indiquant, par exemple, d'ordonner les pages au fur et à mesure de leur génération. En l'absence de telles variables, chaque page de texte généré est indépendante et le générateur de textes lui attribue un numéro de page indépendant. Finalement, le format des pages ainsi qu'une forme d'écriture, prose ou poésie, sont définies par l'utilisateur du générateur. Lorsqu'un type de prose est sélectionné, le texte généré à partir de chaque donnée est juxtaposé au fur et à mesure de sa génération. Cette génération peut être arrêtée de deux façons : suivant un arrêt non-défini, tel que l'auteur fixe un nombre maximum de signes pour le texte, ou suivant un arrêt défini, tel qu'un marqueur de fin d'événements "FF" entraîne l'arrêt de la génération. Une page en prose est constituée par un bloc continu de signes à l'exception des textes utilisant des marqueurs dits de dialogue. De tels marqueurs se présentent par des symboles tilt qui sont interprétés par le générateur de texte comme indiquant un aller à la ligne. Par exemple "il l'interrompit avec violence" "il ne dit rien !" est affiché par le générateur de texte : "il l'interrompit avec violence : - il ne dit rien !". Un retour à la ligne peut aussi être rendu obligatoire par l'utilisation du signe "%". Par exemple "elle lui parlait toujours avec violence. % Lui préférait la tranquilité" entraîne l'affichage : "elle lui parlait toujours avec violence. Lui préférait la tranquilité". Le nombre d'espaces dans les écartements entre les textes séparés par un signe % est proportionnel au nombre de signes % utilisés dans les données de développement. Comme indiqué précédemment, l'ensemble des caractéristiques rhétoriques décrites ci-dessus sont codées à l'aide de marqueur propres, tel que %, ou à l'aide d'un marqueur s'appliquant pour l'ensemble du texte, dit descripteur rhétorique. Un tel descripteur, traité par le générateur avant les données pour lesquelles il paramètre le fonctionnement du générateur, a une forme telle que "=ABCDEFGHIJK$" où la valeur de chaque lettre détermine une caractéristique rhétorique. Ainsi, la valeur du premier chiffre A de ce descripteur indique la langue utilisée pour développer les données traitées par le générateur. En d'autres termes, il détermine la base de données utilisée par le générateur. Par exemple, on peut considérer qu'une valeur zéro permet un choix aléatoire de la langue pour chaque donnée et une valeur 1 impose la langue française. Ce descripteur indique par ailleurs la fréquence de répétition souhaitée pour les différentes données finies utilisées dans le texte, la valeur I de ce descripteur de rhétorique indiquant, pour une valeur 0, que des répétitions sont admises avec une fréquence élevée, tandis qu'une valeur 9 indique que les répétitions sont à éviter. Par ailleurs, les valeurs JK déterminent une génération de texte avec un mode prose (JK égal à 00) ou à un mode de poésie. Lorsqu'un mode poésie est sélectionné pour le générateur de texte, ce dernier distingue quatre types possibles de poésie, à savoir : la poésie en vers réguliers, la poésie en vers libres, la poésie en vers définis ou la poésie en vers définis centrés. Chacun des ces types de poésie est sélectionné par le descripteur de poésie défini par les deux chiffres JK tel que : JK=01, la poésie en vers réguliers est utilisée, JK=02 la poésie en vers définis est utilisée, JK=03 déclenche une poésie en vers définis centrés, toute autre valeur, différente de 00, pour JK entraînant une poésie en vers libres. De façon analogue à l'ensemble des codages précédemment décrit, le descripteur rhétorique est un descripteur ouvert, c'est-à-dire qu'il peut être modifié de façon à prendre en compte de nouvelles règles de rhétorique propres à de nouveaux styles d'écritures (par exemple l'utilisation de signes ne présentant pas d'élision) ou l'utilisation, par le générateur, de nouvelles langues requérant la détermination de paramètres rhétoriques. Dans la poésie en vers réguliers, le texte généré est découpé en vers d'une taille prédéterminée telle que, si LT est égal à la longueur totale du texte et NL est égal au nombre de lignes possibles d'affichage, la longueur moyenne de chaque vers (NV) est : = LV. En poésie en vers définis, le marqueur "%" est utilisé pour entraîner les retours à la ligne. Pour la poésie en vers libre, on utilise une variation aléatoire du découpage du nombre de pieds par paires comprises entre 15 et XX, XX étant une donnée prédéterminée par l'auteur du texte. En considérant la génération d'une pluralité de textes, on peut générer une #uvre en compilant ces textes. De façon à assurer la cohérence de cette #uvre, il peut être nécessaire d'attribuer un même signe à une donnée développée tout au long de l'oeuvre, c'est-à-dire développée lors de la génération de chaque texte. Par exemple, si l'#uvre générée est un roman policier constitué de trois textes au cours desquels intervient un inspecteur de police identifié par une donnée "[inspecteur]", il est nécessaire que cet inspecteur soit identifié à un même personnage tout au long de l'oeuvre, même si ce personnage est choisi, dans un premier temps, aléatoirement parmi une classe "inspecteur" comprenant différents personnages d'inspecteur. Inversement, si plusieurs témoins apparaissent dans l'oeuvre, ces témoins étant codés par une même donnée Il [témoin] 11, cette donnée doit être développée en autant de types de témoins différents que requis par l'oeuvre, par exemple au cours d'auditions successives de témoins. De façon à tenir compte de ces différences, le générateur de texte utilise deux types de variables telles que définies ci-dessous: - des variables dites locales développent une donnée non-finie en une donnée finie appartenant à une classe prédéterminée. Dans cet exemple, une variable locale est codée sous la forme "[témoin-h]", où "témoin" identifie la classe utilisée et "-h" indique la nature locale de la variable. Si la classe associée à "témoin" comprend les données finies "Pierre", "Jean" et "Jacques", une donnée non-finie telle que Il [témoin-h] [0100000-v-regarderil [témoin-h] Il génère des textes tels que "Jean regarde Pierre", "Jean regarde Jean" ou "Pierre regarde Jacques". En d'autres termes, le générateur ne contrôle pas les différents développements possibles. - des variables de textes utilisées pour qu'une seule donnée finie soit associée à une donnée non finie de façon à remplacer cette dernière dans l'ensemble de l'oeuvre et du texte, comme dans l'exemple de l'inspecteur associé à une donnée "[inspecteur]"précédemment décrit. Dans cet exemple, on utilise des variables "carac" et "caract" pour associer une donnée "[caracx]" à un signe "[caract x]"correspondant. Par exemple, si la variable carac 1 est associé aux données "Jean, Pierre, Léon, Marcel", caract 1 est développé en "Jean", "Pierre", "Léon", "Marcel". Ainsi, "[caract 1] [010000-v-regarderl] [carac 1] ; [caract 1] [110000-v-aimerl] [carac 1]" générant, par exemple "Léon observe Pierre ; Léon n'aime pas Marcel". Par ailleurs, cette réalisation de l'invention utilise aussi le codage de la mobilité d'une ou de plusieurs données. De fait, en langue française, certains signes ou syntagmes, peuvent être déplacés tout en respectant les règles syntaxiques et sémantiques. Par exemple, en considérant la phrase suivante : "ce matin-là, un éléphant traversa la rue", on peut déplacer le syntagme "ce matin-là", ou le syntagme "un éléphant". On obtient alors "un éléphant, ce matin-là, traversa la rue", ou "un éléphant traversa la rue ce matin-là". Par ailleurs, il convient de remarquer que, en fonction de la langue de génération choisie, la mobilité du groupe de signes est distincte. Par exemple, en allemand, il est possible de placer un groupe sujet après un groupe verbal, ce qui est impossible en français d'une façon générale. Pour coder la mobilité d'un syntagme, on utilise un marqueur tel que ",*" suivi d'un marqueur "," qui encadrent la donnée, le signe et/ou le syntagme pouvant être déplacés, le générateur effectuant ces déplacements de façon aléatoire ou prédéterminée. Ainsi, ", un éléphant, traversa la rue, ,* ce matinlà" est une écriture codée permettant d'obtenir n'importe laquelle des phrases précédemment décrites. Cette mobilité peut être définie quelle que soit la nature de la donnée. Ainsi, pour une donnée non finie, on peut écrire "[matin], [personnage], [promenade].,* [soleil],"ce qui permet de déplacer chacune des données codées de façon aléatoire. De la même façon que l'on peut définir la mobilité d'un groupe, on peut définir si un groupe est facultatif, c'est-à-dire s'il n'est pas obligatoire de l'écrire. Ainsi, dans l'exemple précédemment décrit, "ce matin-là" est facultatif. Dès lors, on peut utiliser des marqueurs de début du groupe facultatif " " de la façon suivante : "un éléphant traversa la rue ." est une écriture permettant d'obtenir une des deux chaînes suivantes : " un éléphant traversa la rue." ou "un éléphant traversa la rue ce matin-là". Le moteur de génération choisi aléatoirement a permis ces deux possibilités. Des groupes facultatifs peuvent être internes à d'autres groupes facultatifs. Par exemple, en considérant le texte suivant "Le jour se levait dans une grande exhubérance. La place de la Concorde, noyée de soleil, resplendissait de lumière. Les passants étaient nombreux," on peut considérer que certains signes peuvent être ignorés, de façon à générer un texte tel que : "le jour se levait dans une grande exhubérance. Les passants étaient nombreux."ou "le jour se levait dans une grande exhubérance. La place de la Concorde resplendissait de lumière. Les passants étaient nombreux.". En d'autres termes, on considère que "la place de la Concorde, noyée de soleil, resplendissait de lumière. " et ", noyée de soleil, " sont des syntagmes facultatifs. Dans ce cas, on utilise des marqueurs de suppression indiquant chaque syntagme facultatif. Par exemple, "1-" indique le début d'un premier marqueur ; "-1" indique la fin de ce même marqueur, le texte ci-dessus pouvant donc être codé de la façon suivante : "le jour se levait dans une grande exhubérance. "1- la place de la Concorde "2-, noyée de soleil - 2" resplendissait de lumière. -1" les passants étaient nombreux." Le nombre d'imbrications entre données facultatives possibles est illimité, ces imbrications pouvant porter sur n'importe quel niveau de développement de ces données. La présente invention est susceptible de nombreuses variantes. Ainsi, les codages précédemment écrits peuvent être effectués sous diverses formes et de nouvelles règles syntaxiques et/ou de nouvelles contraintes rhétoriques peuvent être codées. Par exemple, de nouvelles conjugaisons peuvent être incluses dans l'annexe A et/ou un nouveau marqueur peut être utilisé pour coder un caractère répétitif propre à une donnée [i], cette donnée [i] étant alors développée deux fois par le générateur de texte. Annexe A Exemple de déclinaisons verbales codées dans la base de données BFR (l.avoir),ai,as,a,avons,avez,ont,avais,avais,avait,av ions,aviez,avaient,eus,eus,eut,eûmes,eûtes,eurent,aurai,auras,a ura,aurons,aurez,auront,aurais,aurais,aurait,aurions,auriez,aur aient,aie,aies,ait,ayions,ayiez,aient,ayant,avoir (2.être),suis,es,est,sommes,êtes,sont,étais,étais,éta it,étions,étiez,étaient,fus,fus,fut,fûmes,fûtes,furent,serai,se ras,sera,serons,serez,seront,serais,serais,serait,serions,serie z,seraient,sois,sois,soit,soyions,soyiez,soient,étant,être (3.dire),is,is,it,isons,isez,isent,isais,isais,isait, isions,isiez,isaient,is,is,it,îmes,îtes,irent,irai,iras,ira,iro ns,irez,iront,irais,irais,irait,irions,iriez,iraient,ise,ises,i se,isions,isiez,isent,isant,ire (4.jeter),ette,ettes,ette,etons,etez,ettent,etais,eta is,etait,etions,etiez,etaient,etai,etas,eta,etâmes,etâtes,etère nt,etterai,etteras,ettera,etterons,etterez,etteront,etterais,et terais,etterait,etterions,etteriez,etteraient,ette,ettes,ette,e tions,etiez,ettent,etant,eter ~,5 (6.aimer),e,es,e,ons,ez,ent,ais,ais,ait,ions,iez,aien t,ai,as,a,âmes,âtes,èrent,erai,eras,era,erons,erez,eront,erais, erais,erait,erions,eriez,eraient,e,es,e,ions,iez,ent,ant,er (7.placer),ce,ces,ce,çons,cez,cent,çais,çais,çait,cio ns,ciez,çaient,çai,ças,ça,çâmes,çâtes,cèrent,cerai,ceras,cera,c erons,cerez,ceront,cerais,cerais,cerions,ceriez,ceraient,ce,ces ,ce,cions,ciez,cent,çant,cer (8.manger),e,es,e,eons,ez,ent,eais,eais,eait,ions,iez ,eaient,eai,eas,ea,eâmes,eâtes,èrent,erai,eras,era,erons,erez,e ront,erais,erais,erait,erions,eriez,eraient,e,es,e,ions,iez,ent ,eant,er ~,9 (l0.inquiéter),ète,ètes,ète,étons,étons,ètent,étais,é tais,était,étions,étiez,étaient,étai,étas,éta,étâmes,étâtes,étè rent,éterai,éteras,étera,éterons,éterez,éteront,éterais,éterais ,éterait,éterions,éteriez,éteraient,ète,ètes,ète,étions,étiez,è tent,étant,éter (ll.appeler),elle,elles,elle,elons,elez,ellent,elais, elais,elait,elions,eliez,elaient,elai,elas,ela,elâmes,elâtes,el èrent,ellerai,elleras,ellera,ellerons,ellerez,elleront,ellerais ,ellerais,ellerait,ellerions,elleriez,elleraient,elle,elles,ell e,elions,eliez,ellent,elant,eler ~,12 ~,13 ~,14 -'15 (l6.essayer),aie,aies,aie,ayons,ayez,aient,ayais,ayai s,ayait,ayions,ayiez,ayaient,ayai,ayas,aya,ayâmes,ayâtes,ayèren t,aierai,aieras,aiera,aierons,aierez,aieront,aierais,aierais,ai erait,aierions,aieriez,aieriont,aie,aies,aie,ayions,ayiez,aient ,ayant,ayer (l7.broyer),ie,ies,ie,yons,yez,ient,yais,yais,yait,yi ons,yiez,yaient,yai,yas,ya,yâmes,yâtes,yèrent,ierai,ieras,iera, ierons,ierez,ieront,ierais,ierais,ierait,ierions,ieriez,ieraien t,ie,ies,ie,yions,uiez,ient,yant,yer (18.écrire),cris,cris,crit,crivons,crivez,crivent,cri vais,crivais,crivait,crivions,criviez,crivaient,crivis,crivis,c rivit,crivîmes,crivîtes,crivirent,crirai,criras,crira,crirons,c rirez,criront,crirais,crirais,crirait,cririons,cririez,criraien t,crive,crives,crive,crivions,criviez,crivent,crivant,crire (19.finir),is,is,it,issons,issez,issent,issais,issais ,issait,issions,issiez,issaient,is,is,it,îmes,îtes,irent,irai,i ras,ira,irons,irez,iront,irais,irais,irait,irions,iriez,iraient ,isse,isses,isse,issions,issiez,issent,issant,ir (20.couvrir),e,es,e,ons,ez,ent,ais,ais,ait,ions,iez,a ient,is,is,it,îmes,îtes,irent,irai,iras,ira,irons,irez,iront,ir ais,irais,irait,irions,iriez,iraient,e,es,e,ions,iez,ent, ant,ir (2l.rire),is,is,it,ions,iez,ient,iais,iais,iait,iions ,iiez,iaient,is,is,it,îmes,îtes,irent,irai,iras,ira,irons,irez, iront,irais,irais,irait,irions,iriez,iraient,ie,ies,ie,iions,ii ez,ient,iant,ire (22.aller),vais,vas,va,allons,allez,vont,allais,allai s,allait,allions,alliez,allaient,allai,allas,alla,allâmes,allât es,allèrent,irai,iras,ira,irons,irez,iront,irais,irais,irait,ir ions,iriez,iraient,aille,ailles,aille,allions,alliez,aillent, allant,aller (23.tenir),iens,iens,ient,enons,enez,iennent,enais,en ais,enait,enions,eniez,enaient,ins,ins,int,înmes,întes,inrent,i endrai,iendras,iendra,iendrons,iendrez,iendront,iendrais,iendra is,iendrait,iendrions,iendriez,iendraient,ienne,iennes,ienne,en ions,eniez,iennent,enant,enir (24.vivre),is,is,it,ivons,ivez,ivent,ivais,ivais,ivai t,ivions,iviez,ivaient,écus,écus,écut,écûmes,écûtes,écurent,ivr ai,ivras,ivra,ivrons,ivrez,ivront,ivrais,ivrais,ivrait,virions, ivriez,ivraient,ive,ives,ive,ivions,iviez,ivent,ivant,ivre (25.sentir),s,s,t,tons,tez,tent,tais,tais,tait,tions, tiez,taient,tis,tis,tit,tîmes,tîtes,tirent,tirai,tiras,tira,tir ons,tirez,tiront,tirais,tirais,tirait,tirions,tiriez,tiraient,t e,tes,te,tions,tiez,tent,tant,tir (26. feindre~craindre) ,ins,ins,int,ignons,ignez,ignent ,ignais,ignais,ignait,ignions,igniez,ignaient,ignis,ignis,ignit ,ignîmes,ignîtes,ignirent,indrai,indras,indra,indrons,indrez,in dront,indrais,indrais,indrait,indrions,indriez,indraient,igne,i gnes,igne,ignions,igniez,ignent,ignant,indre (27.couvrir),e,es,e,ons,ez,ent,ais,ais,ait,ions,iez,a ient,is,is,it,îmes,îtes,irent,irai,iras,ira,irons,irez,iront,ir ais,irais,irait,irions,iriez,iraient,e,es,e,ions,iez,ent, ant,ir ~,28 (29.broyer),oie,oies,oie,oyons,oyez,oient,oyais,oyais ,oyait,oyions,oyiez,oyaient,oyai,oyas,oya,oyâmes,oyâtes,oyèrent ,oierai,oieras,oiera,oierons,oierez,oieront,oierais,oierais,oie rait,oierions,oieriez,oieraient,oie,oies,oie,oyions,oyiez,oient ,oyant,oyer (30.boire),ois,ois,oit,uvons,uvez,oivent,uvais,uvais, uvait,uvions,uviez,uvaient,us,us,ut,ûmes,ûtes,urent,oirai,oiras ,oira,oirons,oirez,oiront,oirais,oirais,oirait,oirions,oiriez,o iraient,oive,oives,oive,uvions,uviez,oivent,uvant,oire (3l.craindre),ains,ains,aint,aignons,aignez,aignent,a ignais,aignais,aignait,aignions,aigniez,aignaient,aignis,aignis ,aignit,aignîmes,aignîtes,aignirent,aindrai,aindras,aindra,aind rons,aindrez,aindront,aindrais,aindrais,aindrait,aindrions,aind riez,aindraient,aigne,aignes,aigne,aignions,aigniez,aignent, aignant,aindre (32.dormir),s,s,t,mons,mez,ment,mais,mais,mait,mions, miez,maient,mis,mis,mit,mîmes,mîtes,mirent,mirai,miras,mira,mir ons,mirez,miront,mirais,mirais,mirait,mirions,miriez,miraient,m e,mes,me,mions,miez,ment,mant,mir (33.courir),s,s,t,ons,ez,ent,ais,ais,ait,ions,iez,aie nt,us,us,ut,ûmes,ûtes,urent,rai,ras,ra,rons,rez,ront,rais,rais, rait,rions,riez,raient,e,es,e,ions,iez,ent,ant,ir (34.mourir),eurs,eurs,eurt,ourons,ourez,eurent,ourais ,ourais,ourait,ourions,ouriez,ouraient,ourus,ourus,ourut,ourûme s,ourûtes,oururent,ourrai,ourras,ourra,ourrons,ourrez,ourront,o urrais,ourrais,ourrait,ourrions,ourriez,ourraient,eure,eures,eu re,ourions,ouriez,eurent,ourant,ourir (35.servir) ,s,s,t,vons,vez,vent,vais,vais,vait,vions, viez,vaient,vis,vis,vit,vîmes,vîtes,virent,virai,viras,vira,vir ons,virez,viront,virais,virais,virait,virions,viriez,viraient,v e,ves,ve,vions,viez,vent,vant,vir (36.fuir),uis,uis,uit,uyons,uyez,uient,uyais,uyais,uy ait,uyions,uyiez,uyaient,uis,uis,uit,uîmes,uîtes,uirent,uirai,u iras,uira,uirons,uirez,uiront,uirais,uirais,uirait,uirions,uiri ez,uiraient,uie,uies,uie,uyions,uyiez,uient,uyant,uir ~,(37.ouïr) (38.recevoir),çois,çois,çoit,cevons,cevez,çoivent,cev ais,cevais,cevait,cevions,ceviez,cevaient,çus,çus,çut,çûmes,çût es,çurent,cevrai,cevras,cevra,cevrons,cevrez,cevront,cevrais,ce vrais,cevrait,cevrions,cevriez,cevraient,çoive,çoives,çoive,cev ions,ceviez,çoivent,cevant,cevoir (l9.voir),ois,ois,oit,oyons,oyez,oient,oyais,oyais,oy ait,oyions,ouiez,oyaient,is,is,it,îmes,îtes,irent,errai,erras,e rra,errons,errez,erront,errais,errais,errait,errions,erriez,err aient,oie,oies,oie,oyions,oyiez,oient,oyant,oir -, (40.pourvoir) (4l.savoir),sais,sais,sait,savons,savez,savent,savais ,savais,savait,savions,saviez,savaient,sus,sus,sut,sûmes,sûtes, surent,saurai,sauras,saura,saurons,saurez,sauront,saurais,saura is,saurait,saurions,sauriez,sauraient,sache,saches,sache,sachio ns,sachiez,sachent,sachant,savoir (42.devoir),dois,dois,doit,devons,devez,doivent,devai s,devais,devait,devions,deviez,devaient,dus,dus,dut,dûmes,dûtes ,durent,devrai,devras,devra,devrons,devrez,devront,devrais,devr ais,devrait,devrions,devriez,devraient,doive,doives,doive,devio ns,deviez,doivent,devant,devoir (43.pouvoir),eux,eux,eut,ouvons,ouvez,euvent,ouvais,o uvais,ouvait,ouvions,ouviez,ouvaient,us,us,ut,ûmes,ûtes,urent,o urrai,ourras,ourra,ourrons,ourrez,ourront,ourrais,ourrais,ourra it,ourrions,ourriez,ourraient,uisse,uisses,uisse,uissions,uissi ez,uissent,ouvant,ouvoir -, (44.mouvoir) - , ,eut,~ ,~ ,~ ,~ ,~ ,euvait,~ ,~ ,~ ,~ ,~ ,ut,~ , ~ ,~ ,~ ,~ ,euvra,~ ,~ ,~ ,~ ,~ ,euvrait,~ ,~ ,~ ,~ ,~ ,euve,~ ,~ ,~,,(45.pleuvoir),euvant,euvoir (46.falloir), ,~ ,faut,~ ,~ ,~ ,~ ,~ ,fallait, ,~ , ~ ,~ ,~ ,fallut,~ ,~ ,~ ,~ ,~ ,faudra,~ ,~ ,~ ,~ ,~ ,faudrait, , , , , ,faille, , , ,,falloir (47.valoir),vaux,vaux,vaut,valons,valez,valent,valais ,valais,valait,valions,valiez,valaient,valus,valus,valut,valûme s,valûtes,valurent,vaudrai,vaudras,vaudra,vaudrons,vaudrez,vaud ront,vaudrais,vaudrais,vaudrait,vaudrions,vaudriez,vaudraient,v aille,vailles,vaille,valions,valiez,vaillent, valant,valoir (48.vouloir),eux,eux,eut,oulons,oulez,eulent,oulais,o ulais,oulait,oulions,ouliez,oulaient,oulus,oulus,oulut,oulûmes, oulûtes,oulurent,oudrai,oudras,oudra,oudrons,oudrez,oudront,oud rais,oudrais,oudrait,oudrions,oudriez,oudraient,euille,euilles, euille,oulions,ouliez,euillent, oulant, * ouloir -, (49 . asseoir) -, (50 . seoir) -, (51. surseoir) -, (52 . choir) (53.rendre),ds,ds,d,dons,dez,dent,dais,dais,dait,dion s,diez,daient,dis,dis,dit,dîmes,dîtes,dirent,drai,dras,dra,dron s,drez,dront,drais,drais,drait,drions,driez,draient,de,des,de,d ions,diez,dent,dant,dre (54.prendre),ends,ends,end,enons,enez,ennent,enais,en ais,enait,enions,eniez,enaient,is,is,it,îmes,îtes,irent,endrai, endras,endra,endrons,endrez,endront,endrais,endrais,endrait,end rions,endriez,endraient,enne,ennes,enne,enions,eniez,ennent,ena nt,endre (55.battre),bats,bats,bat,battons,battez,battent,batt ais,battais,battait,battions,battiez,battaient,battis,battis,ba ttit,battîmes,battîtes,battirent,battrai,battras,battra,battron s,battrez,battront,battrais,battrais,battrait,battrions,battrie z,battraient,batte,battes,batte,battions,battiez,battent,battan t,battre (56.mettre),ets,ets,et,ettons,ettez,ettent,ettais,ett ais,ettait,ettions,ettiez,ettaient,is,is,it,îmes,îtes,irent,ett rai,ettras,ettra,ettrons,ettrez,ettront,ettrais,ettrais,ettrait ,ettrions,ettriez,ettraient,ette,ettes,ette,ettions,ettiez,ette nt,ettant,ettre -, 57 -, 58 (59.craindre),ains,ains,aint,aignons,aignez,aignent,a ignais,aignais,aignait,aignions,aigniez,aingnaient,aignis,aigni s,aignit,aignîmes,aignîtes,aignirent,aindrai,aindras,aindra,ain drons,aindrez,aindront,aindrais,aindrais,aindrait,aindrions,ain driez,aindraient,aigne,aignes,aigne,aignions,aigniez,aignent,ai gnant,aindre -, 60 -,61 (62.faire),fais,fais,fait,faisons,faites,font,faisais ,faisais,faisait,faisions,faisiez,faisaient,fis,fis,fit,fîmes,f îles,firent,ferai,feras,fera,ferons,ferez,feront,ferais,ferais, ferait,ferions,feriez,feraient,fasse,fasses,fasse,fassions,fass iez,fassent,faisant,faire (63.taire),ais,ais,ait,aisons,aisez,aisent,aisais,ais ais,aisait,aisions,aisiez,aisaient,us,us,ut,ûmes,ûtes,urent,air ai,airas,aira,airons,airez,airont,airais,airais,airait,airions, airiez,airaient,aise,aises,aise,aisions,aisiez,aisent,aisant,ai re (64.connaître),ais,ais,aît,aissons,aissez,aissent,ais sais,aissais,aissait,aissions,aissiez,aissaient,us,us,ut,ûmes,û tes,urent,aîtrai,aîtras,aîtra,aîtrons,aîtrez,aîtront,aîtrais,aî trais,aîtrait,aîtrions,aîtriez,aîtraient,aisse,aisses,aisse,ais sions,aissiez,aissent,aissant,aître (65.naître),is,is,ît,issons,issez,issent,issais,issai s,issait,issions,issiez,issaient,quis,quis,quît,quîmes,quîtes,q uirent,îtrai,îtras,îtra,îtrons,îtrez,îtront,îtrais,îtrais,îtrai t,îtrions,îtriez,îtraient,isse,isses,isse,issions,issiez,issent ,issant,ître -, 66 -, 67 (68.croire),ois,ois,oit,oyons,oyez,oient,oyais,oyais, oyait,oyions,oyiez,oyaient,us,us,ut,ûmes,ûtes,urent,oirai,oiras ,oira,oirons,oirez,oiront,oirais,oirais,oirait,oirions,oiriez,o iraient,oie,oies,oie,oyions,oyiez,oient,oyant,oire (69.boire),ois,ois,oit,uvons,uvez,oivent,uvais,uvais, uvait,uvions,uviez,uvaient,us,us,ut,ûmes,ûtes,urent,oirai,oiras ,oira,oirons,oirez,oiront,oirias,oirais,oirait,oirions,oiriez,o iraient,oive,oives,oive,uvions,uviez,oivent,uvant,oire -, 70 -,71 -,72 -, 73 -, 74 (75.suivre),s,s,t,vons,vez,vent,vais,vais,vait,vions, viez,vaient,vis,vis,vit,vîmes,vîtes,virent,vrai,vras,vra,vrons, vrez,vront,vrais,vrais,vrait,vrions,vriez,vraient,ve,ves,ve,vio ns,viez,vent,vant,vre -, 76 (77.lire),is,is,it,isons,isez,isent,isais,isais,isait ,isions,isiez,isaient,us,us,ut,ûmes,ûtes,urent,irai,iras,ira,ir ons,irez,iront,irais,irais,irait,irions,iriez,iraient,ise,ises, ise,isions,isiez,isent,isant,ire -, 78 -, 79 (80.écrire),is,is,it,ivons,ivez,ivent,ivais,ivais,iva it,ivions,iviez,ivaient,ivis,ivis,ivît,ivîmes,ivîtes,ivirent,ir ai,iras,ira,irons,irez,iront,irais,irais,irait,irions,iriez,ira ient,ive,ives,ive,ivions,iviez,ivent,ivant,ire (8l.confire),is,is,it,isons,isez,isent,isais,isais,is ait,isions,isiez,isaient,is,is,it,îmes,îtes,irent,irai,iras,ira ,irons,irez,iront,irais,irais,irait,irions,iriez,iraient,ise,is es,ise,isions,isiez,isent,isant,ire (82.cuire),uis,uis,uit,uisons,uisez,uisent,uisais,uis ais,uisait,uisions,uisiez,uisaient,uisis,uisis,uisit,uisîmes,ui sîtes,uisirent,uirai,uiras,uira,uirons,uirez,uiront,uirais,uira is,uirait,uirions,uiriez,uiraient,uise,uises,uise,uisions,uisie z,uisent,uisant,uire (83.lever),ève,èves,ève,evons,evez,èrent,evais,evais, evait,evions,eviez,evaient,evai,evas,eva,evâmes,evâtes,evèrent, éverai,éveras,évera,éverons,éverez,éveront,éverais,éverais,éver ait,éverions,éveriez,éveraient,ève,èves,ève,evions,eviez,èvent, evant,ever (84.céder),ède,èdes,ède,édons,édons,èdent,édais,édais ,édait,édions,édiez,édaient,édai,édas,éda,édâmes,édâtes,édèrent ,éderai,éderas,édera,éderons,éderez,éderont,éderais,éderais,éde rait,éderions,éderiez,éderaient,ède,èdes,ède,édions,édiez,èdent ,édant,éder (85.imprégner),ègne,ègnes,ègne,égnons,égnez,ègnent,ég nais,égnais,égnait,égnions,égniez,égnaient,égnai,égnas,égna,égn âmes,égnâtes,égnèrent,égnerai,égneras,égnera,égnerons,égnerez,é gneront,égnerais,égnerais,égnerait,égnerions,égneriez,égneraien t,ègne,ègnes,ègne,égnions,égniez,ègnent,égnant,égner (86.vociférer),ère,ères,ère,érons,érons,èrent,érais,é rais,érait,érions,ériez,éraient,érai,éras,éra,érâmes,érâtes,érè rent,érerai,éreras,érera,érerons,érerez,éreront,érerais,érerais ,érerait,érerions,éreriez,éreraient,ère,ères,ère,érions,ériez,è rent,érant,érer (87.mener),ène,ènes,ène,enons,enez,ènent,enais,enais, enait,enions,eniez,enaient,enai,enas,ena,enâmes,enâtes,enèrent, énerai,éneras,énera,énerons,énerez,éneront,énerais,énerais,éner ait,énerions,éneriez,éneraient,ène,ènes,ène,enions,eniez,ènent, enant,ener (88.peser),èse,èses,èse,esons,esez,èsent,esais,esais, esait,esions,esiez,esaient,esai,esas,esa,esâmes,esâtes,esèrent, éserai,éseras,ésera,éserons,éserez,éseront,éserais,éserais,éser ait,éserions,éseriez,éseraient,èse,èses,èse,esions,esiez,èsent, esant,eser Annexe B Tableau des pronoms 1 d'un des d'une des d'un des d'une des 2 un de ses une de ses~ un de ses une de ses 3 au à la~ à 1' aux aux aux aux aux 4 ce cette cet cette ces ces ces ces 5 d'un d'une d'un d'une de de d' d' 6 du de la de l' des des des des des 7 le- la l' l' les les les les 8 le plus~ le plus- le plus- le plus- les plus les plus- les plus- les plus 9 leur- leur leur leur leurs leurs leurs leurs 10 mon~ ma~ mon~ mon~ mes mes mes mes 11 notre notre~ notre~ notre nos- nos~ nos- nos- 12 quelque quelque~ quelque~ quelque~ quelques~ quelques~ quelques~ quelques~ 13 son sa~ son~ son ses~ ses~ ses ses 14 ton- ta- ton~ ton- tes- tes- tes tes 15 tout- toute- tout~ toute~ tous~ toutes- tous toutes 16 tout le- toute la tout l' toute l' tous les toutes les tous les toutes les 17 tout toute tout leur~ toute tous leurs~ toutes leurs~ toutes toutes leurs leur~ leur~ leur~ leurs 18 tout mon~ toute ma~ tout mon- toute tous mes~ toutes mes~ tous mes toutes mes mon~ 19 tout toute tout toute tous nos toutes nos tous nos toutes nos notre notre notre notre 20 tout son toute sa tout son toute tous ses tous ses toutes toutes ses son~ ses~ 21 tout ton~ toute ta- tout ton- toute tous tes- toutes tes- tous tes- toutes tes ton 22 tout toute tout toute tous vos~ toutes vos- tous vos- toutes vos votre~ votre~ votre~ votre 23 un une~ un~ une~ des des des des 24 un des une des un des une des 25 votre~ votre votre votre vos vos vos vos REVENDICATIONS 1. Procédé de codage automatique de texte caractérisé en ce qu'on code des signes par des données ( [1] , [2],...[i]...[n]) telles que pour une donnée ([il) sont définis des paramètres d'une métalangue représentant un champ sémantique, des contraintes syntaxiques et une langue de génération. 2. Procédé selon la revendication 1 caractérisé en ce qu'on définit le champ sémantique d'une donnée ([i]) en lui associant des groupes ou classes de signes, le champ sémantique de cette donnée ([i]) étant un identifiant, ou clef (201,201.1,201.1.1), de ces classes. 3. Procédé selon la revendication 2 caractérisé en ce que, chaque classe comprenant des signes d'une même langue, on associe des classes de différentes langues à une même clef (201,201.1,201.1.1) de classe. 4. Procédé selon la revendication 2 ou 3 caractérisé en ce qu'on intègre dans une première classe la clef (201,201.1,201.1.1) d'une deuxième classe. 5. Procédé selon la revendication 2,3 ou 4 caractérisé en ce qu'on associe un descripteur contextuel à une donnée ([i]) pour exclure ou imposer une association entre des classes de signes et une donnée ([il). 6. Procédé selon l'une des revendications précédentes caractérisé en ce qu'on code à l'aide d'un descripteur syntaxique au moins une des contraintes syntaxiques suivantes : une négation, un temps et/ou une personne de conjugaison, un pronom sujet, un pronom complément, un ordre d'écriture, un genre et/ou un nombre, un déterminant. 7. Procédé selon l'une des revendications précédentes caractérisé en ce que, dans une donnée ([i]), on code séparément la partie invariable et les déclinaisons d'un signe. 8. Procédé selon l'une des revendications précédentes, caractérisé en ce que chaque donnée ([i]) code un champ sémantique, des contraintes syntaxiques et/ou une langue de génération à l'aide de marqueurs extérieurs à cette donnée ([il). 9. Procédé de génération automatique de texte utilisant des signes codés selon l'une des revendications précédentes. 10. Procédé selon la revendication 9 caractérisé en ce que, pour générer un texte, on impose un ordre à un ensemble de données ([1],[2],...[n]), on substitue chaque donnée ([i]), par au moins un signe propre à la langue codée par la donnée substituée, puis on génère un texte en écrivant chaque signe généré dans l'ordre de substitution. 11. Procédé selon la revendication 9 ou 10, faisant appel à des signes codés selon l'une des revendications 2 à 5, caractérisé en ce qu'on remplace chaque donnée ([i]) par un signe appartenant à une classe dont la clef correspond au champ sémantique de la donnée ([i]). 12. Procédé selon la revendication 9,10 ou 11, faisant appel à des signes codés selon la revendication 5, caractérisé en ce que le descripteur contextuel est modifié au cours de la génération du texte de façon à augmenter le nombre de classes exclues ou imposées. 13. Procédé selon l'une des revendication 9 à 12, faisant appel à des signes codés selon la revendication 7, caractérisé en ce que, des bases (Bj) de données déterminant la partie invariable et les terminaisons de signes associés au champ sémantique d'une donnée ([i]), on remplace cette donnée ([i]) par une donnée comprenant la partie invariable et les terminaisons d'un signe associé. 14. Procédé selon la revendication 13, caractérisé en ce que, à partir des contraintes syntaxiques, on choisit une terminaison de la donnée qui, combinée à sa partie invariable, génère un signe respectant les contraintes syntaxiques associées à la donnée développée. 15. Procédé selon la revendication 13 ou 14, caractérisé en ce qu'on mémorise dans une base (Bj) la partie invariable et les terminaisons des signes d'une même langue. 16. Procédé selon la revendication 13,14 ou 15, caractérisé en ce qu'on mémorise dans chaque base (Bj) la partie invariable et les terminaisons de signes relatifs à une utilisation particulière, telle qu'un domaine technique ou un lexique juridique. 17. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une quelconque des revendications 1 à 16 lorsque ledit programme est exécuté sur un ordinateur. 18. Dispositif de génération automatique de texte caractérisé en ce qu'il comprend des moyens pour générer un texte à partir de données codées selon l'une des revendications 1 à 8. 19. Serveur de génération de texte caractérisé en ce qu'il comprend des moyens pour générer un texte à partir de données codées selon l'une des revendications 1 à 8. 20. Terminal de génération de texte, caractérisé en ce qu'il comprend des moyens pour générer un texte à partir de données codées selon l'une des revendications 1 à 8. 21. Application du procédé selon l'une des revendications 9 à 16 à la réalisation d'un dispositif choisi parmi un dispositif de génération de texte, un serveur de génération de texte et un terminal de génération de texte.