FR 2998691 A1 20140530 FR 1261246 A 20121126 Procédé d'indexation d'un espace sémantique. 1 DOMAINE DE L'INVENTION Le domaine de l'invention est celui de la recherche sémantique. Plus particulièrement, l'invention vise à apporter une solution concrète de recherche sémantique au sein de bases de données relationnelles. Le développement de l'informatique dans les nuages (le « Cloud Computing ») et des technologies du web 2.0 modifient sensiblement la manière de gérer les informations du fait de l'augmentation sans précédent de la volumétrie des données échangées, traitées et stockées. Cette problématique, aussi appelée « Big Data », vient mettre en exergue la nécessité de trouver des solutions à une autre problématique, plus ancienne, qui est celle de la gestion des données non structurées. L'invention se rapporte ainsi au traitement, à l'analyse et au stockage des données textuelles non structurées. 2 SOLUTIONS DE L'ART ANTÉRIEUR Les méthodes de représentation vectorielle de la sémantique des mots (Salton 1972) à la base de la construction des espaces sémantiques relèvent d'une famille de modèles qui représentent la similitude sémantique entre les mots en fonction de l'environnement textuel dans lequel ces mots apparaissent. La distribution de cooccurrences de mots est rassemblée, analysée et transformée en espaces sémantiques dans lesquels les mots, - et les concepts qu'ils représentent -, sont des vecteurs dans un espace vectoriel de grandes dimensions. Latent Semantic Analysis (LSA) (Landaeur & Dumais, 1997), Hyper-space Analog to Langage (HAL) (Lund & Burgess, 1996) et Random Indexing (RI) (Kanerva & al, 2000) en sont quelques exemples. Ces modèles sont basés sur l'hypothèse distributionnelle de Harris (1968) selon laquelle les mots qui apparaissent dans des contextes similaires ont des significations similaires. La définition de l'unité de contexte est une étape commune à tous ces modèles, bien que sa nature demeure spécifique à chaque modèle. Par exemple, LSA construit une matrice mot-document dans laquelle chaque cellule au contient la fréquence d'un mot donné i dans une unité de contexte j. HAL définit une fenêtre flottante de n mots qui parcourt chaque mot du corpus, puis construit une matrice mot-mot dans laquelle chaque cellule au contient la fréquence à laquelle un mot i se retrouve avec un mot j en fonction d'une fenêtre flottante donnée. Divers traitements mathématiques et statistiques, permettant d'extraire la signification des concepts, peuvent être appliqués à la distribution des fréquences de la matrice mot-document ou mot-mot. Le premier objectif de ces traitements mathématiques est d'extraire les patrons de variations des fréquences et d'éliminer ce qui peut être considéré comme du « bruit » provoqué par les variations individuelles propres à chaque scripteur lorsqu'il produit un texte. LSA emploie une méthode générale de décomposition linéaire de la matrice : la décomposition de valeur singulière (SVD) (Berry, 2007). Dans HAL la dimension de l'espace est réduite en maintenant un nombre restreint de composantes principales de la matrice de cooccurrence. La similarité sémantique entre deux mots peut alors être calculée. Classiquement, la valeur du cosinus de l'angle entre deux vecteurs correspondant à des mots ou à un groupe de mots est calculée afin d'obtenir une approximation de leur proximité sémantique. Une méthode alternative à l'utilisation du cosinus est l'utilisation de la distance euclidienne pondérée. Les méthodes d'espaces sémantiques basées sur la réduction des matrices de cooccurrence sont très couteuses en termes de calculs. Il est en de même pour les méthodes basées sur des approches bayésiennes. Le modèle Random Indexing proposé par Kanerva & al (2000) permet de palier le problème calculatoire par une approche basée sur les projections aléatoires. Ce modèle est capable de calculer un espace sémantique pour 10 millions de résumés d'articles scientifique de la base Medline sur un ordinateur portable domestique. En revanche, la mise en oeuvre dynamique d'un espace sémantique pose toujours problème. Il est en effet nécessaire de reconstruire l'espace sémantique 30 lorsqu'un nouveau document ou un nouveau contenu est ajouté à la base de données ou à l'ensemble de documents. C'est pour pallier ces difficultés que des techniques dites « d'espaces sémantiques dynamiques » ont été développées (techniques appelées «folding in »). Ainsi, dans l'état actuel il y a deux solutions pour qu'un document soit projeté dans l'espace sémantique : la projection du nouveau document dans l'espace sémantique existant, appelé «folding-in » ou le calcul d'un nouvel espace sémantique contenant les documents anciens ainsi que les nouveaux documents. Ces solutions actuelles présentent toutes deux des inconvénients. L'inconvénient du «folding in » est relatif à la projection du nouveau document : lorsque l'on projette des nouveaux documents dans un espace sémantique ancien, les vecteurs correspondants aux mots sur lesquels les nouveaux documents sont projetés sont calculés à partir de patrons de cooccurrences anciens qui ne tiennent pas compte des cooccurrences correspondant au nouveau document. Le «folding-in » peut ne pas poser problème s'il y a une continuité thématique forte entre les documents ayant servis lors de l'apprentissage, i.e. de la construction de l'espace sémantique. Cette condition est inenvisageable dans le cas d'applications à des corpus venant du web par exemple, ou des différents services d'une grande entreprise. Les effets néfastes du « folding-in » ont été décrits sous la forme de « pollution sémantique » (El-Ghali & Hoareau, 2010). L'inconvénient de la reconstruction (c'est-à-dire le calcul d'un nouvel espace sémantique) est que, quelle que soit la méthode utilisée, la reconstruction de l'espace sémantique implique un coût important d'un point de vu calculatoire. À titre d'illustration, lorsque l'on prend une base de données de 100 000 articles destinés à la vente en ligne. Pour ajouter 10 nouveaux articles, et calculer le nouvel espace sémantique composé des 100010 articles, en considérant une machine dotée de 32 Go de Ram et de 4 CPU de..., il faudrait compter un temps de calcul d'environ 30 minutes. C'est ce temps qui serait nécessaire pour que l'article soit disponible à vente, par exemple. Ce délai ne semble pas acceptable pour des raisons de compétitivité commerciale. Il faut aussi considérer le fait qu'il faudrait consommer autant de ressources de calcul pour chaque mise à jour de la base de données. Ce qui est encore plus lourd de conséquence. En d'autres termes, les solutions actuelles ne permettent pas d'utiliser les espaces sémantique sur des volumes de texte important tout réduisant ou à tout le moins en maintenant les ressources de calcul nécessaire à ces utilisations. Il existe donc un besoin de proposer un système de gestion sémantique de l'information qui d'une part ne nécessite pas de calculs importants lors de l'ajout de nouveaux documents ou de nouvelles sources de données dans l'espace sémantique et d'autre part qui permette de réaliser une recherche sémantique dans cet espace sémantique tout en permettant l'ajout simultané dans l'espace sémantique. 3 RÉSUMÉ DE L'INVENTION L'invention ne pose pas ces problèmes de l'art antérieur. En effet, l'invention concerne un procédé d'indexation d'une pluralité de documents répartis dans un espace sémantique, ledit procédé comprenant une phase de création d'une matrice « mot/document » pondérée, procédé caractérisé en ce qu'il comprend : - une phase de regroupement de document en fonction d'une occurrence de termes de ladite matrice « mot/document », au sein d'au moins une liste de regroupement, une liste appartenant à ladite au moins une liste de document comprenant au moins un document de ladite pluralité de document ; - une phase d'obtention d'au moins un vecteur prototype, un vecteur prototype étant associé à chaque liste de ladite au moins une liste, un vecteur prototype courant d'une liste courante étant obtenu en fonction d'au moins un vecteur associé à au moins un document faisant partie de ladite liste courante. Ainsi, l'invention offre la possibilité de créer des index d'espaces sémantiques qui regroupent les documents par similarité, lesquels index pouvant ensuite être utilisés pour réaliser une recherche. Selon un mode de réalisation particulier ladite phase de regroupement comprend au moins une itération des étapes suivantes, pour un document courant dudit ensemble de documents : - recherche, au sein dudit ensemble de documents, d'au moins un document voisin dudit document courant de sorte que (i) une similarité entre ledit document courant et un document voisin soit supérieure à seuil a, que (ii) le nombre de documents voisins dudit document courant soit inférieur à un nombre prédéterminé maxDoc, et que le nombre minimum de documents voisins dudit document courant soit supérieur à un nombre prédéterminé minCard, ladite recherche délivrant un ensemble de voisins. - insertion dudit ensemble de voisins dans une liste, dite liste de voisins ; - réitération desdites étapes pour un nouveau document courant dudit ensemble de documents. Ainsi, il est possible d'associer facilement les documents d'un espace sémantique. Selon un mode de réalisation particulier, ladite phase de regroupement comprend au moins une itération des étapes suivantes, pour chaque liste de voisins préalablement obtenue : - recherche, parmi une liste de voisins, d'au moins un document appartenant à une liste de voisins courante et à ladite liste de voisins ; et - lorsque ladite recherche est positive, fusion de ladite liste courante avec ladite liste comprenant ledit au moins un document ; - lorsque ladite recherche est négative, passage à une liste de voisins suivante ; Selon un mode de réalisation particulier, ladite phase d'obtention d'au moins un vecteur prototype comprend, pour une liste courante : une étape de projection d'au moins une partie des termes composant ledit au moins un document de ladite liste courante dans ledit espace sémantique, délivrant au moins un vecteur associé audit au moins un document ; - une étape de sommation dudit au moins un vecteur délivrant ledit vecteur prototype. Selon une caractéristique particulière, préalablement à ladite phase de regroupement, ledit procédé comprend une phase d'initialisation dudit espace sémantique comprenant : - une étape d'obtention d'un nombre maximum N de documents à indexer dans ledit espace sémantique ; - une étape d'initialisation de N vecteurs aléatoires pour ledit espace sémantique ; - une étape de création dudit espace sémantique à partir d'un nombre n de documents à intégrer dans ledit espace sémantique, n étant inférieur ou égal à N, ladite étape de création comprenant une pluralité d'étapes d'accumulation de n vecteurs aléatoires parmi lesdits N vecteurs aléatoires préalablement initialisés ; Selon une caractéristique particulière, postérieurement à ladite phase de regroupement, ledit procédé comprend une phase de complétion dudit espace sémantique à l'aide d'un nombre i de nouveaux documents, tel que i+n est inférieur ou égal à N comprenant : - une étape de de mise à jour dudit espace sémantique à partir dudit nombre i de documents à intégrer dans ledit espace sémantique, ladite étape de création comprenant une pluralité d'étapes d'accumulation de i vecteurs aléatoires parmi lesdits N vecteurs aléatoires préalablement initialisés ; - une étape de mise à jour dudit index en fonction desdits i nouveaux vecteurs aléatoires. L'invention concerne également un procédé de recherche, au sein d'un ensemble de documents, d'une pluralité de documents en fonction d'une requête de recherche, ledit ensemble de documents ayant été préalablement indexé selon le procédé d'indexation tel que décrit préalablement, le procédé de recherche comprenant : - une étape d'obtention d'une longueur de requête ; - une phase de recherche booléenne lorsque ladite longueur de requête se situe sous un seuil d'activation prédéterminé / ; - une phase de recherche sémantique lorsque ladite longueur de requête est supérieure ou égale audit seuil d'activation prédéterminé /. Selon un mode de réalisation particulier, ladite phase de recherche sémantique comprend : - une étape de création d'un vecteur recherche en fonction de termes de recherche de ladite requête ; - une étape de recherche sémantique en fonction dudit vecteur de recherche et de vecteurs associés auxdits documents dudit espace sémantique ; - une étape d'obtention d'un sous ensemble de document correspondant à ladite requête, lesdits vecteurs desdits documents dudit sous ensemble de document ayant des valeurs de cosinus avec ledit vecteur de recherche supérieures ou égales à un seuil de pertinence p prédéterminé. Selon une implémentation préférée, les différentes étapes des procédés selon l'invention sont mises en oeuvre par un ou plusieurs logiciels ou programmes d'ordinateur, comprenant des instructions logicielles destinées à être exécutées par un processeur de données d'un module relais selon l'invention et étant conçu pour commander l'exécution des différentes étapes des procédés. En conséquence, l'invention vise aussi un programme, susceptible d'être exécuté par un ordinateur ou par un processeur de données, ce programme comportant des instructions pour commander l'exécution des étapes d'un procédé tel que mentionné ci-dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci- dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble de composants matériels et logiciels. Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, passerelle, settop-box, routeur, etc) et est susceptible d'accéder aux ressources matérielles de 25 cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc). De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. 30 Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), etc. Les différents modes de réalisation mentionnés ci-dessus sont combinables entre eux pour la mise en oeuvre de l'invention. 4 LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1 illustre globalement un mode de réalisation d'un système mettant en oeuvre l'invention ; - la figure 2 illustre la création d'un espace sémantique selon l'invention. - la figure 3 illustre l'indexation d'un espace sémantique selon l'invention. 5 DESCRIPTION DÉTAILLÉE DE L'INVENTION 5.1 Rappel du principe de l'invention L'invention permet de mettre à jour les relations sémantiques existantes entre l'ensemble des objets contenus dans la base de données. Plus particulièrement, l'invention permet d'indexer « à la volée » des nouveaux documents dans un espace sémantique. Ainsi, le système permet d'ajouter des nouveaux documents dans l'espace sémantique en même temps qu'il est possible de faire de la recherche au sein de cet espace. L'invention consiste, d'une point de vue général, en un système d'indexation et de recherche d'information textuelle capable de faire des inférences sémantiques entre les documents à partir d'un espace sémantique dynamique ayant la propriété de permettre la lecture et l'écriture simultanée à partir de base de donnée relationnelles et non relationnelles. Le besoin auquel répond principalement l'invention est celui d'organiser l'espace sémantique afin de permettre une recherche plus rapide ou sur des bases de données plus importante. En relation avec la figure 1, le système (1) objet de l'invention comprend différents modules de traitement qui sont décrits en détail par la suite. Il s'agit : - Du connecteur à la base de données (10), qui permet de se connecter à une ou plusieurs bases de données (DB1, DB2,...). - Du constructeur d'espace sémantique dynamique (20) qui permet de représenter les objets à indexer en fonction de leur similarité sémantique au sein d'un espace vectoriel à grandes dimensions. Ce module permet de la lecture et l'écriture simultanée dans l'espace sémantique. - Du module de recherche d'information (30) qui permet de rechercher les objets dans la base de données à partir de leur représentation sémantique dans l'espace vectoriel. Les propriétés techniques de ce nouveau système d'indexation et de recherche d'information permettent d'intégrer une technologie sémantique d'une part, pour de très grands volumes de documents, et d'autre part, pour des contextes très dynamiques correspondant typiquement au web et aux défis posés par la problématique du Big Data. Le système repose sur plusieurs approches nouvelles et inventives, notamment en termes de construction de l'espace sémantique et de recherche (module de recherche). Ces approches ont été mises en oeuvre afin de pouvoir utiliser un système sémantique à des fins de recherche dans un ensemble de documents. On note en effet qu'il n'existe aucune application qui utilise les espaces sémantiques dans le cadre d'un moteur de recherche. Et pour cause, comme cela a été mentionné préalablement, les opérations de lecture et d'écriture simultanées dans un espace sémantique sont extrêmement peu adaptées à un contexte de recherche, par exemple sur le Web ou dans des bases de données volumineuses d'entreprises. Le principe de l'invention repose d'une part sur une activation différente d'un moteur de recherche sémantique en fonction de deux paramètres distincts qui sont d'une part un seuil de pertinence (noté p) et un seuil pour l'activation de la recherche sémantique (noté /). Plus particulièrement une technique de l'invention consiste à intégrer une recherche booléenne (aussi appelée « Search Booléen » et une recherche sémantique (aussi appelée « Search Sémantique » en fonction de la longueur de la requête (de recherche). Par défaut, lorsque la longueur de la requête est supérieure à quatre mots (/ est égal à 4, les mots non vides ne sont pas comptés), la recherche sémantique est activée. En dessous de ce seuil, la recherche booléenne est activée. Seules les valeurs de cosinus supérieures au seuil de pertinence p sont retournées. La technique objet de l'invention n'est pas un SGBD tel que MySQL, SQL Server, DB2 etc., mais un émulateur de ces SGBD. Il ne remplace les SGBD existants mais il leur donne des propriétés sémantiques supplémentaires à travers différents modules logiciels tels que : - la recherche d'information sémantique - le monitoring des sujets importants dans les communautés, - la détection et à la catégorisation d'opinions - la visualisation des relations de proximités sémantiques entre les documents, les groupes ou les individus. 5.2 Description d'un mode de réalisation On présente dans ce mode de réalisation, la mise en oeuvre d'un module de construction d'un espace sémantique selon l'invention. Le module de construction d'espaces sémantiques dynamiques permet de construire des espaces sémantiques qui se mettent à jour de façon incrémentale et qui ne nécessitent pas de recalculer entièrement l'espace sémantique lors de l'ajout de nouveaux documents. Le principe général comprend la définition de vecteurs aléatoires. L'implémentation est différente de celle proposée usuellement : elle comprend une gestion incrémentale des espaces sémantiques. On décrit ci-après, en relation avec la figure 2, les étapes de construction d'un espace sémantique dynamique au sens de l'invention. Globalement, le procédé comprend trois grandes étapes : - Définition du nombre de vecteurs aléatoires : pour construire un espace sémantique dynamique au sens de l'invention, la première étape 201 consiste à définir un nombre maximum N de documents à indexer. Ce nombre est à la discrétion de l'utilisateur et sera contraint par la capacité de calcul dont celui-ci dispose. En revanche, selon l'invention, ce nombre N est supérieur au nombre de documents courants de l'espace sémantique. Dans une première phase 202, une première version (S 1) de l'espace sémantique est créée à partir des n documents courants à intégrer dans cet espace sémantique. Il s'agit de la phase d'accumulation de 1 à n : une fois le nombre maximum N de documents à indexer déterminé, pour chaque document de l'espace sémantique, un vecteur aléatoire est défini. À ce moment du traitement, il y a seulement une partie des vecteurs aléatoires générés qui ont été accumulées. À l'issue de cette première phase, l'espace sémantique S_1 est utilisé tel quel, c'est-à-dire avec une partie des vecteurs aléatoires préalablement initialisés qui sont non utilisés. Dans une deuxième phase 203, qui correspond à la phase d'ajout de nouveaux documents dans l'espace sémantique, une deuxième version S_2 de l'espace sémantique est créé à partir des n+i documents courants à intégrer dans ce deuxième espace sémantique. Il s'agit de la phase d'accumulation du n à n+i et de construction de l'espace sémantique S_2 : les vecteurs aléatoires qui n'ont pas été accumulés dans la précédente accumulation précédente sont affectés aux nouveaux documents n à n+i. Les nouveaux vecteurs sont accumulés à l'ensemble de vecteurs index existants. En d'autres termes, selon l'invention, plutôt que de régénérer des vecteurs aléatoires lors de l'ajout de nouveaux documents dans l'espace sémantique, la technique consiste à surdimensionner le nombre de vecteurs aléatoires dès la création de l'espace sémantique (à l'origine), pour pouvoir réaffecter les vecteurs non utilisés lors de l'insertion de nouveaux documents dans l'espace sémantique. 5.3 Principe d'indexation de l'espace sémantique De manière globale, la méthode objet de l'invention comprend d'une part une phase de création d'un espace de mots, une phase de création d'un espace sémantique, une phase de regroupement de document (en « cluster ») et une phase de construction de vecteurs représentatifs des documents qui composent chacun des clusters. Ces vecteurs, comme cela est exposé par la suite, sont appelés vecteurs « prototypes ». Cette description est réalisée en relation avec la figure 3. L'indexation d'une pluralité de documents répartis dans un espace sémantique, comprend une phase de création 301 d'une matrice « mot/document » pondérée, et : une phase de regroupement de document 302 en fonction d'une occurrence de termes de ladite matrice « mot/document », au sein d'au moins une liste de regroupement (LG), une liste appartenant à ladite au moins une liste de document comprenant au moins un document de ladite pluralité de document ; une phase d'obtention 303 d'au moins un vecteur prototype, un vecteur prototype étant associé à chaque liste de ladite au moins une liste, un vecteur prototype courant d'une liste courante étant obtenu en fonction d'au moins un vecteur associé à au moins un document faisant partie de ladite liste courante. 5.3.1 Indexation en arbre On décrit ci-après un mécanisme d'indexation d'espace sémantique permettant de réduire le nombre d'opérations réalisés lors de la recherche d'information et permettant d'utiliser les espaces sémantiques sur des volumes de textes très important avec un temps d'exécution des requêtes compatible avec les usages industriels et ne nécessitant pas des ressources de calculs démesurées. Ce système d'indexation est appelé système d'indexation en arbre. Le système d'indexation possède les propriétés suivantes : ajout et suppression de documents à la volée : l'espace sémantique est donc dynamique et il n'est pas nécessaire de recalculer celui-ci à chaque ajout de documents ; - réduction du nombre d'opération lors de l'opération de recherche : la recherche est efficiente et rapide. On décrit dans un premier temps les aspects conceptuels du modèle et dans un second temps, les aspects techniques relatifs à l'application qui implémente ce modèle. 5.3.2 Le principe Comme préalablement exposé, les propriétés topologiques d'un espace sémantique impliquent que des documents proches sémantiquement ont des vecteurs ayant des directions similairement orientés. L'indexation en arbre, objet de l'invention, tire profit de cette propriété pour représenter un ensemble de documents sémantiquement proches par un seul et même vecteur, lequel est nommé « vecteur prototype ». En effet, à partir du moment où il est possible de construire un ensemble de k vecteurs prototypes représentant de façon satisfaisante l'ensemble des n documents du corpus, sachant que k La méthode de l'invention permet d'obtenir de tels vecteurs prototypes et d'apporter des solutions à ces problématiques de l'art antérieur. La méthode de l'indexation en arbre s'appuie sur une méthode de plus bas-niveau pour la clusterisation (c'est-à-dire le regroupement ; il s'agit donc d'une méthode de regroupement préalable) 5.3.3 Méthode de clusterisation (regroupement) Cette méthode de regroupement de document comprend plusieurs étapes. Dans ce mode de réalisation de l'invention, la première étape consiste à construire un espace de mots, à partir d'un corpus de document. La deuxième étape consiste à projeter chaque document dans l'espace de mots préalablement construit pour aboutir à un espace de documents. Les étapes suivantes se déroulent sur l'espace de documents précédemment créé. Il s'agit d'une itération qui permet de définir des listes de documents. Plus particulièrement : - Soit a, un seuil de similarité entre deux documents (compris entre 0 et 1). - Soit maxDoc, un nombre maximal de documents voisins retournés. - Soit minCard, le nombre minimum de documents voisins retournés. L'itération comprend les étapes suivantes : - pour chaque document du corpus, identifier les documents voisins de telle sorte que (i) la similarité entre un document et un document voisin soit supérieure à a, que (ii) le nombre de documents voisins soit inférieur à maxDoc, et que le nombre minimum de documents voisins soit supérieur à minCard. - placer cet ensemble de document dans une liste ; - poursuivre jusqu'au traitement complet de l'ensemble des documents du corpus. Au terme de cette itération, on obtient une liste de listes de voisins. Une deuxième itération est alors mise en oeuvre. Cette deuxième itération comprend les étapes suivantes : - pour chaque liste de voisins, on parcourt les listes de voisins suivantes en cherchant des voisins similaires : lorsque deux listes de voisins contiennent au moins un voisin en commun, les deux listes de voisins fusionnent, pour former une liste unique ; - l'opération continue jusqu'à ce qu'au traitement de l'ensemble des listes de voisins qu'il n'y ait plus de fusion (c'est-à-dire que tous les documents du corpus font chacun partie d'une et une seule liste). Ainsi, au terme de cette phase de regroupement, on aboutit à un ensemble de listes de voisins, qui correspond à des ensembles disjoints : un voisin (document) n'appartient qu'à une et une seule liste. Ces listes de voisins constituent alors la liste des documents dont les vecteurs doivent être travaillés afin de construire un vecteur prototype (il s'agit de la phase d'indexation en arbre en tant que telle, laquelle se base ainsi sur une liste de documents voisins). 5.3.4 Méthode d'indexation en arbre : description plus précise du principe préalablement présenté. La méthode d'indexation en arbre a pour objectif de produire des vecteurs prototypes les plus précis possibles en optimisant le coût computationnel. Il consiste en une succession d'itérations de la méthode du Jasmin en partant d'un seuil de similarité a élevé et décrémenté au fur et à mesure des itérations. À chaque itération, une partie de l'ensemble de documents de départ est regroupée en cluster (sous ensemble). Les documents restants après une itération n (c'est-à-dire les documents qui n'ont pas été affectés à un sous ensemble), sont traités lors de l'itération n+1. ETAPE 1 : construire les prototypes Variables : Todo = liste des documents à traiter ; Proto = une liste de documents similaires (initialisée à 0) listProto = une liste de Proto (initialisée à 0) ; a = seuil de similarité ; Inc = incrément de a ; Jasmin = méthode de regroupement (clusterisation) ; mina = seuil d'arrêt en dessous duquel on stoppe le processus. L'algorithme général de ma procédure mise en oeuvre est le suivant : While (a> mina){ ListProtoLocal = Jasmin(Todo, Ajouter ListProtoLocal à listProto ; a= a- inc ; } Cette procédure donne en sortie : une liste de Prototype et une liste de documents non traités (le reste de la liste de documents « Todo »). ETAPE 2 : répartir les documents non-traités (c'est-à-dire les documents non regroupés par l'application successive de la méthode de regroupement) Les documents restants dans Todo à l'issue de la première étape ne sont pas similaires entre eux (étant donnée le mina fixé). Il est cependant nécessaire de les regrouper dans un nombre k de prototypes. A priori, regrouper les documents non similaires dans un prototype commun n'est pas une action à réaliser. Cependant ; comme cela est explicité par la suite, et contrairement aux a priori de l'homme du métier, ce regroupement procure des avantages. La manière dont la valeur optimale de k est obtenue est décrite postérieurement. Il faut que la valeur de k soit suffisamment grande afin que les prototypes ainsi constitués ne regroupent pas beaucoup de documents. Cela auraient pour effet de dégrader la pertinence des recherches ainsi que d'augmenter le temps d'exécution. Les raisons pour lesquelles, il est possible de regrouper des documents non-similaires dans un prototype sont les suivantes : - Dans le cas d'une requête proche d'un document appartenant à un vrai prototype (un prototype obtenu par l'intermédiaire de l'étape 1), celui-ci aura un vecteur proche du vecteur de la requête et sera « top-ranké » (c'est-à-dire qu'il ressort en premier) par rapport à un faux prototype (prototype obtenu par l'étape 2). Ceci est bien le comportement recherché. Dans le cas d'une requête dont le vecteur est éloigné de tous les vrais prototypes, il s'agit de retrouver les documents alors qu'ils sont mélangés au sein des faux prototypes. Dans ce cas, si les documents ne sont pas nombreux dans chacun des prototypes, alors le vecteur du prototype le plus proche comportera « encore » la direction du document cible et sera alors « top-ranké » par rapport aux prototypes (ce que l'on veut) et par rapports aux faux-prototypes (c'est également le comportement recherché). En revanche, ce comportement n'est pas obtenu lorsque k est trop petit. Si k est trop petit, en effet, un grand nombre de documents non-similaires sont sommés dans un prototype et la direction du vecteur ainsi formé s'éloigne de chacun des documents qui composent le prototype. Il est donc nécessaire de « doser » le nombre de documents présents dans les « faux prototypes ». ETAPE 3 : construire les vecteurs prototypes associés aux prototypes Construire un espace sémantique : Pour construire les vecteurs « prototypes », il faut dans un premier temps construire un espace sémantique (et non pas un espace de mots, comme cela a été fait jusqu'ici) à partir de l'ensemble des documents du corpus. Ainsi, une première phase consiste à construire un espace sémantique « classique ». Des vecteurs sont alors obtenus pour chaque document du corpus. Cette approche est classique et permet d'obtenir un espace sémantique « de base » sur lequel l'invention est mise en oeuvre. Construire les vecteurs prototypes : Pour chaque prototype et faux-prototypes construis antérieurement, faire la sommes de vecteurs de chaque document pour obtenir un vecteur prototype ; Normaliser chaque vecteur prototype. 5.3.5 Valeurs optimales du nombre de prototypes et faux-prototypes On décrit ici une détermination du nombre de prototypes et de sous- prototypes lorsque la profondeur de l'arbre est égale à deux. Bien entendu, ma méthode décrite peut être décliné à un nombre m de niveaux de profondeur de l'arbre d'indexation. Dans ce mode de réalisation, le niveau « 1 » de l'arbre correspond au niveau des prototypes qui correspondent chacun à un noeud. Le niveau « 2 » est celui des documents correspondant chacun à noeud prototype. La question est alors « combien de vecteurs prototypes faut-il avoir (sur le niveau « 1 ») et combien de documents doivent-ils chacun contenir (sur le niveau « 2 ») pour perdre le moins de temps possible sur chacun des niveaux ? » La réponse apportée par les inventeurs est la suivante : Si n est le nombre de documents, alors étant donné les deux niveaux de l'arbre d'indexation, le nombre optimal rho est égal à la racine carrée de n. Ainsi si l'on décide de retenir les k premiers vecteurs prototypes, le coût computationnel de la recherche à partir de l'index est égal à : cout =Vi7 + k Vi7 = (k + 1)-\/1 (équation 1) Dans la littérature, ce coût est actuellement de n alors qu'avec la méthode de l'invention, sur deux niveaux, ce coût passe à (k + 1) VT On présente quelques exemples de cout de calcul de l'état de l'art actuel (correspondant à n opérations) et du procédé de l'invention (correspondant à -\/1 opérations) n= 100 000 ; -'/1 = 316; n = 1 000 000 ; -'/1 = 1000 ; n = 10 000 000 ; -'/1 = 3162 ; n = 100 000 000 ; -'/1 = 10 000 ; On comprend, à la lecture de ces exemples, l'intérêt de la méthode de l'invention pour rechercher les documents de l'espace sémantique par rapport à la méthode de l'art antérieur. Une fois ce paramètre définit, il est possible de déterminer le nombre optimum de prototypes et de faux-prototypes. Ainsi, la somme de (prototype + faux-prototype) doit être égale à la racine carrée de n. Comme il n'est pas souhaitable de contrôler à priori le nombre de prototypes, il s'agit de donc de répartir les documents dans un nombre de faux- prototypes correspondant à : Nombre faux-proto = -'/1 - nombre de prototypes (équation 2) 5.4 Recherche d'information dans l'arbre Lors d'une recherche d'information à partir d'une requête dans l'arbre, un vecteur requête est construit à partir de la somme des vecteurs des mots qui la compose, puis le vecteur est normalisé. Le vecteur requête est comparé à chaque vecteur prototype ainsi qu'au vecteur «faux-prototype ». Les vecteurs résultats sont ordonnés par ordre de similarité décroissante. Pour obtenir un résultat de recherche adapté, on sélectionne les premiers vecteurs prototypes (selon un nombre prédéterminé) et on réitère la requête de recherche sur les vecteurs des documents à partir duquel on a construit les vecteurs prototypes en question. Dans un mode de réalisation particulier de l'invention, un seul vecteur prototype est sélectionné (le premier). L'ensemble des documents les plus proches recueillis à partir des comparaisons correspondant aux premiers vecteurs prototypes, sont fusionnés dans un même sous-ensemble et ordonnés en fonction de la valeur de similarité avec la requête. Cette dernière liste de documents ordonnés correspond aux résultats de l'opération de recherche. 5.5 Mis à jour de l'arbre Suppression d'un document : Pour supprimer un document de l'arbre, il suffit de supprime le vecteur lui correspondant et de recalculer le vecteur prototype. Cette opération est donc extrêmement facile et ne nécessite pas un calcul complet de l'espace sémantique. Il suffit de recalculer le prototype, ce qui correspond à une somme d'un nombre k/n de documents. Ajout d'un document : Pour ajouter un document, il suffit de l'utiliser dans une requête de recherche, puis l'intégrer au(x) vecteur(s) prototype(s) correspondant au document dont il est le plus proche. Cette méthode est également très rapide et on comprend immédiatement son intérêt : il n'est plus nécessaire de recalculer l'espace sémantique lors de l'ajout d'un document. On se contente de catégoriser ce document et d'y adjoindre la requête de recherche correspondant à cette catégorisation (il s'agit du vecteur requête du document). On réalise ensuite une recherche dans l'index : le vecteur prototype le plus proche du vecteur requête permet de savoir à quel prototype devrait appartenir le document et donc d'intégrer ce document à l'ensemble représenté par le vecteur prototype et de recalculer le vecteur prototype en conséquence. Deux ces deux méthodes de mise à jour on déduit deux propriétés essentielles : Propriété 1 : le modèle est incrémentale : l'ajout et la suppression de document peuvent de faire « à la volée » sans recalculer l'arbre. Propriété 2 : apprentissage en continu : au fur et à mesure des entrées de documents, les noeuds s'étoffent plus ou moins. Ainsi, des noeuds correspondant à des vecteurs moins denses à un moment donné, peuvent se densifié, et ainsi être plus précis lors de l'opération de recherche, si des documents similaires sont ajoutés à l'espace. 5.6 Description technique de l'application qui implémente l'arbre. Le corpus de documents à indexer peut venir d'une base de données, d'un fichier du type CSV correspondant à un export depuis une base de données ou n'importe quel support permettant le stockage de donnée textuelle. 5.6.1 Construction de la matrice mot-document (espace de mots). Ce module n'est pas original et correspond à ce qui est décrit dans la littérature depuis le système SMART des années 1960. Stockage 1 : dans notre application, les documents sont stockés dans un BD. Nettoyage : chaque document fait l'objet d'un parsing qui consiste en la suppression de tous les caractères non-alphabétiques, de tous les chiffres, ainsi que des mots-vides. Stockage 2 : la version « nettoyée » est stockée en BD. Construction de la matrice mot-document : un module logiciel construit une matrice mot-document en comptant le nombre d'occurrences de chaque terme dans l'ensemble des documents. Pondération de la matrice mot-document : un module logiciel calcule les pondérations pour chaque terme et pour chaque document en fonction des équations décrire par ailleurs. Stockage de la matrice mot-document pondérée : le résultat des traitements en stocké dans un fichier binaire dans un répertoire sur le disque dure. 5.6.2 Indexation en arbre : Le module d'indexation en arbre, objet de l'invention, travaille sur la base d'un espace de mot et d'un espace sémantique. Ce module prend ainsi en entrée, un espace de mot et un espace sémantique, tous deux réalisés à partir d'un même corpus ; le module créé ensuite un avatar de l'espace sémantique appelé « l'arbre » et qui permet de réaliser moins de comparaisons au moment de l'opération de recherche. Le fait de diminuer le nombre d'opérations lors de l'opération de recherche a au moins deux conséquences. La première est de réduire le temps d'exécution d'une requête. La seconde est de permettre à nombre d'opérations égal, de travailler sur des corpus bien plus volumineux. À titre d'indication, sur un corpus de 60 000 documents, l'utilisation de l'arbre permet de faire 1500 opérations (i.e., calcul de cosinus) lors de l'opération de recherche, tandis qu'une méthode classique implique 60 000 opérations. On décrit ci-après une implémentation en Java de l'indexation en arbre : Chargement de la todoliste : la todolist en une hashSet en java, qui contient à liste des documents à traiter, ie la liste de l'ensemble de document du corpus. Initialisation de la liste de prototype : la liste de prototype est une liste qui contient des listes. En java, c'est une HashMap prenant en clé un entier correspondant un identifiant du prototype, et en valeur une HashSet correspondant à l'ensemble des documents correspondant au prototype. Construction de l'arbre : un module logiciel implémente La méthode de l'arbre. Celui-ci prend en paramètre : une matrice mot-document une todoListe une protoListe un seuil de similarité a un incrément appelé inc. un seuil de similarité minimal min. Le module réalise deux tâches : la construction des Prototypes et la construction des faux-Prototypes. La Construction des Prototypes : elle est réalisée en faisant appel au module d'exécution du Jasmin. Le module lance une exécution du Jasmin étant donne une Todoliste, une ProtoListe et une valeur de a. À la fin de chaque exécution, la Todoliste et la Protoliste sont mises à jour, puis a est décrémenté en fonction de la valeur de inc. Et une nouvelle exécution est lancée. Le module s'arrête lorsque a atteint la valeur min. Exécution du Jasmin : un module logiciel implémente La méthode du Jasmin. Celui-ci prend en paramètre : une matrice mot-document un seuil de similarité miminum appelé a une todoListe une protoListe Dans le Jasmin, la liste Todoliste est découpé autant de Thread que disponible sur la machine afin d'être réalisé les calculs en parallèle. Comparaison des vecteurs documents : pour chacun des documents de la Todoliste, un module logiciel compare le vecteur document requête, à l'ensemble des vecteurs documents de la todoListe. La comparaison est réalisée en via le calcul du cosinus formé par chaque paire de vecteurs. Les documents dont le cosinus est supérieur à a sont stockés dans des HashSet temporaires appelées « PréProto ». Ce cycle de traitement aboutit à la construction d'une liste de PréProto. Construction des Protos et de la ProtoList : un module logiciel prends en entrée l'ensemble des PréProto produites et les compare en elle afin d'identifier des documents identique dans deux PréProto. Lorsque deux documents identiques sont identifié, les deux PréProto sont recopiée dans une troisième PréProto, puis les deux préProtos de départs sont supprimée. La nouvelle préProto est utilisée pour la suite du traitement. À la fin du parcourt du traitement de l'ensemble des préProto, chaque préProto contient des ensembles disjoints. À partir de ce moment, on les appelle donc « Proto ». Stockage des Protos et de la ProtoList Chaque Proto est stockée dans une HashSet, puis ajouter à une HashMap qui est la protoListe; Mise à jour de la TodoListe : les documents ayant été ajoutés à la ProtoListe sont supprimé de la TodoListe. La Construction des Faux-Prototypes : À la fin de la construction des Prototypes, il reste des documents non-traités dans la Todoliste. Un module logiciel va calculer le nombre de Faux-prototypes à construire en fonction de l'équation 2. Puis va répartir les documents de la Todoliste de façon égale parmi l'ensemble de faux Prototype disponibles. La Construction d'un espace sémantique : un module logiciel prend en entrée le corpus de documents et construit un espace sémantique du type Random Indexing (Kanerva et al .1998). Comme décrit dans le document principal. La Construction des Vecteurs Prototypes et Faux Prototypes : Un module logiciel projette chaque terme de chaque document de chaque Prototype dans l'espace sémantique (la projection permet d'obtenir les occurrences des termes), puis réalise la somme de l'ensemble de vecteurs pour construire un vecteur prototype. L'opération est réalisée pour chaque élément de la ProtoListe et ainsi que pour chaque élément de la liste de Faux-Prototypes (pour rappel, le nombre de vecteurs doit être égal à la racine carrée du nombre de documents indexés).15 REVENDICATIONS1. Procédé d'indexation d'une pluralité de documents répartis dans un espace sémantique, ledit procédé comprenant une phase de création d'une matrice « mot/document » pondérée, procédé caractérisé en ce qu'il comprend : - une phase de regroupement de document en fonction d'une occurrence de termes de ladite matrice « mot/document », au sein d'au moins une liste de regroupement, une liste appartenant à ladite au moins une liste de document comprenant au moins un document de ladite pluralité de document ; - une phase d'obtention d'au moins un vecteur prototype, un vecteur prototype étant associé à chaque liste de ladite au moins une liste, un vecteur prototype courant d'une liste courante étant obtenu en fonction d'au moins un vecteur associé à au moins un document faisant partie de ladite liste courante. 2. Procédé d'indexation selon la revendication 1, caractérisé en ce que ladite phase de regroupement comprend au moins une itération des étapes suivantes, pour un document courant dudit ensemble de documents : - recherche, au sein dudit ensemble de documents, d'au moins un document voisin dudit document courant de sorte que (i) une similarité entre ledit document courant et un document voisin soit supérieure à seuil a, que (ii) le nombre de documents voisins dudit document courant soit inférieur à un nombre prédéterminé maxDoc, et que le nombre minimum de documents voisins dudit document courant soit supérieur à un nombre prédéterminé minCard, ladite recherche délivrant un ensemble de voisins. - insertion dudit ensemble de voisins dans une liste, dite liste de voisins ; - réitération desdites étapes pour un nouveau document courant dudit ensemble de documents. 3. Procédé d'indexation selon la revendication 2, caractérisé en ce que laditephase de regroupement comprend au moins une itération des étapes suivantes, pour chaque liste de voisins préalablement obtenue : recherche, parmi une liste de voisins, d'au moins un document appartenant à une liste de voisins courante et à ladite liste de voisins ; et lorsque ladite recherche est positive, fusion de ladite liste courante avec ladite liste comprenant ledit au moins un document ; lorsque ladite recherche est négative, passage à une liste de voisins suivante ; 4. Procédé d'indexation selon la revendication 1, caractérisé en ce que ladite phase d'obtention d'au moins un vecteur prototype comprend, pour une liste courante : - une étape de projection d'au moins une partie des termes composant ledit au moins un document de ladite liste courante dans ledit espace sémantique, délivrant au moins un vecteur associé audit au moins un document ; - une étape de sommation dudit au moins un vecteur délivrant ledit vecteur prototype. 5. Procédé d'indexation selon la revendication 1, caractérisé en ce qu'il comprend, préalablement à ladite phase de regroupement, une phase d'initialisation dudit espace sémantique comprenant : - une étape d'obtention d'un nombre maximum N de documents à indexer dans ledit espace sémantique ; - une étape d'initialisation de N vecteurs aléatoires pour ledit espace sémantique ; - une étape de création dudit espace sémantique à partir d'un nombre n de documents à intégrer dans ledit espace sémantique, n étant inférieur ou égal à N, ladite étape de création comprenant une pluralité d'étapes d'accumulation de n vecteurs aléatoires parmi lesdits N vecteurs aléatoirespréalablement initialisés ; 6. Procédé d'indexation selon la revendication 5, caractérisé en ce qu'il comprend, préalablement à ladite phase de regroupement, une phase de complétion dudit espace sémantique à l'aide d'un nombre i de nouveaux documents, tel que i+n est inférieur ou égal à N comprenant : - une étape de de mise à jour dudit espace sémantique à partir dudit nombre i de documents à intégrer dans ledit espace sémantique, ladite étape de création comprenant une pluralité d'étapes d'accumulation de i vecteurs aléatoires parmi lesdits N vecteurs aléatoires préalablement initialisés ; - une étape de mise à jour dudit index en fonction desdits i nouveaux vecteurs aléatoires. 7. Procédé de recherche, au sein d'un ensemble de documents, d'une pluralité de documents en fonction d'une requête de recherche, ledit ensemble de documents ayant été préalablement indexé selon le procédé tel que décrit en revendication 1, procédé de recherche caractérisé en ce qu'il comprend : - une étape d'obtention d'une longueur de requête ; - une phase de recherche booléenne lorsque ladite longueur de requête se situe sous un seuil d'activation prédéterminé / ; - une phase de recherche sémantique lorsque ladite longueur de requête est supérieure ou égale audit seuil d'activation prédéterminé /. 8. Procédé de recherche selon la revendication 7, caractérisé en ce que, ladite phase de recherche sémantique comprend : - une étape de création d'un vecteur recherche en fonction de termes de recherche de ladite requête ; - une étape de recherche sémantique en fonction dudit vecteur de recherche et de vecteurs associés auxdits documents dudit espace sémantique ;une étape d'obtention d'un sous ensemble de document correspondant à ladite requête, lesdits vecteurs desdits documents dudit sous ensemble de document ayant des valeurs de cosinus avec ledit vecteur de recherche supérieures ou égales à un seuil de pertinence p prédéterminé. 9. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, caractérisé en ce qu'il comprend des instructions de code de programme pour l'exécution du procédé d'indexation selon l'une au moins des revendications 1 à 6, lorsqu'il est exécuté sur un ordinateur. 10. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, caractérisé en ce qu'il comprend des instructions de code de programme pour l'exécution du procédé de recherche selon l'une au moins des revendications 7 et 8, lorsqu'il est exécuté sur un ordinateur.20