FR 3066630 A1 20181123 FR 1754276 A 20170516 - 1 - L'invention concerne des systèmes et méthodes d'analyse de corpus de textes, notamment des textes d'écrit spontané rédigés par des clients, des consommateurs ou plus généralement des utilisateurs du web social. Les techniques de traitement automatique des langues, communément désignées 5 par l'acronyme TAL, sont essentielles pour mettre en oeuvre des systèmes automatiques capables d'opérer un traitement intelligent des contenus textuels. Il existe une très large variété d'application des techniques de TAL à l'analyse de contenus textuels. A titre d'exemples, on peut citer leur application à des fins d'indexation et de recherche de documents, de résumé automatique, de traduction automatique, 10 d'analyse syntaxique, etc. Les systèmes de communication médiatisés par ordinateur sont, depuis plusieurs années, largement utilisés à l'échelle mondiale. De ce fait, l'expression spontanée des utilisateurs de tels systèmes résulte, notamment, en une masse de contenus textuels d'écrit spontané, dont l'analyse est primordiale pour l'ensemble des secteurs de 15 l'activité socio-économique. Dans ce contexte, les techniques de TAL sont exploitées à des fins applicatives variées, en particulier pour valoriser les flux de contenus textuels massifs existant dans les environnements internes et externes des entreprises et des organisations. Les systèmes informatisés qui implémentent ces techniques sont généralement adossés sur des représentations normatives des contenus textuels, par 20 le biais de l'exploitation de différents types de connaissances pouvant ou non être de nature linguistique. La difficulté principale du traitement automatique de textes d'écrit spontané découle de deux caractéristiques inhérentes à ce type de matériau linguistique. D'une part, ces textes sont souvent rédigés avec une grammaire et une orthographe approximatives. 25 D'autre part, leur vocabulaire est non-canonique et très fluctuant. Les systèmes de TAL classiques à base de règles utilisent principalement des méthodes normatives. Ces dernières reposent sur l'utilisation de ressources linguistiques, notamment des grammaires, des lexiques, des ontologies, etc. Ces ressources linguistiques sont normatives, préconçues et coûteuses à produire et à maintenir. Or ces systèmes 30 échouent souvent à traiter des textes d'écrit spontanés car l'écart à la norme est trop élevé. Ainsi, ce type de système n'est pas performant sur tous les types de textes. Adapter des systèmes classiques aux textes d'écrit spontané est un processus long et coûteux, notamment à cause du phénomène de boîte noire et de traitement en cascade inhérent à ces systèmes. Les systèmes de TAL basés sur l'apprentissage 35 automatique peuvent ne pas s'embarrasser de la norme orthographique et grammaticale ou de ressources linguistiques normatives pour fonctionner. Cependant ils s'appuient nécessairement sur des corpus d'apprentissage difficiles à obtenir ou 3066630 - 2 - coûteux à construire et à maintenir. Ces systèmes ne sont pas exempts du phénomène de boîte noire qui complexifie l'identification et la correction des erreurs et alourdit la maintenance. Pour finir, l'adaptation du moteur d'analyse à un domaine ou une thématique pour 5 répondre à un cas d'application donné est nécessaire pour garantir une qualité d'analyse suffisante. Les systèmes classiques, qui reposent sur des approches globalisantes et normatives, sont moins performants, sans adaptation et coûteux à adapter. Force est de constater qu'à ce jour, il n'existe pas de système satisfaisant capable à la fois d'alléger de tels coûts opérationnels et de maintenir des performances 10 qualitatives sur tous types de textes, en particulier les textes d'écrit spontané. Un but de l'invention est de pallier au moins certains de ces inconvénients en proposant notamment un procédé d'analyse de texte souple et adaptable à un grand nombre de textes. A cet effet, on prévoit selon l'invention un procédé d'analyse d'un texte, dans lequel, 15 pour au moins une forme d'une entrée lexicale prédéterminée du texte, cette entrée appartenant à un lexique prédéterminé stocké dans un support de stockage, un calculateur : - génère au moins une variante orthographique de la forme de l'entrée lexicale, et - enregistre la ou chaque variante dans le lexique. 20 Ainsi, la génération de variantes orthographiques permet une analyse du texte qui ne soit pas mise en défaut par une orthographe ou une grammaire approximative. Cette génération de variantes n'est pas non plus mise en défaut par l'enrichissement éventuel du vocabulaire employé par les utilisateurs rédigeant les textes analysés puisque les variantes orthographiques de nouvelles expressions peuvent systématiquement être 25 générées. On s'affranchit aussi de l'utilisation des normes qui présentent les défauts présentés dans ce qui précède. Au contraire, on décrit ainsi avec souplesse les différentes formulations d'une expression. Enfin, la génération de variantes ne dépend pas de la langue dans laquelle est 30 rédigé le texte, ce qui rend le procédé de l'invention souple et adaptable à un grand nombre de textes. Avantageusement, la forme de l'entrée lexicale étant définie par une chaîne de caractères, on applique à la forme de l'entrée lexicale au moins un générateur de variantes par motif, ce générateur étant apte à effectuer l'une des actions suivantes : 35 - rendre optionnel un caractère de la forme de l'entrée lexicale, par exemple au moyen de l'opérateur point d'interrogation (?), - répéter un nombre fini de fois un caractère de la forme, par exemple au moyen de 3066630 - 3 - l'opérateur intervalle ( { } ), - placer dans la forme de l'entrée lexicale une chaîne de caractères à une position prédéterminée et choisie parmi une liste de chaines de caractères prédéterminée, la liste étant généralement de cardinal égal à deux, par exemple au moyen de l'opérateur alternative ( ), - placer dans la forme de l'entrée lexicale un caractère, à une position prédéterminée, appartenant à des classes de caractères non-prédéterminées et sans complément, par exemple au moyens de crochets ( [ ), et - ordonnancer l'application de générateurs de variantes, par exemple au moyen du 10 parenthésage. Ces générateurs de variantes sont simples à mettre en oeuvre et permettent de générer un nombre important de variantes orthographiques pour une entrée lexicale donnée. Cela permet ainsi de couvrir un grand nombre d'orthographes éventuelles qu'un utilisateur peut donner à un mot prédéterminé. 15 Avantageusement, on applique à la forme de l'entrée lexicale au moins un générateur de variantes par transformation, ce générateur étant apte à effectuer au moins l'une des actions suivantes : capitalisation, minusculisation, majusculisation et désaccentuation. Une erreur sur un accent ou une majuscule, par exemple pour un nom propre, 20 n'induisant en général pas de confusion sur le sens qu'on souhaite donner à un mot, il peut être fréquent qu'un utilisateur ne daigne pas corriger une telle erreur. De telles erreurs peuvent donc apparaitre fréquemment dans un texte d'écrit spontané. Grâce aux générateurs de variantes par transformation, l'analyse du texte n'est pas mise en défaut par ces erreurs. 25 Avantageusement, les formes entrées lexicales étant au moins au nombre de deux et associées à deux entrées lexicales différentes, on applique au moins un générateur de formes cooccurrentes aux deux formes, avec comme paramètres un entier naturel formant un paramètre de distance et un booléen d'ordonnancement formant un paramètre d'ordonnancement, de manière à générer des formes cooccurrentes 30 résultant de la concaténation des deux formes avec une distance comprise entre 0 et le paramètre de distance, et aussi les formes cooccurrentes inverses si le paramètre d'ordonnancement est égal à « faux ». On génère ainsi des groupes de mots génériques comprenant les deux formes. Cela permet de prendre en compte le contexte dans lequel s'inscrit le texte, et notamment de 35 désambigüiser le sens d'un mot du texte en recherchant les mots se trouvant dans son voisinage local. De préférence, le générateur de formes cooccurrentes est appliqué aux variantes 3066630 - 4 - orthographiques des deux formes générées au lieu d'être appliqué directement aux deux formes. On combine ainsi les méthodes de génération de variantes et de formes cooccurrentes pour générer d'un seul coup un grand nombre de formes cooccurrentes 5 de deux entrées lexicales prenant en compte les variantes orthographiques. Avantageusement, on segmente en mots des produits de la génération de variantes, on crée un arbre d'entrées lexicales comprenant ces mots, chacun de ces mots étant représenté par une feuille de l'arbre, et on segmente le texte en mots de manière à obtenir un ensemble de mots du texte, puis on compare chaque mot du texte avec les mots de l'arbre. De manière plus générale, on segmente les produits en unités orthographiques. Ces dernières correspondent à des mots en langue française ou en langue anglaise. En langue chinoise, les unités orthographiques correspondent plutôt à des caractères. Une fois la génération de variantes effectuée, les variantes sont rangées dans un 15 arbre associé à une étiquette prédéterminée de l'entrée lexicale ou des entrées lexicales. En trouvant une correspondance entre le texte et l'arbre, on peut associer l'étiquette au texte, ce qui contribue à l'analyse du texte. De préférence, préalablement à la segmentation du texte en mots, on transforme l'arbre d'entrées lexicales en un arbre de profondeur égale à 1. 20 De préférence, préalablement à la segmentation en mots du texte, on attribue de manière bijective un identifiant entier strictement positif à chaque feuille de l'arbre. Ces deux opérations permettent de faciliter les recherches de correspondances entre l'arbre et le texte, ce qui revient à optimiser le procédé d'analyse. Avantageusement, on met en communication le calculateur avec un serveur, par 25 exemple une mémoire vive d'un ordinateur, dans lequel est stocké le texte. Avantageusement, le procédé est utilisé pour l'une des applications suivantes : - le ciblage sémantique de contenus en vue de l'adaptation de la publicité sur un réseau de communication tel qu'internet, - la veille sociale sur un réseau de communication tel qu'internet, 30 - l'analyse de tendances marketing ou sociétales, - l'analyse de courriels pour le profilage de clientèles, ou - l'analyse de tickets pour la maintenance industrielle. Le procédé d'analyse de texte permet d'obtenir des résultats intéressants pour ces applications. 35 On prévoit également un programme d'ordinateur qui comprend des instructions de code aptes à commander l'exécution d'un procédé tel que défini plus haut lorsqu'il est exécuté sur un ordinateur. 3066630 - 5 - On prévoit aussi un procédé de mise à disposition du programme ci-dessus en vue de son téléchargement sur un réseau de communication. On prévoit de plus une machine, telle qu'un ordinateur, comprenant le programme d'ordinateur ci-dessus et des moyens aptes à exécuter ce programme. 5 On prévoit enfin un support de stockage lisible par un ordinateur contenant des instructions qui, lorsqu'elles sont exécutées par un ordinateur, font mettre en oeuvre à cet ordinateur un procédé tel que défini plus haut. On va maintenant décrire un mode de réalisation de l'invention à l'appui des dessins annexés sur lesquels : 10 - la figure 1 est un schéma illustrant les moyens mis en oeuvre par le procédé selon l'invention, - la figure 2 est un exemple d'arbre d'entrées lexicales produit lors de la mise en oeuvre du procédé selon l'invention, - les figures 3a, 3b et 3c illustrent des arbres d'entrées lexicales générés à partir de 15 différents types d'entrées lexicales, - la figure 4 illustre le procédé d'aplatissement d'un arbre d'entrées lexicales réalisé lors de la mise en oeuvre du procédé selon l'invention, et - la figure 5 illustre le remplacement bijectif des feuilles d'un arbre d'entrées lexicales par des identifiants. 20 On va maintenant présenter un mode de mise en oeuvre du procédé de l'invention. En référence à la figure 1, un réseau de communication 2 tel qu'internet comprend des textes 4 rédigés par des utilisateurs du réseau de communication 2. Une machine 6, telle qu'un ordinateur, est connectée au réseau de 25 télécommunication 2. La machine 6 est apte à télécharger au moins certains des textes 4 sur un serveur 8 de la machine 6, par exemple une mémoire vive de la machine 6. Ainsi, le texte 4 du réseau de communication 2 à analyser est téléchargé sur le serveur 8 en vue de son analyse. La machine 6 comprend un support de stockage 10, tel qu'un disque dur, dans 30 lequel est stocké au moins un lexique 12. Le ou chaque lexique 12 comprend un ensemble d'entrées lexicales 14. Le lexique 12 et ses entrées lexicales 14 seront décrits plus bas. La machine 6 comprend un calculateur 16. Celui-ci est connecté avec le support de stockage 10 et est apte à : 35 - lire les entrées lexicales 14 des lexiques 12, et - modifier les lexiques 14, notamment en y enregistrant de nouvelles formes. Le calculateur 16 est également connecté au serveur 8 en vue de l'analyse des 3066630 - 6 - textes qui y ont été téléchargés et qu'on souhaite analyser. Le procédé d'analyse selon l'invention met en oeuvre les étapes générales suivantes : - l'enrichissement des lexiques 12 par des mécaniques de génération de variantes 5 orthographiques et syntaxiques, - l'organisation des variantes ainsi générées en vue de leur exploitation, - l'analyse du texte à l'aide de comparaisons avec les lexiques enrichis. Dans ce qui suit, on va décrire chacune de ces trois étapes générales du procédé d'analyse. 10 Description de la ressource linguistique Un lexique est un ensemble d'entrées lexicales, associés à une ou plusieurs étiquettes ou labels qui permettent de caractériser le sens donné au lexique. Une entrée lexicale est composée de formes, qui correspondent à des suites de mots ou de caractères en fonction de la langue, ou de formes cooccurrentes, qui correspondent à des ensembles de forme apparaissant dans une fenêtre de mots ou caractères). Afin d'enrichir le lexique, on utilise un ou plusieurs générateurs de variantes qui s'appuient sur des mécaniques de génération de variantes orthographiques et syntaxiques. Le calculateur a pour fonction de : - générer au moins une variante orthographique d'une forme ou d'une forme cooccurrente de l'entrée lexicale au moyen du ou des générateurs, et - enregistrer la ou chaque variante dans le lexique. Dans ce qui suit, on décrira notamment deux types de générateurs, à savoir les générateurs de formes et les générateurs de formes cooccurrentes. Ces générateurs 25 permettent de générer des ensembles de formes ou de formes cooccurrentes et de les enregistrer dans le lexique. Une étiquette unique peut être attribuée à un générateur. Le cas échéant, les formes ou les formes cooccurrentes générées par ce générateur sont également associées à cette étiquette. Ce sont ces formes ou ces formes cooccurrentes associées à l'étiquette 30 que nous allons chercher à identifier dans un texte à traiter ou analyser. Les formes sont les éléments de base du lexique. Chaque forme est décrite avec une chaîne de caractères. Un système de tokenization est un système de découpage d'une chaîne de caractère en tokens. Un token est une sous-séquence de la chaîne de caractères. 35 Dans le cadre de l'invention, il s'agit d'un mot de la chaîne. En d'autres termes, la tokenization revient à segmenter la chaîne de caractères en unités orthographiques. A titre d'exemple, en langue française ou anglaise, cela revient à segmenter la chaîne de 3066630 - 7 - caractère en mots. Dans ce qui suit, on se place dans le contexte où la chaîne de caractère est segmentée en mots. Pour une chaîne de caractères donnée, la fonction du système de segmentation est de placer des séparateurs à certaines positions de la chaîne. Les mots résultant de l'opération sont les chaînes de caractères comprises 5 entre deux séparateurs. Par exemple, pour la chaîne « Je suis une chaîne à segmenter », le résultat de la segmentation serait : « Je », « », « suis », « », « une », « », « chaîne », « », « à », « », « segmenter ». Un token dont la fonction est de séparer les unités orthographiques est appelé token séparateur ou tout simplement séparateur, par exemple le token « ». 10 Le générateur de variantes permet de définir de manière intuitive les ensembles formes à l'aide de deux mécaniques de génération de variantes : la génération de variante par motif et la génération de variante par transformation. La génération de variante par motif est décrite par une chaîne de caractères représentant une expression régulière restreinte en l'espèce aux quantifieurs finis 15 (notamment le point d'interrogation « ? » et l'intervalle fini « {n,m} »), à l'alternative (barre verticale « I »), au parenthésage (« () ») et aux classes de caractères nonprédéfinies et sans complément (crochet « »). L'ensemble des formes générées par un motif est composé de toutes les formes décrites par des chaînes de caractères qui correspondent au motif. 20 L'alternative consiste à proposer des chaînes alternatives et à permettre de choisir une de ces chaînes parmi celles situées entre les barres verticales « ». Par exemple, le générateur « chienIchatlavion » génère les formes suivantes : « chien », « chat », « avion ». Le parenthésage permet de former des groupements afin de faciliter l'utilisation des opérateurs. Par exemple, le générateur « ren(olaultlaud) » génère les formes suivantes : « reno », « renault », « renaud ». A titre d'exemple supplémentaire, le générateur « galettes? d(es roislu roi) » génère les formes suivantes : « galette du roi », « galettes du roi », « galette des rois », « galettes des rois ». L'intervalle fini {n, m} permet la répétition de n à m fois l'élément précédant 30 l'intervalle. Par exemple, le générateur « ouai{1, 4}s » génère les formes suivantes : « ouais », « ouaiis », « ouaiiis », « ouaiiiis ». Les crochets permettent de choisir un des caractères parmi ceux entre crochets. Par exemple, le générateur « mang[éeèê] » génère les formes suivantes : « mangé », « mange », « mangè », « mangé ». 35 La génération de variantes par transformation est décrite par des opérations de transformation de mots qui peuvent se combiner. Les opérations de variation disponibles sont en l'espèce au nombre de quatre. Le calculateur a le choix d'activer ou 3066630 - 8 - de désactiver des opérations de variante pour une forme donnée. Une opération de variation prend en entrée un mot et restitue en sortie un autre mot variant. Les quatre opérations sont les suivantes : - La capitalisation ( CAP) qui met en majuscule le premier caractère du mot. 5 Exemple : CAP( « chien ») = « Chien ». - La minusculisation ( MIN ) qui met en minuscule tous les caractères du mot. Exemple : MIN( «AUDI ») = « audi ». - La majusculisation ( MAJ ) qui met en majuscule tous les caractères du mot. Exemple : MAJ( « audi ») = «AUDI ». 10 - La désaccentuation ( DES) qui désaccentue tous les caractères du mot. Exemple : DES( « éventré ») = « eventre ». Les variantes générées par une opération de variation sont toutes les formes résultant de la combinaison des mots originaux et de leur forme variantes. Exemple : CAP( « chien de paille » ) = « Chien De Paille », « chien De Paille », 15 « Chien De paille », « Chien de Paille », « Chien de paille », « chien De paille », « chien de Paille ». Si plusieurs opérations de variation sont activées, les variantes d'un mot sont les mots résultant de toutes les combinaisons d'opérations possibles. Exemple : CAP+DES( « été indien » ) = « ete indien », « ete Indien », « Ete Indien », 20 « Éte Indien », « éte Indien », « Éte indien ». Une forme cooccurrente représente deux formes séparées par un nombre maximal de mots. Il s'agit d'une construction récursive composée de deux formes ordonnées associées à un entier naturel représentant la distance maximale entre les deux entrées. Le générateur de formes cooccurrentes permet de générer un ensemble de formes 25 cooccurrentes. Il est décrit par deux générateurs (Generatorl et Generator2) d'entrées ordonnées, une distance maximale (MaxDistance) formée par un entier naturel et un booléen d'ordonnancement (Ordered). MaxDistance et Ordered forment respectivement des paramètres de distance et d'ordonnancement. Les formes cooccurrentes générées sont toutes les formes cooccurrentes résultant 30 de la concaténation des formes générées par le générateur d'entrées n°1 avec celles générées par le générateur d'entrées n°2 avec une distance comprise entre 0 et MaxDistance. Si le booléen d'ordonnancement est faux, la forme cooccurrente inverse est également générée. Par exemple, avec les paramètres suivants : Generator1 = « avion? », Generator2 = « réaction », MaxDistance = 2 et Ordered = « faux », les 35 formes cooccurrentes suivantes sont générées : « avions [0..3] réaction », « avion [0..3] réaction », « réaction [0..3] avions », « réaction [0.. 3] avion ». On peut également mentionner deux autres générateurs. 3066630 - 9 - Un générateur de groupe permet de regrouper un ensemble de formes décrites par un ensemble de générateurs. Il est décrit par une liste de générateurs. Les formes générées sont toutes les formes générées par les générateurs de la liste. Un générateur de référence permet de générer les formes du générateur associées 5 à une étiquette. Il est décrit par une étiquette correspondant au générateur ciblé. Les formes générées sont toutes les formes générées par la cible. Compilation de la ressource linguistique Il s'agit désormais d'organiser les variantes générées en vue de leur exploitation 10 pour l'analyse du texte. Dans le cadre du présent mode de mise en oeuvre du procédé, la première étape de compilation est un prétraitement consistant à générer des arbres d'entrées lexicales relatives aux générateurs possédant une étiquette. En effet, on s'intéresse aux seules 15 entrées lexicales possédant une étiquette. Un arbre d'entrées lexicales est un arbre n-aire dont des feuilles sont des mots, et dont des noeuds internes possèdent au moins deux fils ordonnés. De plus, à chaque couple de fils se succédant est associé un entier représentant la distance maximale entre les deux fils. On a représenté en figure 2 un exemple d'arbre d'entrées lexicales. 20 Les arbres d'entrées lexicales sont créés de la manière suivante en fonction des générateurs : - Générateur de variantes : Toutes les variantes générées sont segmentées. Pour chaque variante, on conserve dans l'ordre les N mots ou tokens non-séparateurs. Si le nombre de mots est de 1, on crée un arbre composé d'une racine représentant un mot. 25 Si le nombre de mots est strictement supérieur à 1, on crée ensuite un arbre composé d'une racine et de N fils ordonnés tels que le n-ième fils correspond au n-ième mot. La distance maximale entre les fils de l'arbre est définie à 0. - Générateur de forme cooccurrente. Si le booléen d'ordonnancement est égal à « vrai », on crée deux ensembles d'arbres lexicaux (LexTreesl et LexTrees2) contenant les formes créées respectivement à partir de deux générateurs Generator1 et Generator2. Ensuite, pour toutes les combinaisons de ces ensembles, on crée un arbre composé d'une racine ayant un premier fils issu de l'ensemble LexTreesl et un deuxième fils issu de l'ensemble LexTree2. La distance entre les fils correspond à la valeur du paramètre MaxDistance. Si le booléen d'ordonnancement est égal à « faux », on génère également les arbres lexicaux en inversant la combinaison des deux ensembles d'arbre lexicaux LexTreesl et LexTrees2. 3066630 -10- - Générateur de groupe ou de référence. S'agissant de générateurs faisant référence à un ou plusieurs générateurs, on crée les arbres lexicaux correspondant à ces générateurs. On a représenté en figures 3a, 3b et 3c des arbres d'entrées lexicales générés à 5 partir de différents types d'entrées lexicales. La deuxième étape consiste à « aplatir » les arbres d'entrées lexicales, c'est-à-dire à les transformer en arbre de profondeur 1. Pour effectuer cette opération, on applique une opération de réduction aux noeuds internes non-racine dont les fils sont des feuilles. 10 Soit un noeud x étant le n-ième fils d'un noeud y et distant de ses frères précédents et suivants (si ces derniers existent) de PrevMaxDist et NextMaxDist. L'opération de réduction consiste à : - retirer le noeud x de l'arbre, - rattacher tous les fils de x à y en les insérant à la position n où était rattachée x et 15 en conservant les distances maximales entre les fils de x, - si x n'est pas le premier fils de y, associer la distance PrevMaxDist entre le premier fils de x et le fils n-1 de y, et - si x n'est pas le dernier fils de y, associer la distance NextMaxDist entre le dernier fils de x et le fils n+1 de y. 20 La figure 4 illustre le procédé d'aplatissement d'un arbre de profondeur égale à deux. La troisième étape consiste à faire l'inventaire des feuilles (c'est-à-dire des mots) des arbres lexicaux et à les faire correspondre à un identifiant entier supérieur à 0, ce de manière bijective. La bijection entre un mot et un identifiant, c'est-à-dire l'application 25 d'un dictionnaire de mots, peut s'effectuer à l'aide de structures de données optimisées pour la recherche de chaîne de caractères tels que des arbres radix. Ces structures de données étant connues, on ne les décrira pas davantage dans ce qui suit. La structure de données et l'algorithme de recherche ne sont pas non plus décrits dans ce qui suit. Pour finir, on remplace les mots des feuilles des arbres lexicaux par les identifiants 30 correspondants. La figure 5 illustre cette étape de remplacement. La quatrième étape sert à réduire le nombre d'arbres lexicaux en les fusionnant. Les arbres lexicaux ayant la même étiquette, le même nombre de fils et les mêmes distances entre les fils peuvent être fusionnés en fusionnant les feuilles à la même position. Le résultat de la fusion de plusieurs feuilles est l'union des identifiants de ces 35 feuilles. Enfin, les arbres ayant une topologie identique mais ayant des étiquettes différentes sont fusionnés sous un arbre unique avec union des étiquettes d'origine. La cinquième étape consiste à construire un index de correspondance entre les 3066630 arbres et les identifiants de leur première feuille. Cet index est nommé LexTreeWithFirstlds, et permettra de trouver facilement les arbres lexicaux commençant par un identifiant à l'étape d'application de la ressource linguistique. 5 Application de la ressource linguistique Les variantes générées étant désormais convenablement organisées, le calculateur procède à l'analyse du texte à l'aide des lexiques enrichis. Les correspondances des arbres d'entrées lexicales avec le texte à analyser s'effectue en deux étapes, à savoir la conversion des textes en listes d'identifiants puis 10 la recherche de correspondances dans l'arbre d'entrées lexicales. La conversion d'un texte en une liste d'identifiants s'effectue en segmentant en mots dans un premier temps le texte avec le même système de segmentation que celui utilisé pour la génération de lexique. Puis le dictionnaire de mots créé lors de la troisième étape décrite en relation avec le titre « Compilation de la ressource 15 linguistique » est appliqué pour trouver les identifiants correspondants aux tokens non-séparateurs. Les mots n'ayant pas de correspondance dans le dictionnaire se voient attribuer l'identifiant 0 qui n'est jamais attribué par le dictionnaire. Le résultat est une liste d'identifiants de tokens non-séparateurs. Le recherche de correspondances s'effectue par un parcours progressif de la liste 20 d'identifiants de mots. A chaque nouvel identifiant parcouru, l'index LexTreeWithFirstlds (voir la quatrième étape décrite en relation avec le titre « Compilation de la ressource linguistique ») est utilisé pour trouver les arbres lexicaux dont le premier identifiant correspond à l'identifiant courant. Dès lors deux cas se présentent. Dans le premier cas, si l'arbre d'entrée lexicale trouvé est composé d'une seule 25 feuille, alors une correspondance de l'arbre d'entrée lexicale est trouvée. Dans le second cas, si l'arbre d'entrée lexicale trouvé est composé de plusieurs feuilles, alors une correspondance partielle est enregistrée. Cette correspondance partielle contient une référence à l'arbre d'entrée lexicale candidat, l'index du dernier identifiant correspondant - ici l'identifiant courant - et l'index de la prochaine feuille 30 attendue de l'arbre d'entrée lexicale. Ensuite pour chacune des correspondances partielles enregistrées, on effectue les opérations suivantes : - si la distance entre le dernier identifiant correspondant et l'identifiant courant est supérieur à la distance maximale de la prochaine feuille attendue, la correspondance 35 partielle est retirée de la liste ; - si l'identifiant courant correspond à l'un des identifiants de la prochaine feuille mais qu'il ne s'agit pas de la dernière feuille de l'arbre, la correspondance est mise à 3066630 - 12 - jour de la manière suivante : l'index du dernier identifiant correspondant est mis à jour, ici avec l'index de l'identifiant courant, et le numéro de la prochaine feuille attendue est incrémenté ; - si l'identifiant courant correspond à l'un des identifiants de la prochaine feuille et 5 qu'il s'agit de la dernière feuille de l'arbre d'entrée lexicale, une correspondance de l'arbre d'entrée lexicale est trouvée. Pour une étiquette donnée L, on définit son nombre d'occurrences dans le texte T à analyser comme étant le nombre de fois où un arbre d'entrée lexicale portant l'étiquette L génère une correspondance à la fin du traitement de T. 10 Afin de prévenir les ambiguïtés pouvant survenir lors de l'utilisation du générateur de lexique hors de son contexte thématique, chaque générateur de lexique est créé en ayant la connaissance de la ou les thématique(s) dans le(s)quelle(s) il peut s'appliquer. Ainsi chaque générateur de lexique est associé à une thématique particulière. Lorsqu'un texte est traité, une ou plusieurs thématiques lui sont attribuées au 15 préalable via un système de catégorisation (qui n'est pas présenté ici). Chaque arbre candidat est associé à un contexte global. En faisant correspondre le contexte de chaque arbre à la thématique courante, on s'assure que les arbres "hors contexte" ne viennent pas bruiter le processus. Par exemple, un arbre associé au contexte "aviation" est écarté lorsque la thématique courante est "cuisine". 20 Le procédé d'analyse selon l'invention peut par exemple être employé pour les applications suivantes : - le ciblage sémantique de contenus en vue de l'adaptation de la publicité sur internet, - la veille sociale sur internet, 25 - l'analyse de tendances marketing et sociétales, - l'analyse de courriels pour le profilage de clientèle, ou - l'analyse de ticket pour la maintenance industrielle. On peut prévoir un programme d'ordinateur qui comprend des instructions de code aptes à commander l'exécution d'un procédé d'analyse tel que décrit dans ce qui 30 précède lorsqu'il est exécuté sur un ordinateur, ainsi qu'un procédé de mise à disposition de ce programme en vue de son téléchargement sur un réseau de communication. Ce programme peut notamment être enregistré dans un support de stockage lisible par un ordinateur contenant des instructions qui, lorsqu'elles sont exécutées par un ordinateur, font mettre en oeuvre à cet ordinateur un procédé 35 d'analyse tel que décrit dans ce qui précède. Bien entendu, on pourra apporter à l'invention de nombreuses modifications sans sortir du cadre de celle-ci. REVENDICATIONS1. Procédé d'analyse d'un texte (4), caractérisé en ce que, pour au moins une forme d'une entrée lexicale (14) prédéterminée du texte (4), cette entrée (14) appartenant à un lexique (12) prédéterminé stocké dans un support de stockage (10), un calculateur (16) : - génère au moins une variante orthographique de la forme de l'entrée (14), et - enregistre la ou chaque variante dans le lexique (12). 2. Procédé selon la revendication précédente, dans lequel, la forme de l'entrée lexicale (14) étant définie par une chaîne de caractères, on applique à la forme de l'entrée lexicale (14) au moins un générateur de variantes par motif, ce générateur 10 étant apte à effectuer l'une des actions suivantes : - rendre optionnel un caractère de la forme de l'entrée lexicale, par exemple au moyen de l'opérateur point d'interrogation (?), - répéter un nombre fini de fois un caractère de la forme, par exemple au moyen de l'opérateur intervalle ( { ), 15 - placer dans la forme de l'entrée lexicale une chaîne de caractères à une position prédéterminée et choisie parmi une liste de chaines de caractères prédéterminée, la liste étant généralement de cardinal égal à deux, par exemple au moyen de l'opérateur alternative ( I ), - placer dans la forme de l'entrée lexicale un caractère, à une position 20 prédéterminée, appartenant à des classes de caractères non-prédéterminées et sans complément, par exemple au moyens de crochets ( [ ), et - ordonnancer l'application de générateurs de variantes, par exemple au moyen du parenthésage. 3. Procédé selon l'une quelconque des revendications précédentes, dans lequel on 25 applique à la forme de l'entrée lexicale (14) au moins un générateur de variantes par transformation, ce générateur étant apte à effectuer au moins l'une des actions suivantes : capitalisation, minusculisation, majusculisation et désaccentuation. 4. Procédé selon l'une quelconque des revendications précédentes, dans lequel, les formes étant au moins au nombre de deux et associées à deux entrées lexicales (14) 30 différentes, on applique au moins un générateur de formes cooccurrentes aux deux formes cooccurrentes, avec comme paramètres un entier naturel formant un paramètre de distance et un booléen d'ordonnancement formant un paramètre d'ordonnancement, de manière à générer des formes cooccurrentes résultant de la concaténation des deux formes avec une distance comprise entre 0 et le paramètre de distance, et aussi les 35 formes cooccurrentes inverses si le paramètre d'ordonnancement est égal à « faux ». 3066630 - 14 - 5. Procédé selon la revendication précédente, dans lequel, dans le procédé de la revendication 4, le générateur de formes cooccurrentes est appliqué aux variantes orthographiques des deux formes générées au lieu d'être appliqué directement aux deux formes. 5 6. Procédé selon l'une quelconque des revendications précédentes, dans lequel : - on segmente en mots des produits de la génération de variantes, - on crée un arbre d'entrées lexicales comprenant ces mots, chacun de ces mots étant représenté par une feuille de l'arbre, et - on segmente le texte (4) en mots de manière à obtenir un ensemble de mots du 10 texte, puis on compare chaque mot du texte avec les mots de l'arbre. 7. Procédé selon la revendication précédente, dans lequel, préalablement à la segmentation du texte en mots, on transforme l'arbre d'entrées lexicales en un arbre de profondeur égale à 1. 8. Procédé selon la revendication précédente, dans lequel, préalablement à la 15 segmentation en mots du texte (4), on attribue de manière bijective un identifiant entier strictement positif à chaque feuille de l'arbre. 9. Procédé selon l'une quelconque des revendications précédentes, dans lequel on met en communication le calculateur (16) avec un serveur (8), par exemple une mémoire vive d'un ordinateur (6), dans lequel est stocké le texte (4). 20 10. Procédé selon l'une quelconque des revendications précédentes, utilisé pour l'une des applications suivantes : - le ciblage sémantique de contenus en vue de l'adaptation de la publicité sur un réseau de communication tel qu'internet, - la veille sociale sur un réseau de communication tel qu'internet, 25 - l'analyse de tendances marketing ou sociétales, - l'analyse de courriels pour le profilage de clientèles, ou - l'analyse de tickets pour la maintenance industrielle. 11. Programme d'ordinateur caractérisé en ce qu'il comprend des instructions de code aptes à commander l'exécution d'un procédé selon l'une quelconque des 30 revendications précédentes lorsqu'il est exécuté sur un ordinateur. 12. Procédé de mise à disposition du programme de la revendication précédente en vue de son téléchargement sur un réseau de communication. 13. Machine (6), telle qu'un ordinateur, comprenant le programme d'ordinateur selon la revendication 11 et des moyens aptes à exécuter ce programme. 35 14. Support de stockage lisible par un ordinateur contenant des instructions qui, lorsqu'elles sont exécutées par un ordinateur, font mettre en oeuvre à cet ordinateur un procédé selon l'une quelconque des revendications 1 à 10 et 12.