FR 2896603 A1 20070727 FR 0600537 A 20060120 PROCEDE ET DISPOSITIF POUR EXTRAIRE DES INFORMATIONS ET LES TRANSFORMER EN DONNEES QUALITATIVES D'UN DOCUMENT TEXTUEL L'invention concerne notamment un procédé d'extraction d'informations et de transformation en données qualitatives d'un document textuel. Elle est utilisée notamment dans le domaine de l'analyse et de la compréhension de documents textuels. Dans fa description, on désigne sous le mot token la représentation d'une unité par un motif de bits et par tokenizer le dispositif adapté à effectuer cette conversion. De même, le terme match a pour sens l' identification ou la reconnaissance . En présence de documents non structurés, par exemple de textes, le 10 problème posé est d'extraire l'information pertinente tout en gérant la complexité et les ambiguïtés de la langue naturelle. Aujourd'hui, les flux d'informations sont de plus en plus présents et leur analyse est nécessaire si l'on veut améliorer la productivité et la rapidité de lecture des textes. 15 Plusieurs méthodes d'extraction sont connues de l'art antérieur. Par exemple, la méthode utilisée par AT&T dont un exemple est accessible par le lien internet http://www.research.att.com/sw/tools/fsm/, la méthode développée par Xerox illustrée sur le lien Internet http://www.xrce.xerox.com/competencies/contentanalysis/fst/home.en.html et la méthode utilisée par Intex/Unitex/Nooj illustrée sur le 20 lien http://www-igrn.univ-mlv.fr/-unitex/. Toutes ces techniques ont toutefois comme inconvénients, de ne pas être suffisamment flexibles et performantes, car l'accent a été donné sur l'aspect linguistique et sur la puissance d'expression, plutôt que sur l'aspect industriel. Elles ne permettent pas de traiter des flux importants en temps raisonnable tout en 25 conservant la qualité d'analyse. L'objet de l'invention repose notamment sur une nouvelle approche : on choisit une taille cle fenêtre en début de procédé, on traite les tokens un par un, les tokens arrivant en flux, on applique ensuite la recherche dictionnaire et les grammaires recevant les tokens les uns à la suite des autres, dans le cas où elles sont utilisées de manière séquentielle. L'objet de la présente invention concerne un procédé pour extraire des informations à partir d'un fichier de données comprenant une première étape où les données sont transmises à un dispositif ou tokenizer adapté à les convertir au cours d'une première étape en unités élémentaires ou tokens , les unités élémentaires étant transmises à une deuxième étape de recherche des dictionnaires et une troisième étape de recherche dans des grammaires, caractérisé en ce que pour l'étape de conversion, on utilise une fenêtre glissante de taille donnée, on convertit en tokens les données au fur et à mesure de leur arrivée dans le tokenizer et on transmet les tokens au fur et à mesure de leur formation à l'étape de recherche dans des dictionnaires, puis à l'étape de recherche des grammaires. L'objet: de la présente invention offre notamment les avantages suivants : • l'architecture permet d'éviter la duplication des données et d'utiliser plusieurs 20 grammaires en parallèle ou en série sans résultat intermédiaire, • du fait de la rapidité de la méthode mise en oeuvre, on peut appliquer une multitude de grammaires complexes et donc extraire une grande quantité d'informations des documents sans dégrader les modèles linguistiques, • l'architecture gère nativement la priorité des grammaires ce qui permet de 25 définir des "modèles à échelles". D'autres caractéristiques et avantages de la présente invention apparaîtront mieux à la lecture de la description qui suit d'un exemple donné à titre illustratif et nullement limitatif annexé des figures qui représentent : • La figure 1, un schéma fonctionnel du fonctionnement général de la chaîne de traitement du domaine de l'analyse de documents, • La figure 2, un schéma fonctionnel des traitements qui peuvent être effectués dans une chaîne de traitement, • La figure 3, un schéma fonctionnel du procédé selon l'invention permettant d'extraire des entités, des relations entre ces entités, et de convertir des documents en données numériques, • La figure 4, un exemple d'automate de conversion d'un code (grammatical, flexionnel, sémantique ou syntaxique) en entier, • La figure 5, un automate permettant de reconnaître une suite d'entiers représentant les codes (grammaticaux, flexionnels, sémantiques et syntaxiques) définis en figure 4, • La figure 6, un procédé de construction d'un sous dictionnaire optimal pour un ensemble de grammaires à partir d'un dictionnaire d'origine, • La figure 7, un procédé de suppression des transitions vide dans un transducteur, • La figure 8, un exemple d'automate pour illustrer le procédé de la figure 7, • La figure 9, la sortie du procédé de la figure 7 appliqué à l'automate de la figure 8, • La figure 10, un ensemble de lemmes et de formes fléchies avant la séparation en deux automates, • La figure 11, l'automate sur lettre des lemmes de la figure 10, • La figure 12, l'automate sur lettre des formes fléchies de la figure 10, • La figure 13, les étapes d'un procédé permettant de calculer les noeuds successeurs d'un noeud de l'automate à partir d'une entrée, • La figure 14, une utilisation des grammaires de réécriture et d'extraction, • La figure 15, un procédé de détection des matches dans un automate, • La figure 16, un procédé de mise à jour des matches potentiels, ce procédé est utilisé par le procédé de la figure 15, • La figure 17, la gestion de la priorité entre deux grammaires G1 et G2 (G2 étant prioritaire sur G1) via une méthode de scoring ou de sélection du matche de plus haute priorité lorsqu'il y a chevauchement, • La figure 18, la gestion de la désambiguïsation quand il y a un chevauchement entre une grammaire d'extraction et une grammaire de désambiguïsation, et • La Figure 19 un exemple d'application du procédé selon l'invention pour un serveur de messagerie. La figure 1 représente une chaîne de traitement général d'analyse de documents. Dans la majorité des cas, cette chaîne comporte, par exemple : - un élément chargé de convertir n'importe quel format en entrée vers un format texte, bloc 1.1, - un module d'extraction de méta-données comme la date, l'auteur, la source, ...bloc 1.2, - un module de traitement sur ces documents bloc 1.3, - un module d'indexation, bloc 1.4, pour des recherches et des utilisations ultérieures. Le procédé selon l'invention se situe plus particulièrement au niveau du bloc de traitement 1.3. Sur la figure 2, on a illustré des exemples de traitements classiques 25 comme le résumé de documents, 4 ou la recherche de documents doublons, 5. Le procédé selon l'invention a notamment pour fonction d'effectuer les traitements suivants : • l'extraction d'entités 6 : par exemple l'extraction de personnes, de faits, de la gravité d'un document, des sentiments ... • l'extraction de relations 7 entre les entités : par exemple, les relations entre les dates et les faits, entre les personnes et les faits ... • la conversion 8 d'un document en un ensemble de données numériques pour un traitement ultérieur comme de la classification automatique, de la gestion de connaissance ... Pour effectuer ces traitements, on utilise, par exemple, un ensemble de documents sous forme de fichiers ou de zones mémoire en ASCII ou Unicode. On 10 applique ensuite le procédé de transformation d'un texte décrit à la figure 3 qui se décompose notamment en 3 grandes étapes : 1) le découpage d'un document source en un ensemble d'unités élémentaires ou tokens , par un dispositif ou Tokenizer , 3.1, adapté à convertir un document en éléments, 15 2) la reconnaissance des unités simples et composées, 3.2, présentes dans les dictionnaires, 3) les applications de grammaires, 3.3. Etape 3.1 Le procédé selon l'invention utilise une fenêtre glissante d'unités, c'est à 20 dire qu'il conserve uniquement les X derniers tokens du texte (X étant un nombre assez grand puisqu'il détermine le nombre maximal d'unités qui pourront être réécrites par une grammaire). La taille de la fenêtre glissante est choisie au début du procédé. Lors de l'étape de conversion des données en tokens , le tokenizer 25 3.1 convertit les données au fur et à mesure qu'elles sont reçues avant de les transmettre sous forme de flux à l'étape de recherche dans un dictionnaire, 3.2. Les types de tokens sont par exemple : • espace : retour chariot, tabulation, ... • séparateur : slash ; parenthèses ; crochets ; ... • ponctuation : virgule, point-virgule, point d'interrogation, point d'exclamation,... • nombre uniquement : de 0 à 9, • alphanumérique : ensemble de caractères alphabétiques (dépendant de la langue) et des nombres, • fin de document. Le tokenizer 3.1 est pourvu, par exemple, d'un processeur adapté à convertir un caractère minuscule en majuscule et vise versa, puisque cela dépend 10 de la langue. En sortie de tokenizer , 3.1, les tokens sont transmis au fur et à mesure, à l'étape de recherche dans les dictionnaires, 3.2. Etape 3.2 la recherche dans les dictionnaires Les dictionnaires 3.2 sont constitués d'entrées composées notamment 15 des éléments suivants : • une forme fléchie, • un lemme, • une étiquette ou tag grammaticale, • un ensemble de codes flexionnels, 20 • un ensemble de codes sémantiques, • un ensemble de codes syntaxiques. Le dictionnaire 3.2 est, par exemple, un automate sur lettre dont chaque noeud possède des attributs linguistiques et peut être final ou non. Un noeud est final lorsque le mot est complètement présent dans le dictionnaire. Les tokens sont transmis au module de recherche des dictionnaires 3.2 sous forme de flux, c'est-à-dire qu'ils arrivent les uns après les autres et sont traités de la même façon les uns après les autres par le module 3.2. Le module vérifie pour chaque token s'il correspond ou non à une entrée dictionnaire. Dans le cas où un token correspond à une entrée dictionnaire, alors le procédé traite les deux cas suivants : • soit le noeud correspondant de l'automate est un noeud final: dans ce cas l'entrée dictionnaire est ajoutée dans la fenêtre de token , ainsi que la position du token et du noeud de l'automate dans une liste afin d'identifier une potentielle entité composée, • soit le noeud n'est pas un noeud final, dans ce cas, la position du token est juste un ajout pour identifier une potentielle entité composée. Dans le deuxième cas, on ne sait pas encore si l'entrée est une entitée composée du dictionnaire ou pas, car elle correspond uniquement au début (par exemple on reçoit pomme qui correspond partiellement à l'entité composée pomme de terre ). Si plus tard on reçoit la suite, de terre , on a alors détecté l'entité composée, autrement on supprime l'entité potentielle puisqu'elle n'est pas présente. Une option de la recherche dans les dictionnaires, permet de définir que les caractères en minuscules dans le dictionnaire peuvent correspondre à un caractère en majuscule ou en minuscule dans le texte. Par contre, un caractère en majuscule dans le dictionnaire ne peut correspondre qu'à un caractère en majuscule dans le texte. Cette option permet notamment de prendre en compte des documents mal formatés comme, par exemple, un texte entièrement en majuscules (on en rencontre souvent dans des bases de données anciennes). Selon une variante de réalisation du procédé et dans le but d'optimiser les temps de recherche, le procédé construit un sous-ensemble du dictionnaire pendant la compilation de celui-ci. Un exemple de mise en oeuvre d'étapes est donné à la figure 6. Le procédé récupère toutes les transitions des grammaires qui font référence au dictionnaire (lemmes, tags grammaticaux ...). Toutes ces transitions sont compilées et on sélectionne toutes les entrées dictionnaire qui correspondent au moins à l'une de ces transitions. Les entrées dictionnaire reconnaissent au moins 5 l'une des transactions. Par exemple, si une grammaire contient uniquement les transitions et comme faisant référence au dictionnaire, on va extraire uniquement les entrées du dictionnaire qui sont des verbes ou des adverbes avec Tirne ou temps comme code sémantique. 10 Le processus de compilation des transitions en une transition unique comprend par exemple les étapes suivantes : • la première étape consiste à extraire, de toutes les grammaires utilisées, l'ensemble des codes grammaticaux, sémantiques, syntaxiques et flexionnels contenus dans chacune des transitions des grammaires, et 15 • lors d'une deuxième étape, on construit un automate sur lettre qui associe à chaque code un entier unique. Chaque ensemble de codes est donc constitué d'un ensemble d'entiers que l'on ordonne du plus petit au plus grand et que l'on insère dans un automate sur entier afin de déterminer si oui ou non cette combinaison 20 de code est présente dans les graphes. Si, par exemple, les grammaires contiennent les codes ADV+Temps et V, alors on a l'automate qui transforme les codes en entier de la figure 4. Cet automate convertit : • la chaîne de caractères ADV en valeur entière : 1 25 • la chaîne de caractères V en valeur entière : 2 • la chaîne de caractères Temps en valeur entière : 3 Une fois l'automate convertissant les codes en entier construit, le deuxième automate représentant les transitions est construit (figure 5). Sur cet automate, la transition ADV+Temps est représentée par le noeud 2 et la transition V par le noeud 3. De façon similaire, un automate sur texte est construit pour l'ensemble des lemmes utilisés dans les grammaires. Les lemmes étant du texte, il est facile 5 d'imaginer la conversion en automate sur texte. De manière détaillée, le schéma de la figure 6 illustre la construction d'un sous dictionnaire optimal. II comporte par exemple les étapes suivantes : pour chaque entrée E du dictionnaire D, 10, 12, on vérifie, 13, si E matche l'automate T représentant les transiitions ou, 14, l'automate L contenant les lemmes. Si c'est le 10 cas, on ajoute, E, 15, dans le sous dictionnaire O. Ce processus se répète pour toutes les entrées du dictionnaire D. Par cet élagage de dictionnaire, on construit le dictionnaire le plus petit possible pour une application donnée, ce qui permet de gagner en performance sur la plupart des grammaires. 15 Les éléments issus de l'étape de recherche de dictionnaire sont transmis un par un et sous forme de flux à l'étape d'application des grammaires dont un exemple est détaillé ci-après. Etape 3.3 application des grammaires sur les éléments issus de l'étape de recherche des dictionnaires. 20 Avantageusement, le procédé met en oeuvre des grammaires qui ont été compilées. Compilation des grammaires Avant même de pouvoir utiliser les grammaires dans le procédé selon l'invention, on effectue une compilation qui peut se décomposer en deux étapes : 25 - La suppression des transitions vides, - La décomposition des transitions en automate sur lettre. La figure 7 décrit un exemple de suite d'étapes permettant de supprimer les transitions vides d'un automate, 20. Pour tous les noeuds N de l'automate A, 21, pour toutes les transitions T du noeud N vers un noeud M. Si la transition T est une transition vide et que M est un noeud final, alors on supprime T, 26, et on duplique, toutes les transitions qui ont M comme noeuds de départ en mettant N comme nouveau noeud de départ (on ne change pas le noeud de destination). Si la transition T est une transition vide et que M est un noeud non final, alors on supprime T et on duplique, 27 toutes les transitions qui ont M comme noeud de destination en mettant N comme nouveau noeud de destination (on ne change pas le noeud source). On supprime tous les noeuds inaccessibles, 28, non accessibles par le noeud d'origine. Les figures 8 et 9 schématisent un automate de remplacement sur lequel est appliqué le procédé décrit en relation avec la figure 7 et le résultat obtenu. Cette modification de l'automate permet d'en simplifier le parcours puisque les transitions vides sont toujours `vrai' et doivent toujours être parcourues. La deuxième étape consiste à transformer l'ensemble des lemmes et l'ensemble des formes fléchies, contenus dans les transitions de l'automate en deux nouveaux automates sur lettres afin d'accélérer les recherches de noeuds suivants. Par exemple, les transitions du noeud 0 vers 1 dans la figure 10 contiennent un ensemble de lemmes et de formes fléchies. Une recherche classique devrait donc balayer l'ensemble de ces transitions pour 20 détecter celles qui peuvent correspondre à l'entrée reçue. La transformation de cet ensemble de lemmes et de forme fléchies donne deux automates : • le premier automate contient uniquement les lemmes, c'est à dire lemme , autre et test comme le montre la figure 11, 25 • le deuxième automate contient uniquement les formes fléchies, c'est à dire forme , fléchi et test comme le montre l'automate de la figure 12. Dans le procédé selon l'invention, une transition d'un noeud vers N autres noeuds est définie notamment par un ensemble de trois automates : • l'automate des lemmes, • l'automate des formes fléchies, • l'automate des codes grammaticaux, syntaxiques, sémantiques et flexionnels. Chacun de ces automates renvoie un entier. S'il y a une reconnaissance ou matche , cet entier est en fait un indice de tableau dans lequel est stocké l'ensemble des noeuds suivants accessibles par cet état. La figure 13 représente différentes étapes permettant de calculer les noeuds successeurs à partir d'une entrée de la fenêtre glissante de tokens . Le procédé décrit à la figure 13 comporte, par exemple, les étapes décrites ci-après. Lorsqu'un token arrive il y a deux possibilités : 1) le token est une entrée du dictionnaire, il est alors reconnu par le dictionnaire, 2) le token n'est pas reconnu par le dictionnaire. Le but est de calculer pour un noeud actuel N, l'ensemble des nouveaux noeuds atteignables par une entrée E de la fenêtre glissante. Si l'entrée E est une entrée du dictionnaire, 30, on recherche, 31, les noeuds qui peuvent être atteints par E dans l'automate des codes (grammaticaux, syntaxiques, sémantiques et flexionnels) du noeud N et, 32, dans l'automate des lemmes du noeud N. On ajoute tous ces noeuds qui peuvent être atteints, à la liste L. Si l'entrée E n'est pas une entrée du dictionnaire, on recherche, 33, les noeuds pouvant être atteints par E dans l'automate des formes fléchies du noeud N et on les ajoute dans la liste L. Application des grammaires sur la fenêtre glissante de tokens Les grammaires locales se décomposent, par exemple, de deux manières : les grammaires d'extraction uniquement (représentées par des automates à états finis) qui sont exécutées en parallèle, les grammaires de réécriture (représentées par des transducteurs) qui sont appliquées de manière séquentielle. Le schéma 14 illustre l'utilisation des grammaires de réécriture (ou transformation) et d'extraction sur des flux de tokens et les entrées dictionnaires. Grammaire d'extraction Les grammaires d'extraction 42i utilisent la suite de tokens et d'entrées du dictionnaire 40 définie auparavant pour détecter un matche dans un automate. Pour cela, on utilise une liste de candidats potentiels d'extraction notée P qui contient les éléments suivants : - l'indice du prochain noeud à tester, la position du prochain token attendu, la position d'origine de ce candidat. Ces informations permettent de détecter si un nouveau token complète un matche potentiel ou non en regardant si sa position est celle qui est attendue et s'il valide une ou plusieurs transitions. Un exemple de sous-procédé permettant de mettre à jour les matches potentiels et de détecter les matches complet est décrit dans la figure 15, qui utilise lui-même un sous-procédé de mise à jour de la liste de clients potentiels dont les étapes sont détaillées à la figure 16. La figure 15 représente un exemple d'étapes permettant de mettre à jour les matches potentiels et de détecter les matches complet. Soit P ha liste des candidats potentiels d'extraction et Q une liste vide, A 25 un transducteur ou grammaire d'extraction et T une entité. Pour tous les candidats potentiels d'extraction N de la liste P, on cherche les noeuds accessibles depuis le noeud P en utilisant l'entrée T par le procédé de recherche des noeuds successeurs décrits à la figure 13. On ajoute ensuite tous les noeuds accessibles à la liste Q en utilisant le procédé de mise à jour de la liste décrit ci-dessous, 51, 52, 53. Une fois que la liste P est entièrement parcourue, on recherche les noeuds accessibles depuis le noeud original de la grammaire en utilisant l'entrée T par le procédé de recherche des noeuds successeurs, figure 13. On ajoute ensuite, 54, 55 tous les noeuds accessibles à la liste Q en utilisant le procédé de mise à jour de la liste décrit en relation à la figure 16. On ajoute les éléments de la liste Q dans la liste P. Le procédé de mise à jour décrit à la figure 16 comprend notamment les étapes suivantes - soit P la liste des candidats potentiels d'extraction, N la liste des noeuds pouvant être atteints, - pour tous les noeuds I identifiés comme étant accessibles par le procédé précédant, 61, 62, si I est un noeud final (ou terminal) de la grammaire, 63, alors il s'agit d'une occurrence de la grammaire d'extraction ( matche ). Si I possède des transitions vers d'autres noeuds, 64, on ajoute I attendant la prochaine entrée à la liste P, 65. L'application des dictionnaires permet en outre de détecter les entités composées constituées de plusieurs tokens. C'est pour cette raison que le module de recherche dans les dictionnaires informe les grammaires qu'une position ne peut plus être atteinte et qu'il est dorénavant impossible de recevoir des données à cette position. Le module de recherche envoie, par exemple, un message au module suivant qui le relaie à son tour au sous module (lorsqu'on utilise des grammaires séquentielles). On a donc réussi à récupérer l'ensemble des matches possibles avec une approche permettant de rapidement rajouter/enlever des candidats potentiels. La sélection du matche le plus long ou en utilisant un autre critère tel que la priorité d'une grammaire sur une autre nécessite uniquement un passage 30 linéaire sur les matches identifiés. Grammaire de réécriture Le fonctionnement des grammaires de réécriture est le même que celui des grammaires d'extractions, excepté que chaque matche nécessite une modification partielle ou totale des tokens mis en jeu. La méthode de fonctionnement, selon l'invention, pour ce type de grammaire consiste notamment à stocker le résultat directement dans la fenêtre de tokens. Chaque grammaire de réécriture a sa propre fenêtre qui sera transmise aux grammaires suivantes dans la chaîne de traitement, tel que schématisé à la figure 14. Il y a deux types d'exécution possible pour ces grammaires : • la réécriture en conservant le plus grand matche , c'est typiquement le cas d'une grammaire de reconnaissance des phrases qui ajoute un token à la fin de chaque phrase, • l'identification de tous les matches pour le remplissage d'une base de données par exemple (conversion de texte en données numériques). Identification de tous les matches pour la transformation en données structurées Dans ce cas, chaque élément de la liste des candidats potentiels P est doté d'une liste de références vers les transformations à appliquer sur les tokens. Nous pouvons ensuite appliquer une transformation par un automate sur lettres sur chaque variable pour revenir à des données qualitatives et ainsi transformer le texte en données structurées. Réécriture en conservant le plus grand matche Cette mise en oeuvre est utilisée lors de l'application d'une grammaire de reconnaissance de fin de phrase. Le plus grand matche peut correspondre : 14 soit à une fin de phrase (on ajoute ainsi le token fin de phrase), - soit à une désambiguïsation (par exemple M. Exemple ne correspond pas à une fin de phrase). Le résultat de cette réécriture est utilisé par d'autres grammaires. Il est 5 donc nécessaire d'être capable de faire des modifications sur un flux de tokens. Pour ce faire, nous décidons de stocker les résultats des matches dans la fenêtre de tokens, cela permet de : - rendre cette réécriture transparente pour les grammaires suivantes, - sélectionner le plus grand matche facilement: il suffit de regarder les 10 remplacements existants et de conserver le plus grand. Application des grammaires en parallèle L'utilisation de grammaires en parallèle est permise nativement par l'architecture. En effet, il suffit de fournir le flux de tokens sortant d'une grammaire à plusieurs autres grammaires en même temps pour obtenir un parallélisme au niveau 15 de l'extraction. En prenant le cas de l'extraction d'entités nommées, nous appliquons une grammaire d'identification des phrases puis nous fournissons ce résultat aux différentes grammaires d'extraction (par exemple le lieu, la date, l'organisation ...). Le même parallélisme que celui décrit dans la figure 14 est ainsi obtenu. 20 Priorités des grammaires Selon une variante de mise en oeuvre de l'invention, le procédé met en oeuvre des règles de priorité ou une notation statistique ou scoring sur les résultats des grammaires d'extraction. Ainsi, si nous avons N grammaires, sachant que la grammaire Gi (i 25 appartient à 1..N) est prioritaire sur les grammaires G1.. G(i ù 1), la méthode consiste à utiliser de manière parallèle ou séquentielle les N grammaires pour extraire l'ensemble des matches possibles et conserver uniquement le matche de priorité la plus élevée quand il y a une intersection entre deux matches . Suivant les applications, on va pouvoir sélectionner : - le matche de priorité la plus élevée pour chaque phrase, - un ou plusieurs matches par phrase sachant qu'il n'y a pas d'intersection entre eux, - un score par phrase, le score étant défini par l'ensemble des matches . La figure 17 illustre un exemple de gestion de la priorité entre deux grammaires G1, 70, et G2, 71, (G2 étant prioritaire sur G l) via une méthode de scoring ou de sélection du matche de plus haute priorité lorsqu'il y a 10 chevauchement. Désambiguïsation Le procédé peut aussi comporter une étape ayant notamment pour fonction de lever l'ambiguïté désambiguïsation . Pour cela, on sépare chaque grammaire d'extraction en deux parties : 15 -la grammaire d'extraction, 72, en tant que telle, une ou plusieurs grammaires permettant de lever une ambiguïté , 73, et permettant de définir les contre exemples . II suffit ensuite d'extraire simplement tous les matches de ces grammaires en parallèle et de supprimer les matches lorsqu'il y a une intersection entre une 20 grammaire d'extraction et une grammaire pour lever l'ambiguïté, comme le montre le schéma de la figure 18. La figure 19 représente un exemple d'utilisation du procédé selon l'invention dans un serveur de messagerie e-mail, dont le contenu des messages arrivant ou entrant est analysé, on extrait des informations du message reçu par le 25 procédé, 83, en exécutant les étapes du procédé détaillées ci-avant, afin de déterminer le service d'une entreprise le plus apte à le traiter (par exemple, marketing, comptabilité, technique) et le transmet, 84, au service adapté pour le traiter. REVENDICATIONS 1 - Procédé pour extraire des informations à partir d'un fichier de données comprenant une première étape où les données sont transmises à un dispositif (3.1) ou tokenizer adapté à les convertir au cours d'une première étape en unités élémentaires ou tokens , les unités élémentaires étant transmises à une deuxième étape de recherche des dictionnaires (3.2) et une troisième étape (3.3) de recherche dans des grammaires, caractérisé en ce que pour l'étape de conversion, on utilise une fenêtre glissante de taille donnée, on convertit en tokens les données au fur et à mesure de leur arrivée dans le tokenizer et on transmet les tokens au fur et à mesure de leur formation à l'étape de recherche dans des dictionnaires, (3.2), puis à l'étape de recherche des grammaires, (3.3). 2 ù Procédé selon la revendication 1 caractérisé en ce qu'il comprend une étape de 15 génération d'un sous-ensemble du dictionnaire comprenant les étapes suivantes : • récupérer toutes les transitions des grammaires qui font référence au dictionnaire (lemmes, tags grammaticaux ...), • compiler toutes les transitions, et • sélectionner les entrées dictionnaire qui correspondent au moins à l'une de 20 ces transitions. 3 ù Procédé selon la revendication 2 caractérisé en ce que l'étape de compilation des transitions en une transition unique comprend les étapes suivantes : • la première étape consiste à extraire, de toutes les grammaires utilisées, 25 l'ensemble des codes grammaticaux, sémantiques, syntaxiques et flexionnels contenus dans chacune des transitions des grammaires, puis, • la deuxième étape à construire un automate sur lettre qui associe à chaque code un entier unique. 4 ù Procédé selon la revendication 1 caractérisé en ce qu'il comporte une étape de construction d'un sous-dictionnaire optimal comprenant au moins les étapes suivantes : pour chaque entrée E d'un dictionnaire D, on vérifie si l'entrée E reconnaît au moins une des transitions ou au moins un lemme des grammaires qui font référence au dictionnaire. 5 - Procédé selon la revendication 1 caractérisé en ce que l'on utilise une grammaire locale sur la fenêtre glissante des tokens, la grammaire comprenant une grammaire d'extraction et une grammaire de réécriture. 6 - Procédé selon la revendication 1 caractérisé en ce qu'il utilise des grammaires 15 compilées, une grammaire étant définie par un automate à états finis, l'étape de compilation comprenant : • la suppression des transitions vides, • la décomposition des transitions en automate sur lettre. 20 7 ù Procédé selon la revendication 6 caractérisé en ce l'étape de suppression des transitions vides d'un automate A composé de plusieurs noeuds comprend les étapes suivantes : pour tous les noeuds N (21) de l'automate A, pour toutes les transitions T du noeud N vers un noeud M, - si la transition T est une transition vide, et si M est un noeud final, alors 25 on supprime la transition T et on duplique (26) toutes les transitions qui ont M comme noeud de départ en mettant N comme nouveau noeud de départ,- si la transition T est une transition vide et que M est un noeud final, alors on supprime T on duplique (27) toutes les transitions qui ont M comme noeud de destination en mettant N comme nouveau noeud de destination. 8 û Procédé selon la revendication 7 caractérisé en ce qu'une transition d'un noeud vers N autres noeuds est définie par un ensemble de trois automates : l'automate des lemmes, l'automate des formes fléchies, l'automate des codes grammaticaux, syntaxiques, sémantiques et flexionnels. 9 û Procédé selon la revendication 7 caractérisé en ce que le calcul pour un noeud actuel de l'ensemble des nouveaux noeuds pouvant être atteint par une entrée E de la fenêtre glissante de tokens comporte les étapes suivantes : • si l'entrée E est une entrée du dictionnaire (30), on recherche (31), les noeuds qui peuvent être atteints par E dans l'automate des codes (32) du noeud N et dans l'automate des lemmes du noeud N et on ajoute les noeuds pouvant être atteints à une liste L, • si l'entrée E n `est pas une entrée du dictionnaire, on recherche (33) les noeuds pouvant être atteints par E dans l'automate des formes fléchies du noeud N et on les ajoute à la liste L. 10 û Procédé selon la revendication 1 caractérisé en ce qu'une grammaire d'extraction (42) utilise la suite de tokens et d'entrées du dictionnaire (40) pour détecter les identifications dans un automate, et en ce qu'on utilise une liste de candidats potentiels d'extraction P contenant les éléments suivants : l'indice du prochain noeud à tester, la position du prochain token attendu, la position d'origine de ce candidat.