Représentation et approximation de fonctions booléennes : Application à la génération de requêtes



Documents pareils
Groupe symétrique. Chapitre II. 1 Définitions et généralités

Université Paris-Dauphine DUMI2E 1ère année, Applications

Chapitre 2 Le problème de l unicité des solutions

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

La classification automatique de données quantitatives

Image d un intervalle par une fonction continue

Algèbre binaire et Circuits logiques ( )

2.4 Représentation graphique, tableau de Karnaugh

Théorème du point fixe - Théorème de l inversion locale

Le produit semi-direct

Structures algébriques

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

CHAPITRE 5. Stratégies Mixtes

3 Approximation de solutions d équations

Chapitre 2. Eléments pour comprendre un énoncé

Résolution d équations non linéaires

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Continuité et dérivabilité d une fonction

Premiers exercices d Algèbre. Anne-Marie Simon

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Les indices à surplus constant

La fonction exponentielle

Développement décimal d un réel

Algorithmes d'apprentissage

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

LIVRE BLANC Décembre 2014

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

Représentation des Nombres

Définitions. Numéro à préciser. (Durée : )

avec des nombres entiers

Introduction à l étude des Corps Finis

Les algorithmes de base du graphisme

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Cours Premier semestre

TSTI 2D CH X : Exemples de lois à densité 1

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

IFT1215 Introduction aux systèmes informatiques

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Pourquoi l apprentissage?

Cryptographie et fonctions à sens unique

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Probabilités. I Petits rappels sur le vocabulaire des ensembles 2 I.1 Définitions... 2 I.2 Propriétés... 2

Introduction au Data-Mining

Probabilités sur un univers fini

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Calcul différentiel sur R n Première partie

Équations non linéaires

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

Resolution limit in community detection

Coup de Projecteur sur les Réseaux de Neurones

Jean-Philippe Préaux

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d Analyse. Fonctions de plusieurs variables

FONCTION DE DEMANDE : REVENU ET PRIX

LE PROBLEME DU PLUS COURT CHEMIN

Chapitre 1 : Évolution COURS

Limites finies en un point

Probabilités sur un univers fini

Rappels sur les suites - Algorithme

Objectifs. Clustering. Principe. Applications. Applications. Cartes de crédits. Remarques. Biologie, Génomique

DÉRIVÉES. I Nombre dérivé - Tangente. Exercice 01 (voir réponses et correction) ( voir animation )

DOCM Solutions officielles = n 2 10.

Raisonnement probabiliste

CAC, DAX ou DJ : lequel choisir?

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Simulation de variables aléatoires

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Economie de l Incertain et des Incitations

Conversion d un entier. Méthode par soustraction

1 Première section: La construction générale

Fondements de l informatique Logique, modèles, et calculs

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

1 Complément sur la projection du nuage des individus

Chapitre 3. Les distributions à deux variables

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Classe de première L

Cours de mathématiques

Probabilités conditionnelles Loi binomiale

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Qu est-ce qu une probabilité?

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Objets Combinatoires élementaires

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

La demande Du consommateur. Contrainte budgétaire Préférences Choix optimal

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Chapitre 5 : Flot maximal dans un graphe

Polynômes à plusieurs variables. Résultant

Quelques algorithmes simples dont l analyse n est pas si simple

Programmation linéaire

Transcription:

INSTITUT DE RECHERCHE EN INFORMATIQUE DE NANTES Représentation et approximation de fonctions booléennes : Application à la génération de requêtes LEBLET Jimmy encadré par QUAFAFOU Mohamed Institut de Recherche en Informatique de Nantes 2, rue de la Houssinière B.P. 92208 F-44322 NANTES CEDEX 3 RAPPORT DE STAGE DE DEA Mars 2004 IRIN, Faculté des Sciences & Techniques de Nantes 2, rue de la Houssinière B.P. 92208 F-44322 NANTES CEDEX 3

LEBLET Jimmy (encadré par QUAFAFOU Mohamed) Représentation et approximation de fonctions booléennes : Application à la génération de requêtes c Mars 2004 par LEBLET Jimmy rapport.tex Représentation et approximation de fonctions booléennes : Application à la génération de requêtes 8/3/ 2004 19:41

Représentation et approximation de fonctions booléennes : Application à la génération de requêtes LEBLET Jimmy (encadré par QUAFAFOU Mohamed)

Introduction L algèbre de Boole et le binaire sont au coeur de l informatique. Ces domaines ont été étudiés bien avant la naissance des premiers ordinateurs, mais l apparition de l informatique a permis un regain d intérêt pour ce domaine. L informatique a, par la suite donné naissance à une mine d information et de connaissances : Internet et le Web. On a donc un contraste entre l émergence récente de l Internet et la relative vieillesse de l algèbre de Boole. Dans ce mémoire, on réalise une symbiose entre les deux. En effet, on va se servir des formules booléennes, objets connus depuis de nombreuses années, afin d extraire des informations du Web. Dans ce but, on étudie dans le chapitre 1 une nouvelle représentation des fonctions booléennes. Celle-ci a été introduite en 1992 par Bryant. Cette représentation permet de transformer les fonctions booléennes (ou fonctions logiques) en graphe (ROBDD). A partir de ces graphes, on peut alors réaliser une approximation de cette fonction, c est un moyen simple et rapide de réaliser une approximation d une fonction booléenne. Cette méthode sera mise à contribution dans le chapitre 3. Dans ce chapitre, on décrit un algorithme et une méthode de génération de nouvelles requêtes à partir d un fichier contenant des requêtes déjà soumises. Ceci permet de générer de manière automatique des requêtes nouvelles qui peuvent améliorer la recherche réalisée au travers des précédentes requêtes. Dans le chapitre 4, on relie cette méthode à un programme de création automatique de corpus dans une langue minoritaire : CorpusBuiler. Il permet de récupérer sur le Web des documents dans une langue cible peu répandue. On essaiera d améliorer ce programme au moyen de la méthode décrite dans le chapitre 3. Ceci permet de valider la méthode proposée pour la génération automatique de requête au moyen des ROBDD. 3

Chapitre 1 Etude d une représentation particulière des fonctions booléennes : les ROBDD Le coeur de l informatique est basé sur le binaire et donc sur l algèbre de Boole. L étude des fonctions booléennes s est ainsi très développée depuis l origine de l informatique. De nombreuses recherches ont donc été réalisées sur le sujet. L étude des fonctions booléennes est un domaine vaste et difficile ; historiquement, l un des premiers problèmes qui a été démontré comme étant NP-Complet est un problème de satisfiabilité des fonctions booléennes. Cette difficulté provient du fait que ces fonctions sont simples mais en grand nombre : si l on a n variables, il existe alors 2 n fonctions booléennes différentes sur ces variables. Il faut alors pouvoir représenter de manières différentes toutes ces fonctions, tout en sachant que deux fonctions booléennes peuvent différer très peu l une de l autre. Le moyen de représenter ces fonctions influe donc grandement sur l efficacité avec laquelle on peut les utiliser par la suite. Nous allons introduire ici une représentation récente (voir [Bryant, 1992]) des fonctions booléennes. Cette représentation est avantageuse comparativement à d autres. De plus, ce système permet plus facilement de réaliser une approximation des fonctions booléennes, et ainsi on peut appliquer des opérateurs d approximation sur l espace des fonctions booléennes, ce qui permet de nombreuses applications, notamment en datamining et extraction de connaissances. Nous allons appliquer ceci à une étude de requêtes d utilisateurs à un moteur de recherche. On récupère une liste de requêtes soumises à un moteur de recherche (par un générateur automatique, un utilisateur ou un groupe d utilisateurs). Il s agit d étudier ces requêtes pour en générer de nouvelles. 1.1 Représentation des fonctions booléennes Les fonctions booléennes étant étudiées depuis de nombreuses années et dans différents domaines, il existe donc de nombreuses manières différentes de les représenter.nous rappelerons les notions fondamentales sur les fonctions booléennes. Ensuite, nous verrons différentes représentations existantes avec leurs avantages et inconvénients respectifs. Enfin, nous introduirons les ROBDD, qui est un nouveau moyen de les représenter. 1.1.1 Algèbre de Boole On note B l ensemble des valeurs de vérité, c est à dire l ensemble {0,1} où 0 représente la valeur faux et 1 la valeur vraie. Munis des opérateurs logiques et ( ), ou ( ) et non ( ), B devient une algèbre 4

5 de Boole. Pour un n donné, on peut définir une fonction f de B n B. On note l ensemble L(B n, B), l ensemble {f : B n B}. Cet ensemble, toujours muni des mêmes opérateurs que B, est aussi une algèbre de Boole. Définition 1 (Fonctions booléennes). L algèbre des fonctions booléennes, pour un n fixé est l ensemble L(B n, B) = {f : B n B} muni des opérateurs, et. Un élément de cette algèbre est une fonction booléenne à n variables à valeur dans B. Remarque. Voici quelques remarques concernant les fonctions booléennes et l algèbre qui leur est associée. On a L(B n, B) = 2 n. Ceci est le nombre de fonctions booléennes à n variables. Ce nombre est exponentiel par rapport au nombre de variables : si l on ajoute une variable, le nombre de fonctions booléennes est multiplié par deux! Si l on a f : B n B, on notera en général f comme f(x 1,,x n ), i.e. on notera x i la i-ème variable f. On peut définir des fonctions de B n B m, avec m 1. Pour étudier ce type de fonctions, on étudiera les restrictions sur chaque coordonnée, i.e., on verra g : B n B m comme : g(x 1,,x n ) = (g 1 (x 1,,x n ),,g m (x 1,,x n )) avec g i : B n B. On étudiera alors les g i indépendamment les unes des autres. La composition de fonctions booléennes est définie de manière triviale. Si l on a f 1 : B n B m, f 2 : B m B k, on a alors f = f 2 f 1 : B n B k, qui sera la fonction composée de f 1 et f 2. Définition 2 (Restriction de fonctions booléennes). Soit f une fonction booléenne à n variables (n 1). On peut alors plonger f dans L(B n 1, B). Pour cela, on choisit une variable x i avec i {1,,n}, et une valeur c pour cette variable (i.e. c B). On note alors, f xi =c, la fonction booléenne de B n 1 B qui est la restriction de f à x i = c. 1.1.2 Quelques représentations des fonctions booléennes Pour pouvoir travailler sur les fonctions booléennes, il faut pouvoir les représenter. Il en existe différentes représentations. Elles peuvent être très différentes les une des autres ou très proches. Chacune possède des inconvénients d utilisations et des avantages. Celles que nous allons voir sont celles le plus souvent utilisées. Formules booléennes Ceci est la représentation la plus souvent utilisée. Elle est aussi la plus connue et la plus répandue. Définition 3 (Formule booléenne de B n ). Une formule booléenne est un terme construit par induction sur les constantes booléennes 0 et 1, sur les variables x i de B n et les connecteurs logiques et ( ), ou ( ) et non ( ). La définition exacte de l ensemble des formules booléennes est : l ensemble des formules booléennes de B n est le plus petit ensemble de formules F B n tel que : 0,1 sont des formules. Les variables de B n sont des formules. Si g et f sont des formules, alors f g, f g et f sont des formules de B n. Exemple. Si l on note X = {x,y,z} l ensemble des variables deb 3, alors f = (x (y z)) ( y (x z)) est une formule booléenne de B 3.

6 Quel est l intérêt des formules booléennes? Les formules booléennes sont intéressantes pour plusieurs raisons. En effet, elles permettent facilement de pouvoir travailler avec les fonctions booléennes. Les formules booléennes sont des formules logiques, on peut donc aisément raisonner dessus. Leur grande expressivité leur permet d être comprise rapidement et par tout le monde. De plus, n importe quelle fonction booléenne f de B n peut être représentée par une formule booléenne. Réciproquement, chaque formule booléenne représente bien une fonction booléenne. Ainsi, l espace des formules booléennes décrit bien l espace des fonctions booléennes. Il se pose alors une question : Quelle est la différence entre les formules booléennes et les fonctions booléennes? On fait souvent l amalgame entre formules booléennes et fonctions booléennes. Or les formules booléennes sont justes un moyen de représenter les fonctions booléennes. De plus, il existe une grande différence entre formules et fonctions booléennes : Théorème. Soit f une fonction booléenne, alors f peut être représentée sous forme de formules booléennes. De même, chaque formule booléenne représente bien une fonction booléenne. Mais il n y a pas bijection entre formules booléennes et fonctions booléennes. En effet, deux formules booléennes différentes peuvent représenter la même fonction booléennes. Il n y a pas unicité de la représentation d une fonction booléenne par une formule booléenne, par contre deux formules booléennes égales représentent bien la même fonction booléenne. Ainsi, il n existe pas de bijection entre les deux espaces mais une surjection des formules booléennes sur les fonctions booléennes. Exemple. Voici f et g deux formules booléennes différentes : f = (a (b c)) ( a (b c)) et g = (a b) (a b c) ( a b c). Il est encore facile de voir que ces deux formules représentent la même fonction booléenne. Mais imaginons que l on ait 50 variables et non 3, alors le problème devient beaucoup plus difficile. Voici pourquoi les gens ne doivent pas identifier formules booléennes et fonctions booléennes. De nombreux problèmes apparaissent lorsqu on travaille avec les formules booléennes, car il faut pouvoir savoir si deux formules booléennes différentes sont bien égales comme fonctions booléennes. Or trouver (ou non) cette égalité est un problème très difficile. Tables de vérité Une fonction booléenne f est une application de B n vers B. Le moyen le plus simple de représenter cette fonction est tout simplement de faire la liste des valeurs possibles des variables booléennes et d indiquer la valeur de la fonction pour chaque assignement. Ceci peut être représenté dans une table où on liste toutes les entrées possibles (soit 2 n possibilités). En correspondance avec ces entrées, on indique l image de la fonction pour les valeurs des variables. Exemple. Voici une formule booléenne f d une fonction booléenne : f = (a b) ( b c). La table de vérité associée est :

7 a b c f 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 L intérêt des tables de vérité est qu une fonction booléenne possède une unique représentation sous la forme de table de vérité. Par contre, elle utilise un tableau à 2 n entrées et est peu lisible. L ensemble des tables de vérité est en bijection avec l ensemble des fonctions booléennes, ceci explique l unicité de la représentation mais explique aussi sa difficulté d utilisation. Diagramme de Karnaugh Les diagrammes de Karnaugh sont semblables aux tables de vérité. La seule différence est que les variables booléennes sont représentées dans un tableau à deux dimensions au lieu d une seule pour les tables de vérité. Exemple. Pour la même formule booléenne que dans l exemple précédent (f = (a b) ( b c)), le diagramme de Karnaugh est : Formules booléennes sous forme cnf a ā b 1 1 0 0 b 0 1 1 0 c c c On a vu qu une fonction booléenne possède plusieurs représentations en formules booléennes. Pour essayer de palier à ce problème, on introduit une autre forme de formules booléennes : les formules en forme conjonctive normale (cnf). Définition 4 (Forme normale conjonctive). Une formule booléenne f sur X est dite en forme conjonctive normale si elle est de la forme : f = m i=1 f i avec f i = n i j=1 x ij et chaque x ij X X où X représente l ensemble des négations des variables de X. Le problème est qu une formule booléenne a encore plusieurs représentations en forme cnf : Exemple. La formule booléenne f = (a b) (a c) (a b c) représente la même fonction booléenne que g = (a b) (a c). Par contre, cela permet une normalisation des formules booléennes. On utilise parfois les formes k-cnf où 2 k N : on contraint f i tel que f i k (dans la définition, cela donne n i k). On utilise aussi les formes exact-k-cnf : f i = k. On peut représenter n importe quelle fonction booléenne sous la forme d une cnf (cnf, k-cnf ou exact-k-cnf selon notre choix).

8 Formules booléennes sous forme dnf Bien sûr, il existe la même chose pour les formules en formes normales disjonctives (dnf, k-dnf et exact-k-dnf) : Définition 5 (Forme normale disjonctive). Une formule booléenne f est dite en forme normale disjonctive si elle est de la forme : f = m i=1 f i avec f i = n i j=1 x ij et chaque x ij X X. Il est aisé de passer formellement d une forme à l autre : il suffit de développer les termes dans les parenthèses. Par contre, en calcul, la complexité est assez élevée. 1.1.3 Différents problèmes liés aux fonctions booléennes Voyons les principaux (et les plus connus) problèmes et opérations liés aux fonctions booléennes. Ces problèmes dépendent souvent de la représentation choisie pour la fonction booléenne. Application d un opérateur logique Soit f et g deux fonctions booléennes représentées par F et G. Soit un opérateur logique binaire (,,,...). Le problème est : Quelle est la représentation H de la fonction h telle que h = f g? Exemple. Si l on pose H = f g avec f = a b et g = a b, alors H = b ou H = (a b) ( a b). Cet exemple est simple, mais la question est plus difficile pour certaines représentations des fonctions booléennes. Il est plus difficile de réaliser cette opération si les fonctions sont représentées sous la forme de table de vérité ou sous la forme conjonctive normale. Le ou de deux formes conjonctives normales n est pas une forme conjonctive normale, il faut donc le transformer en forme cnf, ce qui demande du travail supplémentaire. Evaluation Soit f une fonction booléenne sur X et a un assignement d un sous-ensemble de variables de X. Le problème d évaluation est : Quelle est la fonction F telle que F = f(a)? Exemple. Soit f = (x y) ((z x) (y z)). On pose a = {x = 1,y = 1,z = 0} et b = {x = 0}. On a alors : F = f(a) = 1 et G = f(b) = y (z (y z)). L évaluation sert à déterminer la valeur de la fonction booléenne pour un assignement de toutes les variables de X. Elle permet aussi de réaliser des restrictions sur la fonction booléenne. Par exemple dans le cas où b = {x = 0}, on obtient la fonction G qui est la fonction f restreinte à x = 0 :G = f x=0. On peut ainsi à partir d une fonction f : B n B, obtenir une fonction g : B k B avec k < n. Satisfiabilité Soit f une fonction booléenne sur X avec X = n. On a vu que f : B n B. On a donc Im(f) B. L étude de la satisfiabilité de f est l étude de l ensemble Im(f) : Définition 6 (Fonction satisfiable). Une fonction booléenne est satisfiable si 1 Im(f) On obtient ainsi trois problèmes distincts et connexes :

9 Satisfiabilité Le problème est : La fonction f est elle satisfiable? Ceci revient à dire si la fonction f est ou non équivalente à la fonction booléenne constante 0. En effet, si une fonction booléenne n est pas satisfiable, alors Im(f) = {0} donc f = 0. Satisfy-1 Soit f une fonction booléenne. Soit S f l ensemble S f = {a B n f(a) = 1}. S f est l ensemble des assignements qui rendent f vraie. Si la fonction f n est pas satisfiable, alors S f est vide, sinon cet ensemble contient au moins un élément. Le problème Satisfy-1 est : Pour une fonction booléenne f, déterminer un a S f (s il en existe un). Satisfy-all Le problème satisfy-all est le problème plus général : Pour une fonction booléenne f, déterminer S f. Les problèmes de satisfiabilité sont des problèmes très difficiles, notamment le problème de satisfiabilité est NP-Complet pour des formules dans la forme exact-3-cnf. Ce problème est appelé problème exact-3-sat. Tautologie On a vu dans les problèmes précédents que dire qu une fonction booléenne f n est pas satisfiable, revient à dire que la fonction f est identiquement la fonction 0. On peut se poser le problème réciproque pour tester si la fonction f est identiquement égal à la fonction constante 1 : Définition 7 (Tautologie). Une fonction booléenne f est une tautologie si et seulement si la fonction booléenne f est la fonction identiquement égale à 1. Egalité Le problème de tautologie est : La fonction f est-elle une tautologie? On a vu que le nombre de fonctions booléennes distinctes est important. De plus, une fonction booléenne peut avoir plusieurs représentations différentes pour un système de représentation particulier. Il devient donc intéressant de savoir : Étant données deux représentations F et G de deux fonctions booléennes f et g, déterminer si f = g. Ce problème peut paraître simple, mais deux fonctions booléennes ayant des représentations complètement différentes peuvent être égales. Ce problème n a pas lieu d être si, dans un système de représentation particulier, chaque fonction booléenne f a une unique représentation F dans ce système : pour vérifier l égalité, il suffit de vérifier l égalité des représentations (problème beaucoup plus simple en général). Exemple. Voici deux formules booléennes f et g : f = (a b c) ( a b) ( b c) ( c a) g = ((a b) (b a) b (c a) (c b)) (( b c) ( b a) (c a)) Ces deux formules sont égales et représentent donc la même fonction mais il faut faire un effort pour le voir. Bien sûr, une des deux représentations est plus simple que l autre.

10 Dépendance par rapport à une variable Soit f une fonction booléenne sur X et x une variable (x X). Le problème est : La fonction f dépend-elle de x? Ceci revient à déterminer si f x=0 = f x=1 = f. 1.2 Binary Decision Diagram et ROBDD 1.2.1 BDD et OBDD BDD Nous allons voir ici une représentation des fonctions booléennes : les Binary Decision Diagram (BDD). Cette représentation est la base des ROBDD. Les BDD découlent de la décomposition de Shanon : Théorème (Décomposition de Shanon). Soit f une fonction booléenne sur X = {x 1,,x n }, alors f : B n B peut s écrire : f(x 1,,x i,,x n ) = (x i f xi =1) ( x i f xi =0) pour tout i Définition 8 (Co-facteur). Soit f une fonction booléenne, on appelle i-ème co-facteurs de f les fonctions booléennes : f xi =0 et f xi =1 On associe souvent la décomposition de Shanon à la structure Si... Alors... Sinon. En effet, la décomposition de Shanon, pour la même fonction f, nous donne la structure : si x i alors f xi =1 sinon f xi =0 fin si De même, elle peut être représentée par un arbre : la racine représente la variable x i, les deux fils représentent les i-ème co-facteurs de f. Grâce à la décomposition de Shanon, on peut représenter n importe quelle fonction booléenne f sous la forme d un graphe : on appelle cette représentation un BDD (Binary Decision Diagram). Définition 9 (BDD). Soit f une fonction booléenne sur X. Un BDD de f est un graphe raciné défini par : Si X =, la feuille 1 ou 0 selon la valeur de f Sinon, un sous arbre binaire défini par : la racine est une variable x X un des fils (indexé par 0) est un BDD du co-facteur f x=0 défini sur X \ {x} l autre fils (indexé par 1) est un BDD du co-facteur f x=1 défini sur X \ {x} Pour chaque noeud interne α, on peut définir l index de α par la variable que représente ce noeud. Le problème des BDD est que la représentation n est pas unique : sur l un des fils, on peut avoir x j comme index et x k (avec k j) sur l autre fils. De plus, si la fonction f est une tautologie, alors le BDD de f ne sera pas forcément égal au graphe constitué uniquement de la feuille 1.

11 Exemple. Soit f la fonction booléenne définie sur X = {a, b, c} par la formule booléenne : f(a,b,c) = (a b c) (b c) ( a b) Si l on réalise la décomposition de Shanon par rapport à a, on obtient : f(a,b,c) = (a ((b c) (b c))) ( a ((b c) b)) Pour f a=1 = (b c) (b c), on réalise la décomposition suivante : f a=1 = (b (c c)) ( b 0). Pour f a=0 = (b c) b), on peut réaliser une autre décomposition : f a=0 = (c b) ( c b). On peut continuer ainsi jusqu aux feuilles. Cela nous donne donc : ( ( f a=1 = a b ( (c 1) ( c 1) )) ( b ( (c 0) ( c 0) ))) f a=0 = ( c ( (b 1) ( b 0) )) ( c ( (b 1) ( b 0) ))) a 1 0 b c 0 1 0 1 c c b b 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 FIG. 1.1 BDD de f(a,b,c) = (a ((b c) (b c))) ( a ((b c) b)) sous forme d arbre On peut, pour un gain d espace et plus de clarté, mettre une unique feuille 1 et une unique feuille 0. Cela donne un graphe non cyclique et non plus un arbre. On ne fera plus de distinction entre le BDD d une fonction sous forme d arbre ou sous forme de graphe. On peut penser que cette représentation est plus simple et plus expressive que les autres, mais cela n est pas le cas. En effet, il existe encore beaucoup de paramètres qui permettent des ambiguïtés dans les graphes. On ne peut pas voir dans le cas présent, que la fonction représentée ici ( f(a,b,c) = (a ((b c) (b c)) ( a ((b c) b))) est en fait la fonction f(a,b,c) = b.

12 a 1 0 b c 0 0 1 1 c b b c 0 1 0 0 1 1 0 1 0 1 FIG. 1.2 BDD de f = (a ((b c) (b c)) ) ( a ((b c) b)) avec uniquement 2 feuilles OBDD Nous avons vu que le BDD d une fonction n est pas unique. A ceci deux raisons : il peut y avoir des variables différentes sur chaque fils d un noeud et la représentation d une fonction booléenne n est pas sous une forme canonique. Nous allons commencer par résoudre le premier problème en ordonnant les variables. Définition 10. Soit f une fonction booléenne définie sur X, on peut alors définir un ordre sur les variables de X. On note cet ordre. L ordre sur X peut aussi se définir comme un ordre sur l ensemble I des indices de X. On notera indifféremment ces deux ordres. Exemple. Soit X = {a,b,c}, un ordre possible est : a c b où b est la variable la plus grande. Soit X = {x 1,x 2,x 3,x 4 }, un ordre possible est : 4 2 3 1. Pour X = n, il existe n! ordres possibles. A partir de cette notion d ordre on peut définir un OBDD : Ordonned Binary Decision Diagram. Définition 11 (OBDD). Soit f une fonction booléenne sur X ordonné. Un OBDD de f est un BDD de f respectant l ordre défini sur X : Si l on note x la variable d un noeud α du BDD, et x g, (x d ) la variable du fils gauche (respectivement droite) de α, alors on doit avoir x g x et x d x. Ceci permet que les noeuds respectent l ordre défini sur les variables : le long d un chemin de la racine à une feuille, l ordre des variables rencontrées doit respecter l ordre défini sur X. Exemple. Si l on reprend l exemple de la fonction : f(a,b,c) = (a b c) (b c) ( a b), avec l ordre c b a, on obtient le OBDD suivant : Si l on transforme l arbre en OBDD, on obtient la figure 1.4

13 a b b c c c c 0 0 1 1 0 0 1 1 FIG. 1.3 arbre binaire ordonné de f(a,b,c) = (a ((b c) (b c))) ( a ((b c) b)) a b b c c c c 0 1 FIG. 1.4 OBDD de f(a,b,c) = (a ((b c) (b c))) ( a ((b c) b)) On peut remarquer sur cet OBDD qu il y a des noeuds qui ne sont pas utiles. En effet, les deux fils d un même noeud (les noeuds étiquetés par la variable c) sont confondus ou représentent le même sous-arbre. On peut alors simplifier le OBDD, ce qui donne la figure 1.5. On voit dans ce graphe que f ne dépend pas de c mais que cet OBDD représente exactement la fonction f(a,b,c) = b. Pourtant, la fonction f = b n est pas seulement représentée par ces graphe, il existe le graphe où la racine est la variable b et le fils 0 est la feuille 0 et le fils 1 est la feuille 1. Or ici, on voit apparaître la variable a, il faudrait pouvoir l éliminer par simplification. 1.2.2 Reduced Ordonned Binary Decision Diagram : ROBDD Nous allons voir comment à partir des OBDD, nous pouvons obtenir une représentation canonique pour une fonction booléenne quelconque. On a vu que les OBDD peuvent être simplifiés, mais on peut davantage les réduire : on utilise pour cela l isomorphisme des sous-graphes. Cette réduction est due à

14 a b b 0 1 FIG. 1.5 OBDD de f simplifié [Bryant, 1992]. Définition 12 (ROBDD). Un ROBDD est un OBDD qui ne contient aucun noeud α tel que les deux fils soient égaux et aucune paire de noeuds distincts α et ω tels que les sous-graphes racinés en α et ω soient isomorphes. On dit que l OBDD est réduit s il est sous la forme d un ROBDD. Voici un théorème très important concernant les ROBDD : Théorème (Unicité des ROBDD). Soit f une fonction booléenne f définie sur X muni d un ordre, alors il existe un unique ROBDD H qui représente f. De plus, chaque sous graphe de H est sous forme réduite. Ce théorème nous permet d avoir l unicité du ROBDD d une fonction. Il existe un algorithme qui permet, à partir d un OBDD de f, de construire le ROBDD représentant f (voir [Bryant, 1992]). On trouve également dans cet article une démonstration du théorème. Le coût pour passer d un graphe G (représentant un OBDD de f) au ROBDD de f est de l ordre de O( G log G ) où G est le nombre de noeuds du graphe G. On peut même descendre en O( G ) ). Exemple. Pour f = (a ((b c) (b c))) ( a ((b c) b)), le ROBDD associé est : b 0 1 FIG. 1.6 ROBDD de f = (a ((b c) (b c))) ( a ((b c) b)) On retrouve exactement la fonction f = b. Le nombre de noeuds est descendu de 7 noeuds (OBDD non simplifié) à 1 noeud. Il découle de cette définition des ROBDD l unicité de la représentation d une fonction booléenne par les ROBDD. Voyons maintenant d autres intérêts des ROBDD.

15 1.3 Discussions sur les ROBDD 1.3.1 Éléments de complexité des ROBDD Essayons de voir comment l on peut résoudre les problèmes concernant les fonctions booléennes grâce aux ROBDD. Soit f une fonction booléenne sur X ( X = n) et F le ROBDD la représentant. On note F la taille du graphe de F. On suppose ici que le graphe F a été déjà construit, intéressons nous à la résolution de certains problèmes : Tautologie f est-elle une tautologie? Coût : O(1) Il suffit de regarder si la racine de F est la feuille 1 ou non. Il est évident que cela a le même coût pour le problème de satisfiabilité. Satisfy 1 Un élément de S f. Coût : O(n) Il suffit de partir de la feuille 1 et de remonter un chemin jusqu à la racine. La complexité est en O(n), car la hauteur maximale du graphe est le nombre de variables de X. Une autre possibilité est de partir de la racine puis de choisir un fils qui n est pas la feuille 0. On réitère ainsi jusqu à arriver à la feuille 1. On y arrivera forcément car si un noeud v est différent de la feuille 0 et 1, les feuilles 0 et 1 doivent obligatoirement appartenir aux sous-graphes racinés en v. Satisfy all Tous les éléments de S f. Coût : O(n. S f ) Il suffit de réitérer autant de fois que nécessaire le Satisfy-1. Satisfy count S f. Coût : O( F ) Il faut parcourir entièrement le graphe pour pouvoir compter la multiplicité de chaque noeud. Le résultat cherché est la multiplicité de la feuille 1. Application d un opérateur logique f 1 f 2 Coût de l ordre de O( F 1. F 2 ) Il faut faire l opération logique puis réduire le graphe ainsi obtenu car il ne l est pas. Il existe un algorithme pour la fonction APPLY dans [Bryant, 1992]. Égalité de deux fonctions f 1 et f 2 Coût de l ordre de : O( F 1 ) Il faut tester l égalité de deux graphes car il y a unicité du ROBDD. La complexité des opérations sur les ROBDD est très peu élevée et donc il peut paraître intéressant de les utiliser. Mais il ne faut pas se fier à ces apparences. En effet, toutes les complexités sont en fonction de la taille du graphe du ROBDD. Or cette taille peut être exponentielle par rapport à la fonction booléenne et on se retrouve à nouveau avec des complexités plus élevées. Le problème majeur des ROBDD se trouve donc dans la taille du graphe.

16 1.3.2 Problème NP-Complet Nous avons vu précédemment que la taille du graphe dépend grandement de l ordre des variables. Il est donc intéressant d étudier le problème suivant : Étant donné une fonction booléenne f sur X, déterminer l ordre σ sur X qui minimise la taille du ROBDD représentant f Malheureusement, il a été démontré que ce problème est NP-Complet. (voir [Nikolskaïa, 2000]) Considérons le multiplicateur à n-bits. Soit a 1,,a n et b 1,,b n les entrées (sous forme binaire) du multiplicateur. Le circuit possède 2n sorties correspondant à l encodage binaire de a.b. Chaque sortie peut être vue comme une fonction booléenne dépendant des entrées. Dans [Bryant, 1992], il a été montré qu au moins une des fonctions de sortie requiert un ROBDD ayant au moins 2 n 8 noeuds. On voit ainsi que même le meilleur ordre pour une fonction booléenne f est exponentielle en fonction du nombre de variables la définissant. 1.3.3 Lien entre données et fonctions booléennes Caractérisation d objets par leurs attributs On s intéresse à k objets pouvant avoir n attributs. Chaque objet peut être caractérisé par l absence ou la présence des attributs. On peut ainsi avoir une représentation binaire des objets : en effet, pour chaque attribut possible de l objet, on définit une variable booléenne indiquant l absence ou la présence de cet attribut. La description de l objet revient ainsi à déterminer les valeurs des variables booléennes. Voici un exemple de 5 objets pouvant avoir 6 attributs. L objet O 3 a seulement les attributs x 4 et x 6. Objets x 1 x 2 x 3 x 4 x 5 x 6 O 1 1 0 0 1 0 1 O 2 0 1 0 0 0 0 O 3 0 0 0 1 0 1 O 4 1 1 1 0 0 0 O 5 1 0 1 1 0 1 Pour chaque paire i,j d objets, on peut définir un ensemble d attributs pour lesquels ces objets diffèrent. Définition 13 ( (i, j)). On note (i, j) l ensemble des variables booléennes telles que les valeurs de ces variables différent pour l objet i et l objet j. On obtient ainsi pour les objets O 1 et O 2 : (1,2) = {x 1,x 2,x 4,x 6 }. A partir de cet ensemble, on peut définir une fonction booléenne qui réalise la disjonction de toutes les variables formant (i, j). On note f i,j cette fonction booléenne. Cette fonction est vraie si et seulement si au moins l une des variables pour lesquelles les objets diffèrent est vraie. Cette fonction permet ainsi de savoir si les deux objets sont différents pour certains attributs. On a donc f 1,2 = x 1 x 2 x 4 x 6. Il est évident que f i,j = f j,i. A partir de toutes les fonctions f i,j, on peut construire leur conjonction : F = k i,j=1 j<i f i,j

17 Dans notre exemple, on obtient ainsi la fonction suivante : F = (x 1 x 2 x 4 x 6 ) (x1 ) (x2 x 3 x 4 x 6 ) (x3 ) (x2 x 4 x 6 ) (x1 x 3 ) (x1 x 2 x 3 x 4 x 6 ) (x1 x 2 x 3 x 4 x 6 ) (x1 x 3 ) (x2 x 4 x 6 ) Cette fonction permet de caractériser l ensemble des objets et les relations entre eux : si tous les objets sont identiques, alors la fonction F est la fonction 0. De plus, si un attribut i est identique chez tous les objets, on a alors F qui ne dépend pas de la variable x i. On peut ainsi caractériser l information se trouvant dans les objets en étudiant cette fonction. Etude de la fonction booléenne obtenue On s intéresse à la fonction F obtenue à partir de la caractérisation des objets : il s agit de représenter en ROBDD. La fonction F est décrite sous forme normale conjonctive. On peut s intéresser aux tailles des clauses de F. Or cette taille, pour une clause f i,j, est exactement (i,j). On peut ainsi caractériser la taille des clauses en fonction de la table. Si l on veut appliquer l heuristique HMA (définie en 1.5), il faut que la taille possible des clauses soit un intervalle réduit et peu élevé (par exemple [2,4]). Or, pour que ce soit le cas, il faut que les données soient creuses, c est-à-dire que les objets diffèrent très peu les uns des autres. Il est possible d avoir d autres types de données : les données pleines. Dans ce cas, contrairement aux données creuses, les attributs des objets diffèrent beaucoup les uns des autres. On se retrouve avec des tailles de clauses appartenant à un intervalle réduit et élevé (par exemple [35, 40] pour une cinquantaine d attributs). Sur ce type de données, on peut appliquer une heuristique adaptée à ce type de problème. Enfin, on peut avoir des données de type mixte : les objets peuvent différer grandement les uns des autres ou être relativement proches. On obtient ainsi un intervalle grand (du type [2,35]). Pour ce type de donnée, il est difficile d appliquer une heuristique efficace car le domaine d application est trop vaste. Nous venons de lier le choix de l heuristique à appliquer aux types des données en entrées et non plus au type de la fonction booléenne. A partir du ROBDD ainsi obtenu, on peut extraire les ensembles minimaux de la fonction F. Définition 14 (Ensemble minimal d une fonction). Soit f une fonction booléenne définie sur X. Soit A un sous-ensemble de X tel que f restreinte à A = 1 soit une tautologie. On dit que A est un ensemble minimal s il n existe pas d ensemble B A et tel que f restreinte à B = 1 soit aussi une tautologie. Une fois les ensembles minimaux de F découverts, on peut alors réécrire F comme la disjonction des fonctions caractéristiques des ensembles minimaux de F. On a ainsi obtenu une réécriture de F sous forme disjonctive. A partir de cette forme, on peut caractériser la fonction et recueillir des informations sur les objets dont on est partis.

18 1.4 Taille du ROBDD et ordre des variables 1.4.1 Influence de l ordre des variables : un exemple Nous venons de voir que l ordre influait grandement sur la taille des ROBDD. Exemple. Soit f la fonction booléenne décrit par le ROBDD de la figure 1.7. Ce ROBDD représente une fonction booléenne f défini sur X = {x 0,,x 9 }. On remarque que l ordre est l ordre induit par l ensemble des indices I = {0,, 9}. La formule dnf de f est composée de 25 clauses conjonctives ayant de 2 à 6 variables dans chaque clause. Si l on change l ordre, par celuici : 0 7 3 2 8 9 6 1 5 4 On obtient un graphe avec seulement 23 noeuds au lieu des 40 de l autre ordre. Le gain est de 42,5%. On perd presque la moitié des noeuds en changeant simplement l ordre des variables. 1.4.2 Techniques pour réduire la taille d un ROBDD Il existe toute une discussion sur les ordres et les tailles des graphes (voir [Nikolskaïa, 2000]). Malheureusement, le nombre de fonction booléenne où l on peut nettement réduire la taille du graphe est exponentiellement petit par rapport aux nombres de fonctions booléennes. Par contre, on connaît des familles de fonctions où l on sait pouvoir réduire considérablement la taille (fonctions symétriques,...). Dans ces cas, on sait qu il existe un ordre qui minimise grandement la taille du graphe. Pour trouver cet ordre optimal, on ne teste pas tous les ordres possibles (n! ordres possibles), il a été développé différentes techniques pour améliorer l ordre. Elles se divisent en deux familles distinctes. Réarrangement d ordre dynamique Cette famille part du principe que le ROBDD a déjà été construit, et donc qu il existe déjà un ordre sur celui-ci. On essaye d améliorer dynamiquement cet ordre en le modifiant légèrement pour réduire la taille. Pour modifier l ordre d un ROBDD déjà construit, on utilise une opération de base : le swap de variables adjacentes. Définition 15 ( Swap de variables adjacentes dans un ordre). Soient x i et x i+1 deux variables adjacentes dans l ordre (par exemple, x i x i+1 ). Le swap de x i et x i+1 est l opération qui consiste à inverser les positions dans l ordre de x i et x i+1 : ce qui donne x i+1 x i. Le swap de variables induit un swap des noeuds au niveau du ROBDD : tous les noeuds qui étaient aux niveaux des deux variables changent de niveau. Il existe un théorème : Théorème (Coût d un swap de variables dans un ROBDD). Le swap de la variable x i et x i+1 dans un ROBDD peut être réalisé en un coût de l ordre de O( L i + L i+1 ) où L i (resp. L i+1 ) est le nombre de noeuds indexés par la variable x i (resp. x i+1 ). On peut, à partir de cette définition, réaliser l échange de n importe quelle paire de variables dans le ROBDD. Ceci revient à permuter les niveaux des noeuds. On utilise généralement une autre technique : la Window permutation. Sur l ensemble des variables de X = n, on choisit la taille m d une fenêtre. On fait se déplacer cette fenêtre sur l ensemble ordonné X. Pour chaque position de la fenêtre, on réalise toutes les permutations possibles des variables incluses dans la fenêtre. Une fois toutes les permutations réalisées, on garde

19 0 1 1 2 2 2 2 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 9 0 1 FIG. 1.7 ROBDD de f : G = 40 l ordre ayant minimisé la taille. On réitère cette permutation pour chaque position de la fenêtre, on réalise ainsi (n m + 1).m! permutations au lieu des n! ordres possibles. Cette technique dépend grandement de la taille de la fenêtre. En général, une taille de 3-4 est utilisée. Elle assure pas d avoir l ordre optimal mais elle permet de s en approcher pour un coût faible.

20 4 5 1 6 6 9 9 9 8 8 8 8 2 2 2 2 3 3 3 7 7 7 0 1 0 FIG. 1.8 ROBDD de f avec un autre ordre : G = 23 Autres méthodes Il existe d autres méthodes que celles décrites précédemment. Tout d abord, les ROBDD sont beaucoup utilisés dans le domaine des circuits logiques. On représente ainsi les fonctions booléennes utilisées dans des circuits logiques (multiplexeurs,...). Pour déterminer l ordre, on utilise d autres heuristiques

21 qui se basent sur la topologie du circuit étudié. Ces heuristiques ont de bons résultats en général. Malheureusement, cette technique ne s applique qu à ce type de fonction. Il existe une autre méthode pour déterminer un ordre : les algorithmes génétiques. On code pour chaque individu un ordre. On réalise des opérateurs de croisements et de mutations sur ces ordres. On crée ainsi une population d individus. La fonction d évaluation utilisée est la taille du graphe calculée pour l ordre de l individu. On cherche ainsi les meilleurs individus qui minimisent la fonction d évaluation. Grâce à tout ceci, on peut créer un algorithme génétique qui essaie d optimiser l ordre. Le gros inconvénient de cette technique est la nécessité, pour chaque individu,de calculer le ROBDD de la fonction avec l ordre de l individu. Or, pour des fonctions à 10 variables et 100 clauses, le temps de création d un ROBDD avec un ordre fixé est de l ordre de plusieurs secondes. Il faut multiplier ce temps par la taille de la population et ceci à chaque génération. Le coût de cette technique en terme de temps est très élevé. On pourrait réduire ce temps, si l on avait un moyen d estimer rapidement la taille du ROBDD en fonction de l ordre sans avoir à créer le ROBDD. 1.5 Heuristiques permettant de réduire la taille des graphes 1.5.1 Une heuristique particulière : HMA Il existe une autre famille d algorithmes permettant de rechercher l ordre optimal d une fonction booléenne. Cette famille construit l ordre avant la construction du ROBDD, elle est donc statique. On utilise pour cela des heuristiques qui essaient de prédire le meilleur ordre pour la fonction booléenne étudiée. Certaines heuristiques réalisent de bons résultats sur des familles particulières de fonctions booléennes. Ces heuristiques sont spécialisées, mais il n existe pas d heuristique ayant de bons résultats dans le cadre général. On se propose d étudier une heuristique en particulier : HMA. Cette heuristique est destinée aux fonctions booléennes appartenant à la famille des fonctions exacte-2-cnf. Elle a été définie par Nikolskaïa dans [Nikolskaia and Rauzy, 1998]. L algorithme HMA prend en entrée une formule booléenne 2-cnf et donne en sortie un ordre sur les variables. Algorithme 1 HMA calcule un ordre sur les variables Pré-condition : f formule booléenne sous forme 2-cnf Réaliser un ordre intermédiaire σ i en triant par ordre décroissant les variables en fonction de leur nombre d apparition p(v) dans f. tant que σ i n est pas vide faire Prendre la première variable v 1 dans σ i. pour chaque variable c des clauses où v 1 apparaît faire p(c) = p(c) 1 fin pour Enlever de σ i les variables v telles que p(v) = 0 et les ajouter à l ordre σ fin tant que Exemple. Soit f la formule booléenne f = (a c) (a d) (a h) (b c) (b e) (e h). Voici comment fonctionne HMA :

22 L ordre ainsi obtenu est : a d b c e h. v a b c d e h Étape 1 p(v) 3 2 2 1 2 2 f 1-1 -1 f 2-1 -1 f 3-1 -1 itération 1 p(v) 0 2 1 0 2 1 f 4-1 -1 f 5-1 -1 itération 2 p(v) 0 0 0 0 1 1 f 6-1 -1 itération 3 p(v) 0 0 0 0 0 0 Résultats de l heuristique [Nikolskaia and Rauzy, 1998] a étudié cette heuristique simplement dans le cadre des formules 2-cnf. Les résultats sont impressionnants. Cette heuristique est très adaptée à cette famille de formules. On obtient pour une réécriture aléatoire d une formule des tailles qui varient de 160000 noeuds à un peu moins de 20000 noeuds pour un ordre quelconque. Avec l heuristique, la taille des ROBDD reste à peu près constante : elle est d environ 20000 noeuds. On se retrouve en général dans le meilleur des cas. L ordre ainsi obtenu n est pas forcément l ordre optimal (on peut descendre légèrement en dessous) mais il en est relativement proche. L intérêt de l heuristique est que l on réduit considérablement la taille et que l on s approche grandement de la taille minimale pour un coût faible. L heuristique n a pas été étudiée par l auteur de l article dans d autres familles que les fonctions 2-cnf. Nous avons essayé cette heuristique dans le cadre de formules 2-dnf. Là aussi,l heuristique a de meilleurs résultats qu un ordre quelconque. Elle réduit la taille de 20 à 25 %. Nous l avons aussi essayée avec des fonctions disjonctives où la taille des clauses pouvait varier dans un intervalle. Nous avons essayé plusieurs types d intervalles. Les exemples donnés ici sont sur X tel que X = 50. Intervalle réduit et peu élevé (par exemple [2, 5]) : l heuristique se trouve dans son domaine de prédilection. Ses résultats sont donc très bons. Elle améliore grandement un ordre quelconque. Intervalle réduit et élevé (par exemple [35, 40]) : l heuristique améliore légèrement l ordre mais son gain est faible. Il faut trouver une autre heuristique plus adaptée que HMA. Intervalle grand (par exemple [2,35]) : le gain est très variable selon les cas. On améliore toujours l ordre quelconque. Les résultats de l heuristique dépendent de la forme de la formule booléenne. Il faut donc vérifier la forme avant d appliquer l heuristique, tout en sachant que pour l instant, il n a pas été trouvé d heuristique adaptée pour les intervalles de la forme [35, 40] et [2, 35]. 1.5.2 Généralisation de HMA : une nouvelle heuristique Le problème de l heuristique HMA est que sa performance se réduit au cadre des fonctions 2-cnf ou 2-dnf. Il peut être intéressant de généraliser cette heuristique dans le cadre de fonctions booléennes quelconques sous formes cnf ou dnf. Pour cela, il faut modifier l algorithme de l heuristique. Tout d abord, nous avons besoin de définir la fréquence relative d une variable dans une formule booléenne sous forme cnf (identique pour la forme dnf) :

23 Définition 16 (Fréquence relative). Soit f une fonction booléenne sous forme cnf : f = n i=1 f i. On note p fi (x k ) la fréquence de x k dans f i et f i le nombre de littéraux de f i. On a alors p fi (x k ) sa fréquence relative de la variable x k par rapport à f i qui est : p fi (x k ) = p f i (x k ) f i A partir de cette notion, on peut alors définir la fréquence relative de x k par rapport à f : p(x k ) = n i=1 p fi (x k ) f i La fréquence relative d une variable nous permet de déterminer l importance d une variable par rapport aux autres variables au sein d une même clause et donc dans une fonction. Cela permet de pénaliser une variable qui est souvent présente dans des clauses de grandes tailles par rapport aux variables moins présentes mais dans des clauses plus petites. Ainsi, cela relativise la fréquence d une variable par rapport à la taille des clauses. Grâce à cette fréquence relative, on peut généraliser HMA : Algorithme 2 HMOI calcule un ordre sur les variables Pré-condition : f formule booléenne sous forme dnf ou cnf Réaliser un ordre intermédiaire σ i en triant par ordre décroissant les variables en fonction de leur fréquence relative p(v) dans f. tant que σ i n est pas vide faire Prendre la première variable v 1 dans σ i. pour chaque clause f i où v 1 apparaît faire pour chaque variable c de f i faire p(c) = p(c) 1 f i fin pour fin pour Enlever de σ i les variables v telles que p(v) = 0 et les ajouter à l ordre σ fin tant que Voyons voir par la pratique comment fonctionne cette heuristique : Exemple. Soit f la formule booléenne f = (b c) (d h) (a c) (a d h) Voici comment fonctionne HMOI : Étape 1 p(v) 5 6 v a b c d e h f 1 1 2 1 2 f 3 1 2 1 2 1 1 itération 1 p(v) 3 0 0 3 f 4 1 3 1 3 1 3 1 1 itération 2 p(v) 0 0 0 0 2 2 f 2 1 2 1 2 itération 2 p(v) 0 0 0 0 0 0 3 6 6 6 2 6 3 6 1 2 5 6 5 6

24 L ordre ainsi obtenu est : c b a d h e. Si l on applique l algorithme original de HMA, on obtient alors l ordre suivant : a d c b h e. Pour cet ordre, le ROBDD de f possède 9 noeuds, alors que celui réalisé avec l ordre de HMOI n a que 8 noeuds. Il faut quand même faire attention. En effet, dans ce cas particulier, si l on prend l ordre naturel (a b c ), le ROBDD n a alors que 7 noeuds. Ce ne sont que des heuristiques et l on obtient pas forcément le meilleur ordre ou que l on améliore pas forcément l ordre déjà existant. Remarque. L algorithme de HMOI est une généralisation de HMA. En effet, dans le cadre de fonctions booléennes sous forme exact-x-cnf ou exact-x-dnf (c-à-d quand la taille des clauses est fixe), les deux heuristiques coïncident et donnent le même ordre. Dans ce cadre, la fréquence relative est proportionnelle à la fréquence de la variable, donc les deux heuristiques classent les variables dans le même ordre. Ceci nous permet de pouvoir bénéficier de l efficacité de HMA dans ce cadre et d essayer de l améliorer dans les autres cas. 1.5.3 Résultats des heuristiques L exemple précédent a montré qu il faut faire attention aux résultats des heuristiques. En effet, cellesci ne nous assurent pas d avoir le meilleur ordre possible, et si l ordre naturel est déjà le meilleur ordre (ou qu il s en approche), alors l ordre calculé par l heuristique peut s éloigner de la taille minimale. Il est intéressant de voir la répartition de la taille des graphes en fonction des ordres. On étudie une fonction booléenne f définie sur 9 variables, ayant 50 clauses dont la taille varie de 2 à 5 variables. On a testé l ensemble des 9! (soit un peu plus de 300000) ordres possibles sur cette fonction. Pour chaque ordre, on a calculé la taille du ROBDD associé. On peut ainsi de voir comment se répartissent ces tailles : pour chaque taille de graphe, on a totalisé le nombre d ordre qui réalise cette taille. La figure 1.9 nous donne les résultats. 40000 factoriels.data 35000 hma 30000 nombre d ordres 25000 20000 15000 hmoi 10000 5000 0 20 25 30 35 40 45 50 55 60 taille du graphe nombre de variables : 9 nbre de clauses : 50 taille des clauses : 2-5 FIG. 1.9 Nombres d ordres en fonction de la taille du ROBDD On remarque que la répartition des ordres nous donne une gaussienne. Il serait intéressant de savoir si

25 cette répartition est généralisable à n importe quelle fonction booléenne ou est-elle due au cas particulier étudié. Cela nous permet aussi de pouvoir tester l efficacité des heuristiques. Si la répartition suit une gaussienne, alors en choisissant un ordre au hasard, on a de fortes chances de se trouver dans l intervalle de confiance de la gaussienne. On peut donc voir où se trouvent les ordres donnés par les heuristiques : ils se trouvent dans cet intervalle, l heuristique n apporte pas grand chose par rapport à un choix au hasard de l ordre, alors que si l ordre se trouve en dehors de cet intervalle, on a un gain important et l heuristique devient intéressante. Si on étudie le cas particulier donné ici, on a une répartition des tailles de graphes de 22 noeuds (avec 6 ordres possibles) jusqu à une taille de 55 avec 12 ordres possibles. On observe une multiplication par 2,5 entre le nombre minimal de noeuds et le nombre maximal de noeuds. Les tailles les plus fréquentes se trouvent entre 29 et 41 noeuds (avec entre 10000 et 35000 ordres possibles à chaque fois). Si on s intéresse aux heuristiques, on obtient 31 noeuds avec l heuristique HMOI, 33 avec HMA et l ordre naturel. On se trouve encore près du pic de la gaussienne mais HMOI se trouve un peu plus bas que HMA. On peut donc encore améliorer ces heuristiques en résultat brut. Malheureusement, on ne peut pas étudier les résultats bruts des heuristiques dans un cadre plus général, car il faudrait générer les n! ordres possibles et les ROBDD associés. Pour pouvoir les étudier, on les compare donc entre elles. Les résultats obtenus sont donnés dans la figure 1.10. 0-10 hmoi hnous hma 0-20 Gain -30-40 -50-60 0 50 100 150 200 250 Axe X : nombre de clauses nombre de variables : 25 taille des clauses 2-10 nombre d essais 20 FIG. 1.10 Gain de la taille des graphes pour différentes heuristiques dans un cas particulier Pour tester les heuristiques, on génère aléatoirement des fonctions booléennes en fonctions de certains paramètres. On étudie comment les heuristiques réagissent en fonction de la variation du nombre de clauses, du nombre de variables ou de la taille des clauses dont est constituée la fonction booléenne. Dans la figure 1.10, on se trouve dans le cadre de données creuses où on augmente le nombre de clauses. On s intéressera seulement aux heuristiques HMA et HMOI car la troisième heuristique (HNOUS) n est efficace que dans un cas particulier. On voit ici, que le gain de HMOI est toujours supérieur au gain de HMA d à peu près 10 points. On remarque aussi que HMOI nous permet de diviser par deux la taille du graphe dans les meilleurs cas et lorsque le nombre de clause augmente alors le gain augmente environ de

30 à 40%. L heuristique HMOI se trouve très bien adaptée dans le cadre de données creuses ou mixtes, mais elle est moins performante lorsque les données sont pleines. De plus, lorsqu on augmente le nombre de variables sans modifier les autres paramètres, l efficacité de HMOI augmente. En effet, quelque soit le type de données de départ, lorsqu on augmente le nombre de variables, les données deviennent de plus en plus creuses, donc HMOI devient de plus en plus efficace. A contrario, lorsqu on augmente la taille de l intervalle, l heuristique se trouve dans le cadre de données mixtes, donc elle devient légèrement moins efficace. Enfin, lorsqu on augmente le nombre de clauses d une fonction, c est à dire le nombre d objets, l efficacité de l heuristique diminue lentement pour, au bout d un nombre important de clauses, redevenir plus efficace. On vient donc de trouver une heuristique qui diminue la taille d un ROBDD de 50% en moyenne lorsque les données sur lesquelles la fonction booléenne est générée sont creuses. Ceci permet d obtenir facilement un ordre qui réduit considérablement la taille. Cet ordre nous permet aussi de déterminer les variables les plus importantes en termes de quantité d information. 26

Chapitre 2 ROBDD et approximations de fonctions booléennes Le but est de pouvoir réaliser une approximation des fonctions booléennes. Les principaux intérêts de l approximation sont nombreux : un gain d espace, une simplification de la fonction, etc. Nous verrons plus tard l utilisation de cette approximation. Pour commencer, il faut définir la notion d approximation dans l espace des fonctions booléennes : 2.1 Approximation et fonctions booléennes Soit f une fonction booléenne. Pour pouvoir approximer cette fonction, il faut définir un certain nombre de notions sur les fonctions booléennes. En effet pour pouvoir réaliser une approximation d une fonction booléenne, il nous faut définir un ordre (partiel) sur les fonctions. Cela va nous permettre de comparer deux fonctions entre elles et de savoir qu elle est la plus grande. On pourra alors définir une approximation haute de la fonction (qui sera une approximation plus grande de la fonction) et une approximation basse (qui sera plus petite que la fonction). Enfin, nous devons définir une distance sur l espace des fonctions booléennes car cela va nous permettre de chercher la fonction la plus proche de la fonction de départ selon certains critères. Commençons par une notion d ordre partiel dans l espace des fonctions booléennes : Définition 17 (Ordre partiel sur les fonctions booléennes). Soit f et g deux fonctions booléennes, on dit que f g si et seulement si f g = f. Ceci nous permet de comparer certaines fonctions, mais une fois la comparaison réalisée, il faut déterminer la distance entre ces deux fonctions : Définition 18 (Distance entre deux fonctions booléennes). Soit f et g deux fonctions booléennes. On note l opérateur logique ou exclusif et sc(f) (satisfy count le nombre d assignements différents qui rendent la fonction f vraie). On peut définir alors la notion ε de distance entre f et g : ε(f,g) = sc(f g) Il est évident que ceci détermine bien une distance compatible avec une notion intuitive de différence entre deux fonctions booléennes différentes. En effet, si la fonction f g vaut 1 pour un assignement donné, cela veut dire que l une des deux fonctions vaut 1 et que l autre vaut 0, ce qui revient à dire que 27

28 les deux fonctions différent pour cet assignement. Pour connaître la différence globale entre les deux fonctions, il suffit donc de compter le nombre d assignements qui rendent vrai la fonction f g, ceci nous donne la formule. Pour pouvoir réaliser une approximation d une fonction booléenne, il faut définir des notions de contraintes concernant cette approximation. Souvent, on définit une approximation d une fonction f, la fonction f qui est la fonction la plus proche de f tout en respectant un certain nombre de contraintes. On peut de même définir l approximation haute et basse d une fonction : Définition 19 (Approximations de f). Soit f une fonction booléenne, soit E l ensemble des fonctions booléennes respectant les contraintes imposées et soit ε la distance définie sur l espace des fonctions booléennes, on peut alors définir : une approximation f de f qui vérifie : l approximation haute f + de f qui vérifie : f E et g E, ε(f,g) ε(f, f) f + E,f < f + et g E tel que g f alors ε(f,g) ε(f,f + ) l approximation basse f de f qui vérifie : f E,f > f et g E tel que g f alors ε(f,g) ε(f,f ) On peut remarquer qu il n y a pas forcément unicité des approximations. En effet, il peut exister plusieurs fonctions qui vérifient la définition de f,f + ou f. De plus, l approximation f peut être différente de f + et de f. La fonction ayant le moins de différence avec f tout en respectant les contraintes peut ne pas être comparable avec f, c est à dire que l on a ni f f ni f f. Ceci provient du fait que notre notion d ordre sur les fonctions booléennes est partielle et non totale. Il peut être donc plus difficile de trouver f que de trouver f +. 2.2 Fonctions booléennes, ROBDD et approximation 2.2.1 Approximation Le rapport entre l approximation de fonction booléenne et les ROBDD n est pas évident de prime abord. Mais les ROBDD nous permettent d introduire une contrainte sur les fonctions booléennes et leurs représentations. On peut chercher l approximation d une fonction booléenne f telle que sa taille de ROBDD ne dépasse pas un certain nombre de noeuds. On vient ainsi de déterminer une contrainte sur les fonctions booléennes. On peut alors redéfinir précisément f + : Définition 20 (f + ). Soit f une fonction booléenne. On note f la taille du ROBDD de f. Soit k la contrainte de taille sur f + (i.e. la taille de f + doit être inférieure ou égale à k). On a alors f + qui est une fonction booléenne qui vérifie : g { g k et g f} tel que ε(f,g) ε(f,f + )

29 2.2.2 Etude d un cas particulier Supposons que l on ait le ROBDD d une fonction f et que l on veuille remplacer un noeud v de f et son sous-graphe par la feuille 0. Le graphe ainsi créé n est pas forcément un ROBDD, il faut donc le réduire pour obtenir le ROBDD correspondant. Soit f le ROBDD ainsi obtenu. On peut remarquer que l on a forcément f f( car tous les chemins de f menant à la feuille 1 sont forcément des chemins de f, donc f f = f ). f définit bien une borne inférieure de f. Quelle est l erreur introduite en remplaçant v par la feuille 0? Ou autrement dit, que vaut ε(f,f )? Pour le savoir, il faut connaître le nombre de chemins menant de la racine du ROBDD de f au noeud v. Notons µ(v) ce nombre qui est la multiplicité du noeud v. Pour chaque chemin de f ne passant pas par v, la valeur de f est, par construction, la même. Donc f f vaut 0 pour tous les chemins ne passant pas par v. Il suffit donc de calculer le nombre de chemins passant par v qui mènent à la feuille 1 dans f(car tous les chemins passant par v valent 0 dans f ). Or le sous-graphe enraciné en v est aussi un ROBDD, donc aussi une fonction booléenne. Déterminer le nombre de chemins passant par v dans f et menant à la feuille 1 revient à calculer ε(0, v) µ(v).on note index(v) l indice de la variable du ROBDD enraciné en v. On relativise alors le sc(f) par rapport à index(v). On a donc : ε(f,f µ(v) ) = 2 index(v) 1 ε(v,0) = µ(v) sc(v) 2index(v) 1 On peut, grâce à cette formule, calculer l erreur introduite par rapport à f en enlevant un noeud de f. 2.2.3 Heuristiques pour calculer f A partir de la formule donnant l erreur en enlevant un noeud de f, on peut réaliser un algorithme calculant f de façon approchée : Algorithme 3 Heuristique pour le calcule de f Pré-condition : ROBDD de f, k contrainte de taille g=f pour tout Noeud v de g faire Calculer µ(v) et sc(v) fin pour tant que g k faire Trouver le noeud v de g minimisant l erreur introduite : Remplacer le noeud v de g par la feuille 0 Réduire g (transformer g en ROBDD) pour tout Noeud v de g faire Recalculer les µ(v) et sc(v) fin pour fin tant que µ(v) 2 index(v) 1 sc(v) Ceci permet de calculer la borne inférieure de f. On peut de la même manière calculer f + en remplaçant le noeud v non pas par 0 mais par 1, et l erreur introduite n est pas sc(v) mais sc( (v)) (qui est le nombre de chemins de v menant à 0). On obtient ainsi f +. Mais on peut utiliser la dualité des fonctions booléennes et la complémentarité des opérateurs d approximations :

30 Théorème. Si l on note f + (g) l approximation haute de g donnée par l heuristique et de même pour f (g), on a alors : f + (g) = (f ( (g)) Démonstration. Pour démontrer l équivalence entre les deux fonctions, on doit comparer l algorithme pour calculer f + (g) et la fonction renvoyée par (f ( (g)). Voici l algorithme calculant f + : Algorithme 4 Heuristique pour le calcule de f + Pré-condition : ROBDD de f, k contrainte de taille g=f pour tout Noeud v de g faire Calculer µ(v) et sc( v) fin pour tant que g k faire Trouver le noeud v de g minimisant l erreur introduite : Remplacer le noeud v de g par la feuille 1 Réduire g (transformer g en ROBDD) pour tout Noeud v de g faire Recalculer les µ(v) et sc( v) fin pour fin tant que µ(v) 2 index(v) 1 sc( v) Si l on remplace l entrée f de l algorithme pour calculer f par f, la seule différence avec l algorithme pour calculer f + est que les feuilles, remplacées par 0, sont remplacées par 1. En effet, on a µ(v) = µ( v), index( v) = index(v) car, pour un robdd, l opération de négation revient simplement à remplacer la feuille 1 par 0 et réciproquement pour la feuille 0. La multiplicité, l index des noeuds du robdd sont invariants par cette opération. On a bien alors (f (g)) = f + (g) car les feuilles 0 et 1 sont inversées, donc les feuilles non modifiées par l algorithme restent inchangées (car deux inversions successives) et les chemins menant à 0 rajoutés par f sont remplacés par des chemins menant à 1 par le. On a bien égalité entre les deux sorties des algorithmes. 2.2.4 Exemple Soit g la fonction suivante : g = (a b c d e) (b c d a) (a b) (e f) Son ROBDD a une taille de 12 noeuds. On réalise une approximation de g avec une contrainte de taille de 11 noeuds. On obtient les fonctions qui se trouvent sur les trois figures suivantes (Fig. 2.1, 2.2, 2.3). On peut remarquer qu à la fois g + et g ont enlevée le même noeud (noeud ayant e comme variable qui correspond au chemin a = 1, b = 1, c = 1 et d = 0). Dans f +, ce noeud est redirigé vers 1 alors que dans g il est redirigé vers 0. Ici, dans les deux cas, c est le même noeud qui minimise l erreur mais, en général, ce n est pas le cas. De plus, lorsqu on impose une contrainte de taille de 11 noeuds, on se retrouve avec deux graphes d exactement 11 noeuds. Mais, lorsqu on redirige un noeud vers une feuille 0 ou 1 et qu on réduit l arbre en ROBDD, la taille du graphe peut diminuer de plus d un noeud. On peut donc se retrouver avec des graphes de tailles plus petites que la contrainte imposée. Dans cet exemple, si on impose une taille de 9 noeuds aux approximations, on se retrouve avec une taille de 8 pour l approximation haute et de 9 pour l approximation basse.

31 a b b c c d d e e f 0 1 FIG. 2.1 ROBDD de la fonction g (12 noeuds) 2.2.5 Remarques sur l ordre des variables et l approximation Les ROBDD sont grandement influencés par l ordre qu on choisit sur les variables. Cette relation se retrouve aussi sur la fonction d approximation. En effet, l algorithme d approximation dépend grandement de l ordre sur les variables : index(v) et µ(v) sont modifiés si on modifie l ordre sur les variables et donc le calcul d erreur et aussi le noeud enlevé. On montre ainsi que si l on modifie l ordre on modifie aussi l approximation de la fonction. De plus, supposons qu avec un ordre défini le ROBDD f a une taille de x noeuds et qu on impose une contrainte de y noeuds avec x > y, soit f + l approximation obtenue. Si l ordre imposé n est pas l ordre optimal pour f, peut être qu un autre ordre nous aurait donné un ROBDD f avec une taille z avec z y. Ainsi l approximation f + obtenu avec la même contrainte de taille y nous aurait donné f et donc l approximation serait la fonction exacte alors que f + avec un autre ordre serait une fonction approchée et non la fonction exacte. Donc en fonction de l ordre sur les variables, on peut réaliser une approximation de la fonction alors qu avec un autre ordre, la même fonction aurait satisfait les contraintes. Il est donc important de réaliser un pré-traitement de la fonction pour essayer de diminuer la taille du ROBDD à approximer, mais ceci est un problème NP-Complet, il faut donc composer avec les deux problèmes : réduction de taille et approximation.

32 a b b c c d d e f 0 1 FIG. 2.2 ROBDD de la fonction g + (11 noeuds) a b b c c d d e f 0 1 FIG. 2.3 ROBDD de la fonction g (11 noeuds)

Chapitre 3 Application à l expansion, l enrichissement et la reformulation de requêtes 3.1 Analyse et génération de requêtes 3.1.1 Présentation du problème Lorsqu on utilise un moteur de recherche, il faut lui soumettre une requête et en fonction de celle-ci, le moteur nous propose des résultats (sous formes de pages internet, liens, documents...). Le problème de trouver le bon document devient donc le problème de soumettre la requête la plus appropriée aux moteurs de recherches. Malheureusement, ceux-ci ne sont pas assez évolués pour comprendre le langage naturel et la formulation naturelle de requêtes. Il faut donc que l utilisateur se soumette aux contraintes de formulations du moteur de recherche. En général, les requêtes soumises aux moteurs doivent se présenter sous la forme élémentaire : +x 1 + x n y 1 y m où les x i et y j (1 i n, 1 j m) sont des mots. Les mots x i doivent se trouver dans le document recherché et les y j ne doivent pas s y trouver. Si l on recherche un document sur les volants de badminton, on peut soumettre la requête : +volants +badminton +sport On peut aussi la raffiner et ne pas vouloir des raquettes de badminton ni des volants de voitures, on modifie donc la requête : +volants +badminton -raquette -voiture Lorsque l utilisateur soumet une requête à un moteur, il lui arrive souvent de modifier ou reformuler sa requête en fonction du résultat de la requête précédente. Une des approches actuelles pour aider l utilisateur dans sa recherche est de lui soumettre des reformulations possibles de sa requête. Si le résultat de la recherche ne convient pas à l utilisateur n a plus qu à choisir ou modifier une des reformulations proposées par le moteur de recherche. 33

34 3.1.2 Solutions existantes Ce domaine de recherche existe depuis fort longtemps en informatique. Bien avant la création d Internet, le problème se posait déjà. En effet, dès 1971, il existait des recherches dans ce domaine. Les requêtes n étaient pas soumises à des moteurs de recherches mais concernaient des recherches dans des bases de données (voir [Sparck, 1971]). Ces dernières années, la recherche s est développée dans les deux directions suivantes. Utilisation de corpus Une première méthode consiste à enrichir la requête à partir d un corpus déjà établi. Il faut donc, en pré-traitement, créer un corpus de requêtes déjà soumises. La création de ce corpus, à partir d un nombre très important de requêtes et documents, demande donc un traitement lourd et complexe en amont du traitement de la requête soumise au moteur de recherche. A partir du corpus ainsi établi, on peut modifier la requête par des mots en relation avec ceux la composant. On utilise ainsi la connaissance sémantique du corpus pour enrichir et/ou modifier la requête. L avantage de cette méthode est qu une fois que le corpus est construit, on peut traiter la requête facilement (mais le coût du traitement dépend de la taille du corpus). Par contre, le coût de cette méthode est important lors de la création du corpus. De plus, les résultats sont relativement moyens. Pour de plus amples renseignements, voir [Buckley et al., ]. Analyse des documents renvoyés par le moteur La deuxième méthode consiste en une analyse des documents renvoyés par le moteur de recherche. On réalise une étude de ces documents (en général du Textmining). On extrait des documents les principaux mots-clés de ces documents. on peut alors modifier la requête par des mots extraits des documents qui sont en rapport avec les mots de la requête. Il n y a ainsi pas besoin de pré-traitement des corpus. L intérêt de cette méthode est qu elle ne nécessite aucune connaissance sémantique et aucun corpus ; on peut ainsi faire le traitement à la volée. Par contre, elle nécessite une analyse de documents. Or cette analyse peut être un traitement relativement lourd : plus l analyse est performante, plus l enrichissement de la requête sera bénéfique. Il faut donc trouver un compromis entre la richesse de l analyse et le coût de cette analyse. Les résultats de cette méthode sont meilleurs qu avec l utilisation d un corpus, par contre, le traitement est plus long car, dans le cas du corpus, les traitements lourds ont lieu pendant la création du corpus (i.e. avant la phase utilisateur) alors qu avec l analyse de documents, le traitement a lieu pendant la phase utilisateur. On peut trouver une explication plus détaillée de cette méthode dans [Callan et al., 1995]. Conclusion On voit que l analyse de documents est plus performante que l autre méthode mais avec un coût plus important. De plus, cette méthode n introduit aucune sémantique, ce qui pause un certain nombre de problèmes. Par exemple, si la requête spécifiée par l utilisateur donne de nombreux documents inappropriés, la méthode introduira de mauvais concepts et mots dans les requêtes alors que l autre méthode ne les introduira pas à cause du corpus. C est pourquoi, [Xu and Croft, 1996] a récemment introduit une troisième méthode qui est un mixte des deux précédentes. Elle donne de bons résultats et améliore de plus de 20% les techniques précédentes.

35 3.2 Méthode de résolution proposée avec l utilisation de ROBDD 3.2.1 Présentation générale On suppose que le programme reçoit en entrée une liste L de requêtes déjà soumises à un moteur de recherche (par un générateur automatique, un utilisateur, un groupe d utilisateurs...). L est vu comme un ensemble de requêtes et non comme une liste : l ordre des requêtes n est pas concidéré dans cette étude. On peut donc définir L comme L = {q 1,,q n }, où chaque q i est une requête. Une requête peut être exprimée comme : +x 1 +x n x n +1 x m où chaque x i est un mot. On note X l ensemble des mots utilisés dans les requêtes. Pour une requête donnée et un mot x i donné, on peut avoir +x i ou x i qui apparaît dans celle-ci (mais pas les deux à la fois car cela serait une requête inconsistante). On note δ i le signe du mot x i, ainsi δ i {+, }, qu on notera parfois par δ i {+1, 1}. On note P(δ i.x i ) la probabilité d apparition de δ i.x i dans une requête et P(δ i.x i δ j.x j ) la probabilité d apparition de δ i.x i dans les requêtes contenant le mot δ j.x j. Enfin, il nous faut la requête que l utilisateur veut qu on traite. On la note Q 0 (on peut considérer que Q 0 L). Voici les différentes étapes de la méthode : pré-traitement : On réalise un pré-traitement des requêtes. On ne sélectionne que les requêtes qui sont en rapport avec la requête qu on veut étendre. Il y a plusieurs moyens de sélection : les requêtes qui ont un mot en commun avec la requête Q 0 ou les requêtes qui ont un mot en commun avec une requête déjà sélectionnée.... On peut supposer pour la suite que toutes les requêtes sont en relation avec la requête à étendre. De plus, dans cette phase, on peut réaliser certains calculs : on met à jour, pour tous les x i, les P(δ i.x i ) et les P(δ i.x i δ j.x j ). codage des requêtes en fonction booléenne : L ensemble L des requêtes formulées cible le même domaine, on peut donc penser qu elles appartiennent toutes au domaine qu on recherche. Notre but est de rechercher d autres pages et donc d autres requêtes appartenant à ce même sujet. On peut alors penser que l appartenance ou non à celui-ci peut être défini comme une fonction booléenne qui est la fonction caractéristique du sujet étudié. On veut arriver à exprimer cette fonction booléenne. Or pour ce faire, nos seules informations sont les requêtes déjà récupérées, il faut donc transformer ces requêtes en fonction booléenne. Il existe plusieurs moyens de coder ces requêtes, on en a étudié deux précisément (voir le paragraphe suivant), dans tous les cas, on la code sous forme de ROBDD pour pouvoir réaliser l opération d approximation dessus. approximation de la fonction booléenne La fonction booléenne f obtenue par le codage des requêtes n est pas exactement la fonction recherchée, il faut donc en réaliser une approximation (haute f + ou basse f ). Sachant que notre fonction f n est pas l exacte fonction booléenne, il faut la préciser. Pour cela, on utilise la fonction f f + (où est le ou exclusif ) qui exprime les différences entre la fonction f et son approximation haute. A partir de cette fonction, on peut tester les différences entre f et f + et ainsi savoir si ces mêmes différences appartiennent ou non à la fonction caractéristique recherchée. On peut tester f f, mais la différence entre f et f nous donne forcément des chemins qui mènent à 1 dans f, ceci nous permet donc de vérifier la bonne appartenance de ces chemins à la fonction caractéristique. En conclusion, si l on veut affiner f par expansion, on utilise f f +, si l on veut affiner f par vérification, on utilise f f. On doit choisir l une des deux fonctions que l on envoie à la suite du programme. On envoie le ROBDD obtenu après approximation et application de l opérateur. décodage de la fonction génératrice et génération des requêtes Comme on a codé les requêtes pour obtenir la fonction booléenne f, on peut décoder la fonction f f α où α {+, } pour obtenir de nouvelles requêtes. On utilise l opérateur inverse à celui qui a été étudié lors du codage. Selon

36 le choix de α, on obtiendra soit des requêtes qui exploreront un nouvel espace (α = +) ou des requêtes qui affineront les requêtes déjà existantes (α = ). évaluation et sélection de requêtes Lorsqu on décode le ROBDD, on obtient en général plusieurs requêtes différentes, il faut donc pouvoir en sélectionner une (dans le cadre de notre problème). Or pour pouvoir les sélectionner, il faut les noter. il existe plusieurs moyens d attribuer un score à une requête. On a choisit la méthode suivante. Soit Q = {+x 0 +x n x n+1 x m } une requête, soit σ une permutation de {1,, m}. On note le produit : P(Q) σ = P(δ σ(1).x σ(1) ).Π m 1 i=1 P(δ σ(i+1).x σ(i+1) δ σ(i).x σ(i) ) Ceci nous permet pour un chemin σ de calculer la probabilité de cette requête selon ce chemin. Pour calculer le score d une requête, on prend le maximum des P(Q) σ sur tous les chemins : S(Q) = max σ P(Q) σ. On renvoie à l utilisateur la requête ayant le plus haut score. 3.2.2 Deux codages de requêtes sous formes booléennes Une étape importante du processus est le codage des requêtes sous forme de fonction booléenne f L pour pouvoir réaliser une approximation. On a vu qu on avait en entrée un ensemble L = {q 1,,q n }, où chaque q i est une requête. On peut alors voir la fonction f L comme la disjonction du codage de chaque requête q i. On a alors : n f L = où f i correspond à la fonction booléenne associée à la requête q i. Le codage ne dépend donc uniquement que de la transformation de q i en f i. Deux codages différents ont été étudiés. codage simple Soit q i une requête de la forme +x 1 + x n x n+1 x m. On a X l ensemble des mots utilisés par les requêtes, à chaque x j X, on lui associe une variable booléenne x j. Pour la requête q i, on lui associe la fonction booléenne f i définie par : f i = n x j j=1 i=1 f i m j=n+1 On code ainsi le plus simplement une requête : si un mot apparaît positivement, on associe alors la variable booléenne correspondante, s il apparaît négativement, on lui associe alors la négation de cette même variable puis on réalise une conjonction sur le tout. On obtient au final une fonction booléenne f L sous forme disjonctive normale : f L = f i où f i est une conjonction. Le décodage se fait de manière inverse : on exprime la fonction sous forme disjonctive normale. On exprime alors la fonction sous forme g = g j. Enfin pour chaque g j, à chaque variable booléenne x i on associe le mot +x i et à chaque variable booléenne x i on associe le mot x i. Ainsi, un g j nous donne une requête sous forme habituelle. Ce codage est le codage le plus naturel qui soit : on code positivement lorsqu un mot est noté positivement dans la requête et négativement s il est noté avec un. Il y a une bijection entre les requêtes et les fonctions codées. En effet, pour chaque requête, il y a unicité de la fonction booléenne obtenue et de même lors du décodage. De plus, les deux opérateurs sont bien les inverses l un de l autre. On obtient bien la même requête qu au départ si on applique l opérateur de codage puis de décodage. De x j

37 même, on obtient bien la même fonction si l on applique le décodage puis le codage. Cette méthode est relativement facile d utilisation et simple à mettre en place. En contre partie de cette simplicité, le codage simple est très volumineux et gourmand en mémoire : la taille du graphe de la fonction obtenue est très élevée. On obtient rapidement des graphes de plusieurs dizaines de milliers de noeuds pour simplement quelques dizaines de requêtes. codage complet On a toujours q i sous la forme +x 1 +x n x n+1 x m. On note toujours x i la variable booléenne associée aux mots x i. Le codage complet, contrairement au codage simple, code la présence ou l absence d un mot à la requête. On note supp(q i ) le support de q i qui est l ensemble des mots apparaissant dans la requête q i, ce qui nous donne : Le codage de f i devient : supp(q i ) = {x i tel que + x i q i ou x i q i } f i = x j supp(q i ) x j x j X \supp(q i ) Pour l opérateur de décodage, il se pose un problème. Il n y a pas bijection entre les requêtes et les fonctions booléennes codées. Plusieurs requêtes peuvent donner la même fonction booléenne. Si l on prend une requête q i = +x 1 + x n x n+1 x m, n importe quelle requête de la forme q j = δ 1.x 1 δ m.x m avec δ k +, donnera la même fonction booléenne. Comment alors réaliser l opération de décodage? Il suffit de connaître le signe de δ k. En effet, lorsqu on réalise l opération de décodage, on obtient toutes les requêtes de cette forme, il suffit donc de déterminer les δ k pour avoir unicité de la requête. Il existe plusieurs méthodes, lors du décodage, pour déterminer δ k. Une méthode simple est d assigner à δ k le signe le plus fréquent pour x k, c est à dire on pose δ k = + si P(+x k ) P( x k ) et inversement. Cette méthode est relativement simple et très rapide. De plus, la majorité des mots est soit tout le temps positive soit tout le temps négative ; il existe peu de mots qui apparaissent à la fois en + et en dans les requêtes. Une autre méthode plus évoluée est de coder, pour les mots à la fois positifs et négatifs, les contextes dans lesquels ils sont positifs et ceux dans lesquels ils sont négatifs. Ensuite, il suffit de vérifier quel est le contexte qui correspond à la fonction décodée. Pour les mots strictement positifs ou négatifs, il suffit d appliquer la même méthode que précédemment. Le codage complet est volumineux si on l utilise avec très peu de requêtes et beaucoup de mots, car il code l information pour tous les mots, y compris ceux n apparaissant pas dans la requête. Par contre, dès que l on a un certain nombre de requêtes, le codage complet est nettement plus intéressant que le codage simple car le graphe obtenu est beaucoup plus petit. Bien sûr, il existe d autres moyens de coder une requête sous forme de fonction booléenne. Il faut les tester pour pouvoir les comparer à ces deux codages. Lorsqu on réalise un codage naïf, on obtient des graphes très volumineux alors que lorsqu on utilise un codage plus évolué, on obtient des graphes moins grands. Par contre, le codage évolué nécessite un travail supplémentaire dans la phase de décodage alors que dans le codage naïf, cette opération est triviale et naturelle. Il faut donc faire attention que l opération de codage permette bien une opération de décodage. 3.2.3 Requêtes générées et comparaison des deux méthodes de codage On va traiter ici un exemple formé d une liste de requêtes permettant d atteindre la page Web : WWW.ADMIN.CAM.AC.UK. Cette page est la page d accueil de l université de CAMBRIDGE. Les re- x j

38 quêtes obtenues sont des requêtes d utilisateurs qui les ont amenés à cette page (directement ou indirectement). Ce journal a été généré en février 2002. Il contient aussi le nombre de fois où la requête a été utilisée. requête utilisée nombre 1 cambridge university 65 2 whistle blowing 58 3 clare sambrook 54 4 cambridge reporter 50 5 cambridge university reporter 46 6 dr george reid cambridge 46 7 national science week 46 8 waitangi day 41 9 tender document 34 10 science week 33 11 geoffry chaucer 32 12 chroma therapeutics 30 13 accounting procedures 29 14 voice projection 27 15 university salaries 27 16 frank whittle 24 17 zadie smith photo 23 18 richard barker 23 19 mission statement 22 20 staff appraisal 22 21 clinical waste 21 22 national science week 2002 20 23 environmental issues 20 24 minute taking 20 25 national science week uk 20 26 cambridge university jobs 19 27 john redwood 18 28 cambridge instruments 18 29 transferable skills 18 30 university superannuation scheme 17 [not listed : 17683] 22,611 FIG. 3.1 Liste de requêtes menant à la page d accueil de l université de Cambridge On obtient donc au total 30 requêtes différentes que l on peut analyser. Aucune des requêtes ne contient de mot négatif, cela veut dire que la requête ne soumet que des mots qu on désire et pas de mots indésirables. On peut regarder les requêtes générées par les deux versions du programme utilisant le codage simple ou le codage complet. On observe dans la figure 3.2 l évolution de la taille du ROBDD en fonction du nombre de requêtes soumises. De même, dans la figure 3.3, on trouve les mêmes données avec le codage complet. On peut

39 45 taille ROBDD codage simple 40 35 30 taille du graphe 25 20 15 10 5 0 0 5 10 15 20 25 30 nombre de requœtes FIG. 3.2 Variation de la taille du ROBDD de la fonction en utilisant le codage simple 130 taille ROBDD codage complet 120 110 100 taille du graphe 90 80 70 60 50 40 0 5 10 15 20 25 30 nombre de requœtes FIG. 3.3 Variation de la taille du ROBDD de la fonction en utilisant le codage complet remarquer que la taille du ROBDD lors du codage complet est plus importante qu avec le codage simple. En effet, dès la première requête, la taille du ROBDD en codage complet est de 45 noeuds et elle finit à environ 120 noeuds après les 26 requêtes, alors que dans le codage simple, la taille commence à 4 noeuds et finit à 45 noeuds. La taille de début en codage complet est égale à la taille de fin du codage simple. Ceci peut faire croire à la supériorité du codage simple sur le codage complet en ce qui concerne la taille du graphe. C est faux. Si l on regarde la figure 3.4, on observe que dès que le nombre de requêtes et de mots devient important, la taille du codage simple devient exponentielle alors que la taille du codage complet est linéaire. Ceci est évident, car dès qu une nouvelle variable apparaît dans le codage simple,

40 le nombre de noeuds du graphe double, car il faut introduire cette nouvelle variable dans le ROBDD. Or dans le cas du codage complet, dès le début, toutes les variables sont codées dans la fonction, donc quand on rencontre une nouvelle variable, nous n avons pas besoin de discriminer les anciennes requêtes par rapport à cette variable. Par contre, cela implique de connaître dès le début toutes les variables présentes. Ce codage est plus difficile à mettre en place dans une lecture des requêtes à la volée. 1.2e+06 codage simple codage complet 1e+06 800000 taille du graphe 600000 400000 200000 0 0 50 100 150 200 250 nbre requetes FIG. 3.4 Taille du ROBDD et codage de la fonction booléenne avec de nombreux mots On vient de montrer que la taille du ROBDD dépend du codage et que le codage complet est plus intéressant à utiliser. Est-ce toujours le cas si l on s intéresse aux requêtes générées? On peut voir dans la figure 3.5 quelques requêtes générées à partir du codage simple. Avec ce codage, on obtient un ROBDD de 45 noeuds pour la fonction requête f L. Si l on impose une contrainte de taille de 20 noeuds pour les approximations, on obtient un graphe de 2 noeuds pour f + L et de 20 noeuds pour f L. On obtient des graphes de 45 noeuds pour f L f + L et f L f L et un graphe de 20 noeuds pour f+ L f L. On obtient de nombreuses requêtes (128) dont un certain nombre sont correctes mais peu innovantes. Comparons maintenant avec le codage complet. Avec celui-ci, la taille du ROBDD des requêtes est de 121 noeuds. Avec une contrainte de taille de 50 noeuds, on obtient 532 requêtes alors qu avec une contrainte de 100 noeuds, on obtient 157 requêtes en utilisant dans les deux cas le ROBDD de f + f. La figure 3.6 récapitule la taille des différents ROBDD et le nombre de requêtes générées en fonction de la contrainte imposée. Il faut maintenant voir quelles sont les requêtes générées. Pour cela, on choisit une contrainte de 60 noeuds ce qui permet un certain nombre de requêtes (466). La figure 3.7 montre 10 requêtes générées ayant le meilleur score et que l on soumet à l utilisateur. A partir de cette sélection, l utilisateur peut alors choisir la ou les requêtes qui l intéressent. La figure montre que l utilisateur a été intéressé par 3 des dix requêtes. Il suffit alors à l utilisateur de soumettre les requêtes à un moteur de recherche et d analyser les résultats.

41 score Nbre de requête obtenue : 128 0.214286 +cambridge 0.035714 +cambridge +geoffry 0.035714 +cambridge +tender 0.035714 +cambridge +tender +geoffry 0.035714 +cambridge +waitangi 0.035714 +cambridge +waitangi +geoffry 0.035714 +cambridge +waitangi +tender 0.035714 +cambridge +waitangi +tender +geoffry 0.035714 +cambridge +whistle 0.035714 +cambridge +whistle +geoffry 0.035714 +cambridge +whistle +tender 0.035714 +cambridge +whistle +tender +geoffry 0.035714 +cambridge +whistle +waitangi 0.035714 +cambridge +whistle +waitangi +geoffry 0.035714 +cambridge +whistle +waitangi +tender 0.035714 +cambridge +whistle +waitangi +tender +geoffry 0.008929 +cambridge +whistle +science +waitangi +tender +geoffry 0.035714 +cambridge +george 0.035714 +cambridge +george +geoffry 0.035714 +cambridge +george +waitangi +tender +geoffry 0.035714 +cambridge +whistle +george 0.035714 +cambridge +whistle +george +geoffry 0.035714 +cambridge +whistle +george +tender 0.035714 +cambridge +whistle +george +tender +geoffry 0.035714 +cambridge +whistle +george +waitangi 0.035714 +cambridge +whistle +george +waitangi +geoffry 0.035714 +cambridge +whistle +george +waitangi +tender 0.035714 +cambridge +whistle +george +waitangi +tender +geoffry 0.035714 +cambridge +george +science 0.008929 +cambridge +george +science +geoffry 0.008929 +cambridge +george +science +tender 0.008929 +cambridge +whistle +george +science +waitangi +tender +geoffry FIG. 3.5 Quelques requêtes générées à partir du codage simple et une approximation à 40 noeuds On étudiera seulement la méthode du codage complet car l autre codage a des résultats moins intéressants et moins pertinents. On cherchera à comprendre comment sont générées les nouvelles requêtes à partir des anciennes. Tout d abord, pour qu une requête soit générée, son codage doit rendre vrai la fonction f f + (ou tout autre fonction choisie : f f, f + f...). Par la suite, on ne différenciera pas la requête et la fonction booléenne obtenue par le codage de cette requête. Supposons que le programme génère une requête q. On sait que q rend vrai la fonction choisie pour générer les requêtes. On a donc q qui rend vraie la fonction f f + c est à dire que (f f + ) q = 1. Or, il y a seulement deux possibilités pour que cette fonction soit vraie : 1. q rend vraie f et donc ne rend pas vraie f +, donc elle rend f + fausse.

42 Contrainte T aille Taille Taille de Taille de Taille de Nombre de taille de f + de f f + f f f f + f requêtes générées 120 120 118 48 48 92 1 115 115 111 51 53 100 7 110 110 110 123 60 160 59 100 100 100 123 96 156 157 75 75 58 124 114 114 367 60 60 58 124 114 99 466 50 59 59 123 118 84 532 30 30 2 121 121 30 612 15 15 2 121 121 15 643 FIG. 3.6 Tableau des tailles des différents ROBDD et du nombre de requêtes générées pour le codage complet score requête sélection 0.035714 +cambridge +barker +instruments 0.035714 +cambridge +george +reid +transferable 0.035714 +university +salaries +environmental X 0.035714 +cambridge +reporter +photo X 0.035714 +cambridge +reporter +procedures 0.035714 +cambridge +taking +instruments 0.035714 +cambridge +voice +instruments X 0.035714 +cambridge +appraisal +instruments 0.035714 +cambridge +reporter +transferable 0.035714 +clinical +waste +environmental FIG. 3.7 Dix requêtes générées par le codage complet et une contrainte de 60 noeuds et la sélection de l utilisateur parmi ces dix requêtes. 2. q rend vraie f + et rend fausse f. Or, f + est une approximation de f, donc on a f f +, ce qui veut dire que f f + = f. Si l on suppose que q rend vraie f, cela veut dire que f q = 1, donc on a (f f + ) q = 1. Ceci entraîne, par distributivité, f q f + q = 1. En remplaçant f q par sa valeur (tautologie donc 1) et en simplifiant, on obtient alors f + q = 1. Or ceci est en contradiction avec (f f+ ) q = 1. Cela veut dire que q ne peut vérifier que le second cas. On a alors q qui rend vraie f + et rend fausse f. On est ainsi certain que la requête générée n a pas déjà été soumise par l utilisateur (car, dans ce cas, elle rendrait f vraie). On étudiera plus en détail la génération d une requête en particulier la requête : +cambridge +taking +instruments. Comment cette fonction a été générée? On peut voir que cette requête est l agrégation de la requête 28 (+cambridge +instruments) et la requête 24 (+minute +taking) à laquelle on a enlevé le mot +taking. Comment cela s explique-t-il? Voyons la fonction booléenne formée par ces 2 requêtes. On note f 24 (resp. f 28 ) le codage de la requête 24 (resp. 28). On trouve dans le tableau 3.8 le codage des requêtes. Sur chaque ligne, on trouve le f i correspondant à la requête. On a donc f 24 = x 0 x 1 x 2 x 3 et f 28 = x 0 x 1 x 2 x 3.

43 requête cambridge instruments minute taking x 1 x 2 x 3 x 4 f 24 +minute +taking 0 0 1 1 f 28 +cambridge +instruments 1 1 0 0 FIG. 3.8 Codage de deux requêtes La fonction booléenne est le ou de tous les f i, donc f = f 24 f 28. La figure 3.9 montre le ROBDD de f. Il contient 9 noeuds. L ordre sur les variables est x taking x minute x instruments x cambridge. cambridge instruments instruments minute minute taking taking 0 1 FIG. 3.9 ROBDD de f = f 24 f 28 On réalise une approximation de ce graphe avec une contrainte de taille de 7 noeuds. On obtient alors le ROBDD qu on trouve sur la figure 3.10 Les deux noeuds portant la variable x taking ont été redirigés vers la feuille 1. Lors de l approximation, les noeuds avec les variables les plus basses ont tendances à disparaître. Ceci explique ainsi pourquoi, lors de l agrégation des deux requêtes, un mot a disparu : il a été enlevé lors de l étape d approximation car pas assez révélant. On peut rappeler que l ordre sur les variables est défini par l heuristique HMOI qui classe les variables les plus importantes dans le haut de l ordre et les variables peu importantes dans le bas de l ordre. On trouve dans la figure 3.11, le ROBDD de f f +.

44 cambridge instruments instruments minute minute 0 1 FIG. 3.10 ROBDD de f + avec une contrainte de taille de 7 noeuds cambridge instruments instruments minute minute taking taking 0 1 FIG. 3.11 ROBDD de f + f Ce ROBDD contient 9 noeuds. Si on cherche les chemins menant à la feuille 1, on en trouve deux : x cambridge = 0 x instruments = 0 x minute = 1 x taking = 0 et x cambridge = 1 x instruments = 1 x minute = 0 x taking = 1. Ceci nous donne deux requêtes : q 1 = +minute et q 2 = +cambridge+instruments+taking. Ainsi, q 1 est la requête générée par le programme. La différenciation entre q 1 et q 1 a lieu grâce à la fonction de notation des requêtes qui donne un meilleur score à q 2 que q 1 lorsqu on a les 30 requêtes. Notons que dans le cadre où on a seulement les deux requêtes 24 et 28, les deux requêtes ont le même score (P = 0.5) La méthode a tendance à enlever les noeuds des requêtes qui ont peu d importance. Ainsi, elle a tendance à généraliser les requêtes fournies par l utilisateur en les combinant entre elles. Si on réduit

la taille de contrainte appliquée à f +, les phénomènes de généralisations et combinaisons s amplifient. Ces phénomènes sont plus visibles lorsqu on utilise plus de requêtes. Il est aisé d améliorer les requêtes générées en leurs appliquant un post-traitement. En effet, il est possible de réaliser un enrichissement des requêtes. Si l on prend la requête +cambridge +instruments +voice, on remarque que le mot voice est toujours associé au mot projection. Il paraît donc naturel de proposer plutôt la requête enrichie par ce mot : +cambridge +instruments +voice +projection. Cette opération d enrichissement est facile à mettre en place. Pour chaque requête q contenant les mots x i, on regarde s il existe des mots δ j.x j n appartenant pas à q tel qu il existe un mot δ k.x k dans q tel que P(δ k.x k δ j.x j ) = 1. On rajoute alors le mot δ j.x j à q. On peut aussi définir un enrichissement à ε près. On remplace la condition P(δ k.x k δ j.x j ) = 1 par P(δ k.x k δ j.x j ) 1 ε. Ceci nous permet d ajouter les mots qui sont souvent (à ε près) avec δ k.x k. Il est intéressant de définir l enrichissement à ε près lorsqu on utilise un ensemble important de requêtes (quelques milliers de requêtes) car il est presque impossible d avoir la condition P(δ k.x k δ j.x j ) = 1. On l assouplit en permettant un écart de ε. Dans l exemple de ce chapitre, le nombre de requêtes étant limité (30) et très précises, l algorithme n a pas pu démontrer pleinement son efficacité car l approximation a seulement permis l agrégation de requêtes. La méthode a été testée avec succès dans un cadre où l on a plusieurs milliers de requêtes soumises au programme. On s est intéressé à l expansion de requêtes, non pas dans le cadre d utilisateurs humains, mais dans le cadre d un programme de construction de corpus en langue minoritaire à partir du WEB. Ce programme génère des requêtes dans le but de trouver des documents dans une langue cible minoritaire. Il réalise un apprentissage de la méthode de génération des requêtes en fonction des documents en sa possession. Il est intéressant de voir comment améliorer les requêtes de ce programme au travers de la méthode expliquée dans ce chapitre. 45

Chapitre 4 Construction de corpus en langue minoritaire à partir du WEB 4.1 Présentation de CorpusBuilder 4.1.1 Introduction Internet est une source importante d informations diverses et variées, mais dont l organisation et la collecte n est pas simple. On étudie dans ce chapitre un créateur de corpus, une démarche pour générer de manière automatique des requêtes applicables à un moteur de recherche dans le but de créer une collection de document liés à un concept minoritaire sur le Web. Le concept étudié est la langue du document : on désire que les documents soient rédigés dans une langue cible, minoritaire sur le Web, donnée par l utilisateur. Chaque document récupéré par le programme est étiqueté grâce à un filtre comme étant pertinent ou non au concept choisi. De plus, le programme CorpusBuilder associe un apprentissage sur la génération des requêtes soumises au moteur de recherche. Cette méthode a été présentée dans [Ghani et al., 2001]. Nous présentons dans un premier temps la méthode expliquée dans cet article, puis nous verrons comment compléter cette recherche par la méthode décrite dans le chapitre 3. 4.1.2 Algorithme général La figure 4.1 explique le fonctionnement général de CorpusBuilder. Cette méthode fonctionne globalement de façon itérative. La langue concept est donnée par l utilisateur sous la forme d une ou plusieurs pages Web. De plus, l utilisateur doit donner au moins un document non adapté (donc dans une autre langue que la langue cible). Une fois que l utilisateur a donné ces documents, il n intervient plus sur le programme qui travaille de façon automatique et indépendante. A partir des documents initiaux fournis par l utilisateur, des statistiques sur ces documents sont calculées. Ces statistiques permettent de générer une requête qui est soumise au moteur de recherche. Le filtre étiquette positivement ou négativement (en fonction de l appartenance ou non au langage cible) le document renvoyé par le moteur de recherche. Le programme retourne alors à la phase de calculs des probabilités sur les documents positifs et négatifs et recommence un cycle. On peut inclure, dans ce cycle, une phase d apprentissage des constructions des requêtes. En effet, selon que le document est étiqueté positivement ou négativement par le filtre, on réalise un apprentissage des paramètres utilisés pour la création de requête. Si une requête a déjà été 46

47 Calculs statistiques Construction requête Docs initiaux WEB Appropriés Apprentissage Non appropriés Filtre FIG. 4.1 Architecture générale de CorpusBuilder générée, alors on récupère le deuxième document renvoyé par le moteur de recherche, puis le troisième et ainsi de suite. Voici l algorithme général et non détaillé de la méthode sans apprentissage : 1. Initialisation RelDocListe=le document dans la langue cible donné par l utilisateur RelFreqMots=frequence_des_mots(RelDocListe) NonRelDocListe=les document dans n appartent pas à la langue cible donnés par l utilisateur NonRelFreqMots=frequence_des_mots(NonRelDocListe) 2. Génération de requête en utilisant les mots de RelDocListe et NonRelDocListe Sélectionner k terme d inclusion en utilisant générer_mots(relfreqmots) Sélectionner k terme d exclusion en utilisant générer_mots(nonrelfreqmots) Soumettre au Web la requête +Inc_mot 1 + Inc_mot k Exc_mot 1 Exc_mot k 3. Récupération d un document Si q est une nouvelle requête, chercher l URL du premier document donnée par le moteur de recherche et récupérer la page correspondante Si q a déjà été générée, prendre la page suivante non visitée. Si tous les résultats ont été pris, alors ne rien retourner Si la requête n a aucun résultat, retourner à l étape 2 sinon soumettre le document au filtre 4. Filtre : étiqueter le document d et l assigner à RelDocListe ou NonRelDocListe 5. Recalculer RelFreqMots et NonRelFreqMots avec les nouvelles listes mises à jour 6. Retourner à l étape 2 On choisit de récupérer un seul document par cycle pour permettre à l algorithme de générer le plus de requêtes possibles et ainsi faciliter son exploration du Web.

48 4.1.3 Méthodes de générations de requêtes On a vu dans l algorithme précédent qu il y a une étape de génération des termes d inclusion et des termes d exclusion. Ceci est l étape clef de la méthode car c est elle qui génère les requêtes et détermine ainsi les documents récupérés. Pour générer ces termes en fonctions des probabilités sur les mots, il existe différentes méthodes présentées ici. On indique les méthodes correspondantes à la génération des k termes d inclusion. Pour les termes d exclusion, les méthodes sont les méthodes analogues. UN : Uniform probability On choisit k mots dans les documents étiquetés positivement avec équiprobabilité des mots. Cette méthode choisit au hasard parmi les documents appropriés. TF : Term Frequency On choisit les k mots les plus fréquents des documents positifs. PTF : Probabilistic Term Frequency On choisit k termes des documents sources avec une probabilité proportionnelle à leur fréquence. Les mots les plus fréquents ont plus de chance d être sélectionnés. ODR : Odds Ratio Choisit les k termes des documents positifs ayant le plus haut score d odds ratio. Le score odds ratio d un mot x est défini par : log 2 P(x doc positifs) (1 P(x docs négatifs)) P(x docs négatifs) (1 P(x docs négatifs)) PODR : probabilistic odds ratio On sélectionne k mots avec une probabilité proportionnelle à leurs scores odds ratio. Dans ces 5 méthodes, 2 sont déterministes et donnent ainsi toujours le même résultat si les statistiques ne sont pas modifiées. Ces deux méthodes ont donc plus de chances de générer les mêmes requêtes plusieurs fois. Il reste 3 méthodes non-déterministes ; ces méthodes introduisent une part de hasard dans la sélection des k termes. Ce hasard est soit total (UN) ou proportionnel à un score (PTF et PODR). 4.2 Résultats des différentes méthodes de génération de requêtes On a testé ces cinq méthodes avec différentes longueurs de requêtes fixées. De plus, on a utilisé la même méthode pour l inclusion et l exclusion. On a testé ces méthodes sur un document cible en slovène et des documents non appropriés en anglais, tchèque, croate et serbe. Le programme a réalisé dans tous les cas 500 cycles. On peut voir dans la figure 4.2 les résultats des différentes méthodes avec des longueurs de 1, 3, 5, 7 et 10 termes d inclusion (et le même nombre pour les termes d exclusion). On observe que dans ce tableau que toutes les méthodes n arrivent pas à générer 500 requêtes différentes. Par exemple, la méthode déterministe ODR_1 ne génère que 97 requêtes différentes. Les deux méthodes déterministes génèrent peu de requêtes différentes ( il faut une longueur de 10 pour qu ODR génère 500 requête différentes et une longueur de 7 pour que TF génère 496 requêtes). De plus, ces deux méthodes récupèrent en général peu de documents et la proportion de documents appropriés est faible. Ces méthodes ramènent donc très peu de documents positifs. Par exemple, la méthode ODR_1 ramène 403 documents (ce qui est le maximum ramené par les différentes méthodes) mais seulement 102 sont dans la langue cible. Ceci fait donc une proportion d environ 25% de documents corrects. La méthode UN génère de nombreuses requêtes différentes mais ramène une quantité moyenne de documents (appropriés ou non). Ceci vient de la probabilité uniforme sur tous les mots, il n y a aucune sélection des termes et l on explore au hasard. Enfin, les deux dernières méthodes sont équivalentes dans leurs résultats. Elles ramènent de nombreux documents (en moyenne 300 pour PTF) et, en plus, un nombre moyen de documents dans la langue cible. Les deux meilleures méthodes sont PTF_3 et PODR_3 avec 258 documents

49 Longueur de nombre de nombres de docs nombre de la requête requêtes appropriés docs total ODR 1 97 102 403 3 52 217 258 5 65 161 182 7 69 85 91 10 500 72 79 PODR 1 268 43 171 3 500 258 324 5 500 184 211 7 500 244 287 10 500 229 278 TF 1 7 12 347 3 35 82 238 5 465 16 37 7 496 6 11 10 496 5 10 PTF 1 142 14 186 3 500 258 324 5 500 102 273 7 500 161 320 10 500 149 308 UN 1 251 52 110 3 500 105 213 5 500 119 225 7 500 168 292 10 500 172 356 FIG. 4.2 Résultats obtenus pour les différentes méthodes de génération de requêtes avec différentes longueur positifs sur 324 documents récupérés par le programme. PODR récupère en moyenne 80% de documents appropriés quelque soit la longueur de la requête, il faut donc faire la distinction sur le nombre total de documents récupérés et non sur le pourcentage de documents positifs. Il est aussi à noter le bon résultat de la méthode ODR_3 qui récupère 258 documents dont 217 sont appropriés. 4.3 Apprentissage de la génération de requête Dans la section précédente, les méthodes de génération de requête ont des résultats différents selon la longueur de la requête. Il est intéressant d introduire un apprentissage des méthodes et longueurs de requêtes à utiliser. Cet apprentissage se réalise sur la combinaison des méthodes et la modification des différentes longueurs pour les termes d inclusion et pour les termes d exclusion. Voici les quatre méthodes différentes qui ont été utilisées.

50 4.3.1 ML : Memory-Less Learning Cette méthode est la plus simple des quatre. Tant qu une méthode donne de bons résultats, on continue à l utiliser. Dès qu elle renvoie aucun résultat ou un document non pertinent, alors on change de méthode. Voici l algorithme : Algorithme 5 Algorithme de la méthode ML Initialiser D(m) avec une distribution uniforme sur les méthodes m i tant que (1) faire Choisir une méthode m i de génération de requête en fonction de D(m) Générer une requête avec la méthode m i et récupérer un document d Mettre à jour les scores D(m) : Si d est dans la langue cible : D(m i ) = 1 et D(m j ) = 0 pour j i Sinon D(m i ) = 0 et D(m j ) = 1 M 1 pour i j ( M est le nombre de méthode différente utilisée pour la génération de requêtes) Normaliser les scores pour donner une distribution de probabilité sur les méthodes et la stocker dans D(m). fin tant que 4.3.2 FM : Fading Memory Learning Cette méthode se base sur les performances passées des différentes méthodes de génération, mais progressivement elle réduit l impact de l apprentissage des événements du passé. Voici l algorithme : Algorithme 6 Algorithme de la méthode FM Initialiser le score S(m i ) de chaque méthode à 1. Normaliser les score S(m) pour obtenir une distribution D(m) de probabilité sur les méthodes. tant que (1) faire Choisir une méthode m i de génération de requête en fonction de D(m) Générer une requête avec la méthode m i et récupérer un document d Mettre à jour les scores D(m) : Diminuer les scores : D(m) = D(m) α (on a choisit ici α = 0.9. Si d est dans la langue cible : S(m i ) = S(m i ) + 1 Sinon S(m j ) = S(m j ) + 1 M 1 pour i j Normaliser les scores pour donner une distribution de probabilité sur les méthodes et la stocker dans D(m). fin tant que 1 Il est à noter qu on augmente les scores des méthodes non utilisées de M 1 si l on se trouve dans un cas d échec. On ne diminue pas le score de la méthode utilisée mais on augmente les autres. 4.3.3 LTA : Long-Term Learning Additive Cette méthode estime les probabilités des méthodes selon tous les événements de l historique. Les deux méthodes LTM et LTA sont identiques à part pour la mise à jour des scores des méthodes. On trouve ici l algorithme de LTA.

51 Algorithme 7 Algorithme de la méthode LTA Initialiser les score Pos(m i ) et Neg(m i ) à 1 pour chaque méthode. Pos(m i ) indique le nombre de documents positifs récupérés par la méthode m i, de même pour Neg(m i ) Pos(m i ) Pos(m i )+Neg(m i ) Calculer S(m i ) = Normaliser les scores pour donner une distribution de probabilité sur les méthodes et la stocker dans D(m). tant que (1) faire Choisir une méthode m i de génération de requête en fonction de D(m) Générer une requête avec la méthode m i et récupérer un document d Mettre à jour les scores D(m) : Si d est dans la langue cible : Pos(m i ) = Pos(m i ) + 1 Sinon Neg(m i ) = Neg(m i ) + 1 Pos(m i ) Pos(m i )+Neg(m i ) Recalculer les scores : S(m i ) = Normaliser les scores pour donner une distribution de probabilité sur les méthodes et la stocker dans D(m). fin tant que 4.3.4 LTM : Long-Term learning Multiplicative La méthode LTM utilise le même algorithme que la méthode LTA, sauf pour la mise à jour des Pos(m i ) et Neg(m i ). Dans le cas additif, on réalise une addition, alors qu ici on réalise une multiplication par β ou une division, selon le document d. On prend β = 2. 4.4 Résultats de l apprentissage Une fois ces méthodes implémentées, on a réalisé une expérimentation toujours dans le même cadre que pour l étude des méthodes de génération de requêtes. Le document cible est toujours en slovène et on réalise 500 cycles. Les méthodes d apprentissages ont été utilisées pour apprendre la longueur des termes d inclusion, la longueur des termes d exclusion, la méthode de génération des termes d inclusion et la méthode de génération des termes d exclusion. On a utilisé la même méthode pour apprendre les différents paramètres. nb de requêtes différentes nb docs appropriés nb docs total ML 499 175 318 FM 499 146 293 LTA 500 165 315 LTM 500 177 325 PTF_3 500 258 324 FIG. 4.3 Résultats globaux des méthodes d apprentissages Dans la figure 4.3, il est présenté les résultats globaux des méthodes d apprentissages. Les quatre méthodes génèrent toutes à peu près 500 requêtes différentes. La méthode ayant les meilleurs résultats est la méthode ML avec un pourcentage de 55% de documents corrects sur les 318 documents récupérés.

52 Longueur 1 2 3 4 5 6 7 8 9 10 des requêtes ML 38 45 34 23 31 42 35 37 35 180 FM 38 56 66 54 48 50 55 41 41 51 LTA 47 40 57 47 48 64 56 48 42 51 LTM 58 52 41 48 52 53 55 49 51 41 FIG. 4.4 Apprentissage des longueurs des termes d inclusion Méthode de sélection ODR PODR PTF TF UN des termes ML 92 143 92 72 101 FM 104 133 91 96 76 LTA 141 117 103 55 84 LTM 57 290 42 40 71 FIG. 4.5 Apprentissage des méthodes de génération des termes d inclusion Les méthodes LTM et LTA sont très proches en résultat et la méthode LTA a un meilleur pourcentage de documents corrects par rapport à la méthode LTM. Par contre, en nombre total de documents, elle est inférieure à LTM. L apprentissage ne réalise pas aussi bien que la meilleure méthode (PTF_3) qui a été trouvée à la main. Les figures 4.4 et 4.5 récapitulent les différents paramètres des méthodes d apprentissage pour la génération des termes d inclusion. les figures 4.6 et 4.7 sont les figures correspondantes pour les termes d exclusion. En ce qui concerne les longueurs des requêtes, mis à part ML qui semble privilégier les requêtes de longueur 10, nous pouvons dire, pour toutes les méthodes, qu elles utilisent les différentes longueurs indifféremment. Pour les méthodes de génération des termes d inclusion, les méthodes ML, FM et LTM semblent privilégier la sélection par PODR, avec par exemple 290 appels pour LTM sur 500. LTA ne privilégie aucune méthode. Pour les termes d exclusion, les méthodes réalisent les mêmes choix sauf LTM qui utilise PODR 39 fois et UN 138 fois. Les différentes méthodes d apprentissages ont des résultats moyens par rapport aux meilleures méthodes de génération (PTF_3 et PODR_3). De plus, elles sont toutes à peu près équivalentes dans les paramètres qu elles apprennent. La figure 4.8 montre l évolution du nombre de documents corrects par rapport aux nombre de documents rapatriés. Or, pour toutes les méthodes, on voit que le rapport entre les deux nombres est constant Longueur 1 2 3 4 5 6 7 8 9 10 des requêtes ML 56 53 51 54 54 39 48 54 50 41 FM 53 52 39 55 50 42 51 53 49 56 LTA 35 44 62 52 52 51 45 41 64 54 LTM 50 59 55 40 49 52 51 56 42 46 FIG. 4.6 Apprentissage des longueurs des termes d exclusion

53 Méthode de sélection ODR PODR PTF TF UN des termes ML 101 89 111 105 94 FM 84 93 123 105 95 LTA 101 97 101 102 99 LTM 109 39 103 111 138 FIG. 4.7 Apprentissage des méthodes de génération des termes d exclusion 700 600 ML FM LTM LTA Nombre de documents pertinents 500 400 300 200 100 0 0 100 200 300 400 500 600 700 800 900 Nombre de documents recuperes FIG. 4.8 Nombre de documents pertinents par rapport au nombre de document récupérés par les différentes méthodes pour toutes les méthodes puisque l on obtient quatre droites distinctes. Les méthodes diffèrent donc dans le pourcentage de documents corrects récupérés. Les deux méthodes LTM et LTA ont un taux de près de 75% de documents corrects. La méthode ML a le même taux mais la courbe s arrête plus tôt car cette méthode ramène moins de documents comparée aux autres. Cette figure nous montre que l on peut donc améliorer nettement les méthodes d apprentissages. Pour cela, il faut améliorer le nombre total de documents qu elles ramènent, donc diminuer le nombre de requêtes ne donnant aucun document en retour. Il faut aussi améliorer le taux de documents pertinents sur le nombre de documents récupérés. Dans ce but, on va essayer d appliquer la méthode décrite dans le chapitre précédent.

54 4.5 Application de la méthode 4.5.1 Problème rencontré La méthode ne peut être appliquée telle qu elle sur le fichier de requêtes générées par CorpusBuilder. On a pris comme exemple, une recherche de documents en français et on a laissé 2000 cycles au programme. Si l on essaye d appliquer la méthode au fichier des requêtes, on voit apparaître un problème. 1e+06 LTA 900000 800000 700000 Taille du ROBDD 600000 500000 400000 300000 200000 100000 0 0 100 200 300 400 500 600 700 800 900 1000 Nombre de requetes FIG. 4.9 Taille du ROBDD des requêtes pour LTA (avec 2000 requêtes) En effet, la figure 4.9 montre la taille du ROBDD créé à partir des 1000 premières requêtes générées avec cette méthode. Cette taille évolue de façon linéaire par rapport au nombre de requêtes. Ceci est important car on sait que le graphe ne va pas grandir trop vite (comme avec le codage simple). Mais, le graphe obtenu avec seulement les 1000 premières requêtes est d à peu près un million de noeuds. Or, l algorithme d approximation a une complexité en O(n 2 ). Il est donc peu envisageable de l appliquer. Pour contrer ce problème, on opte pour un filtrage des requêtes afin de diminuer considérablement la taille du ROBDD. Pour cela, on a réalisé une étude du vocabulaire. 4.5.2 Evaluation du vocabulaire généré Le vocabulaire est important pour nos requêtes. Il est donc intéressant de l étudier, car il caractérise nos requêtes. En effet, trouve-t-on toujours les mêmes mots dans les requêtes ou est-ce que les mots uti-

55 lisés dans celles-ci sont distribuées de façon équiprobable? Pour commencer, on a étudié le vocabulaire contenu dans les requêtes générées par les méthodes. On a étudié les méthodes LTA (LTM différenciant peu de cette méthode) et FM. On a réalisé 2000 requêtes dans le but de trouver des documents en français. On peut voir dans la figure 4.10 l évolution de la richesse du vocabulaire au fil de la génération des 2000 requêtes. 3000 2500 ML FM LTM LTA 2000 Taille du vocabulaire 1500 1000 500 0 0 500 1000 1500 2000 2500 Nombre de requetes FIG. 4.10 Evolution de la richesse du vocabulaire des différentes méthodes On remarque que toutes les requêtes ont à peu près le même nombre de mots dans le vocabulaire utilisé. Selon la méthode, la taille du vocabulaire oscille entre 2200 et 2500 mots, ce qui fait en moyenne un nouveau mot par requête. Il n existe donc pas une énorme différence entre le nombre de mots différents utilisés par les 4 méthodes d apprentissages. On peut alors se demander comment se répartisse ces 2000 mots. En effet, il est intéressant de voir la fréquence de chaque mot et comment il se répartit entre les inclusions (notée +) et les exclusions ( notée ) dans les requêtes. Pour cela, on a compté le nombre de fois où un mot était utilisé positivement dans une requête et combien de fois il a été utilisé négativement. Dans la figure 4.11, on peut trouver les résultats pour la méthode LTA. De même, dans la figure 4.12, on trouve les résultats de la méthode ML. Dans les deux cas, 90% des mots sont utilisés, au maximum, dans une dizaine de requêtes différentes. Une grande majorité des mots est donc sous-employée et servent très peu. On peut remarquer aussi que presque tous les mots servent à la fois comme termes d inclusion et comme termes d exclusion. Lorsqu un mot est plus utilisé en tant que termes positifs, il est quand même utilisé comme terme d exclusion. De même pour les termes utilisés majoritairement négativement, ils se retrouvent quand même, de temps en temps, utilisés de façon positive. On peut ainsi découper les mots du vocabulaire en trois catégories distinctes : Les termes majoritairement positifs : Ils ont une fréquence, assez élevée, d apparition dans les requêtes. Ils sont utilisés en majorité en tant que termes d inclusions mais peuvent parfois être des

56 600 utilisation positive utilisation negative 400 200 frequence 0-200 -400-600 -800 0 500 1000 1500 2000 2500 FIG. 4.11 Fréquence des différents mots du vocabulaire pour la méthode LTA termes d exclusions. On les retrouve à gauche des deux graphiques. Les termes majoritairement négatifs : Tout comme les termes majoritairement positifs, ils ont une fréquence, assez élevée, d apparition dans les requêtes. Ils sont utilisés en majorité en tant que termes d exclusions mais peuvent parfois être des termes d inclusions. On les retrouve, dans les deux figures, à l opposé des termes majoritairement positifs : sur la droite. Les termes peu utilisés : On les retrouve, dans les graphiques, entre les termes positifs et négatifs. Ils sont très peu utilisés, par rapport aux deux catégories précédentes, dans les requêtes. Ils sont utilisés à la fois comme termes positifs et négatifs, avec en général, une prédisposition à l une des deux catégories (positif ou négatif). Ces trois catégories permettent de classés les mots selon leur fréquence, mais il existe des mots qui ne peuvent être classé dans ces catégories. On remarque qu un tel mot dans la figure 4.12 : le mot accept est apparu 555 fois dans des requêtes en tant que terme d inclusion et 403 en tant que terme d exclusion. Il ne peut ni être classé comme terme positif ni comme terme négatif. De plus, il est trop fréquent (plus de 900 fois sur 2000 requêtes) pour être classé comme terme peu utilisé. Cette catégorisation des mots est-elle suffisante pour pouvoir réaliser un filtrage des requêtes? Malheureusement non, car il y a encore des difficultés : les mots majoritairement positifs ou négatifs ont déjà été beaucoup utilisés, il n est pas intéressant de faire des filtres sur ces mots car ils ont déjà été fortement employés. Par contre les mots sous-employés de la catégorie des termes peu utilisés peuvent être intéressant pour réaliser un filtre. Mais quels mots employer dans cette catégorie? 90% des mots appartiennent à cette classe, il faut donc faire un choix. Certains mots peuvent ne pas être employés car inadaptés ou le mot peut ne pas avoir pu être pleinement employé.... On ne peut faire la différence entre les mots adaptés et les mots non-adaptés au concept. Il faut donc trouver une autre méthode de sélection de mots.

57 800 utilisation positive utilisation negative 600 400 frequence 200 0-200 -400-600 0 500 1000 1500 2000 2500 3000 FIG. 4.12 Fréquence des différents mots du vocabulaire pour la méthode ML 4.5.3 Evaluation du vocabulaire des documents pertinents et résultats Pour cela, on a étudié non pas le vocabulaire des requêtes mais le vocabulaire des documents appartenant au concept. En effet, lorsque le programme tourne, il récupère des documents qui appartiennent au concept cible. On peut alors étudier le vocabulaire de ces documents pour pouvoir le comparer à celui des requêtes. On a opté pour une méthode d étude basique et naïve. Pour chaque mot, on compte le nombre de citation de ce mot dans les documents appropriés et le nombre de document dans lequel il est cité. Ces deux nombres peuvent être fortement différent. En effet, un mot peu apparaître dans 3 documents, mais s il est cité 1000 fois dans chaque document, alors son nombre de citation est de 3000. Il est donc intéressant de voir la répartition des occurrences d un mot dans les documents appropriés en fonction du nombre de document dans lequel il apparaît. On peut trouver le résultat de cette étude pour la méthode LTA dans la figure 4.13 et pour la méthode ML dans la figure 4.14 On retrouve dans les deux figures des distributions similaires. Pour les quatre méthodes on retrouve la même distribution. Cette distribution de points est caractéristique d une distribution de Zipf que l on retrouve sur le graphique 4.15. La distribution de Zipf épouse parfaitement la distribution du vocabulaire obtenu par la méthode ML à part quelques points. Zipf est une fonction de la forme Z(x) = a x b. La distribution associée à ML a été trouvée par régression linéaire. Elle est : 367 Z(x) = 560 x 0.0960921 L intérêt de cette régression est qu elle nous permet de définir une distance sur les mots. La distance d un mot est la distance entre ce mot et la courbe définie par Z(x). Dans le cadre des deux méthodes, on peut voir qu un certain nombre de points (ou mots) sont éloignés de la distribution de Zipf. Il est intéressant

58 700 LTA 600 nombre de documents oø le mot appara t 500 400 300 200 100 0 1 4 16 64 256 1024 4096 16384 65536 262144 nombre d occurences du mots FIG. 4.13 Répartition du vocabulaire du concept pour la méthode LTA d étudier ces mots. On trouve dans la figure 4.16, les mots trouvés pour la méthodes LTA et dans la figure 4.17, les mots correspondant pour la méthode ML. Les mots connection, ok, server, aug, gmt, content et http qui se trouvent en haut et au milieu du graphique pour LTA, se trouvent au même endroit dans le graphique de ML. Si l on s intéresse aux mots qui se trouvent proche d eux et en dessous, on remarque qu ils ne font pas partis de la distribution de Zipf. Il est intéressant d extraire à nouveau ces mots. On obtient dans les deux cas les mots : unix, ranges, apache, modified, last, accept, thu, keep, alive.... On voit ainsi apparaître le fameux accept que l on avait noté dans la figure 4.12. Tous ces mots sont de mots anglais qui font partis du codage HTML. Ils ne sont donc pas intéressant pour nous et nous devons les considérer comme neutre. On peut alors les inclure dans un anti-dico qui permettra d éviter de les considérer dans la génération de requête. Grâce à notre distribution de Zipf, nous avons pu remarquer des mots non-pertinents et ainsi les ignorer pour les requêtes à venir. Ceci nous permet de croire en l utilité de cette étude des occurrences des mots. Voyons maintenant ce que cela donne pour les mots proches de la distribution de Zipf. Trouverons nous des mots intéressants pour nos requêtes et sur lesquels nous pourrons réaliser un filtrage des requêtes? Pour traiter ces mots, on s est intéressé aux mots ayant plus de 4100 occurrences dans plus de 350 documents pour les deux méthodes. On trouve une liste de mots similaire dans les deux cas. On trouve dans la figure 4.18 une liste de ces mots pour la méthode LTA. Il n y pas besoin d étudier la méthode ML car les mots de cette listes sont en majorité identiques. Cette liste ne contient que des mots français, donc appartenant au concept cible. De plus, on sait que ces mots apparaissent souvent et dans de nombreux documents appropriés, il est donc intéressant de faire un filtre sur les requêtes contenant ces mots. Il est judicieux de sélectionner les mots proches de la courbe représentant la distribution de Zipf associée aux documents. Ceci nous permet de sélectionner des mots appropriés au langage et de réaliser un filtre à partir de ces mots. Si l on prend tous les mots

59 600 ML 500 nombre de documents oø le mot appara t 400 300 200 100 0 1 4 16 64 256 1024 4096 16384 65536 262144 nombre d occurences du mots FIG. 4.14 Répartition du vocabulaire du concept pour la méthode ML de la figure 4.18 et que l on recherche les requêtes utilisant un ou plusieurs de ces mots dans la méthode LTA, on obtient alors près de 400 requêtes différentes, ce qui permet de diviser par 5 le nombre de requêtes utilisées pour la construction du ROBDD. Cela veut dire qu une trentaine de mots se retrouve dans 25% des requêtes, ce qui est relativement important si l on considère que la taille du vocabulaire est d environ 2200 mots.si l on construit le ROBDD associé à ces requêtes, on obtient un graphe de 125000 noeuds. Pour réaliser une approximation dessus, cela prend encore un certain temps car la complexité de l algorithme d approximation est en O(n 2 ). Pour mieux comprendre ce qui se passe et pour simplifier, on a sélectionné les requêtes ne contenant que le mot sur. On obtient alors un ROBDD de 3726 noeuds au lieu des 125000 noeuds précédent, ceci permet une génération de requête plus rapide. Le programme génère 1455 requêtes dont près de 300 qui ont un score non nul si l on réalise une approximation du graphe avec 3000 noeuds. La figure 4.19 récapitule les requêtes ayant les meilleurs scores. Les requêtes ayant les meilleurs scores sont en général plus courtes que les requêtes ayant un score plus faible car la probabilité d avoir deux mots est en général inférieure à la probabilité d avoir un mot. Pour modifier ce déséquilibre et favoriser les requêtes longues, on a rajouter un second score qui est le score normal de la requête multiplié par sa longueur : score(q) q. On retrouve ce nouveau score dans la seconde colonne de la figure 4.19. On utilise ce nouveau score pour classer les requêtes. Cette nouvelle méthode de notation favorise les requêtes plus spécifiques car plus longues, alors que l ancienne méthode favorisait les requêtes plus générales car plus courtes. Les dix requêtes ayant les plus haut scores sont donc : 1. +surmonter 2. +surmonter +relatifs +voulu +dramatiques +lentilles +expresse +show +évaluation +collectives 3. +surmonter +relatifs +voulu +dramatiques +lentilles +expresse +show +évaluation

60 700 600 ML Distribution de Zipf nombre de documents oø le mot appara t 500 400 300 200 100 0-100 64 256 1024 4096 16384 65536 262144 nombre d occurences du mots FIG. 4.15 Distribution de Zipf et répartition du vocabulaire de la méthode ML nombre d occurrence nombre de du mot document mot 687 652 connection 710 689 ok 737 693 text 760 689 server 817 688 aug 1024 693 html 1185 693 type 1216 689 gmt 1376 693 content 1439 689 date 1568 693 http FIG. 4.16 Exemples de mots éloignés de la distribution de Zipf pour LTA 4. +surmonter +relatifs +voulu +dramatiques +lentilles +expresse +show 5. +surmonter +relatifs +voulu +dramatiques +lentilles +expresse 6. +surmonter +relatifs +voulu +dramatiques +lentilles 7. +surmonter +saint +pst +accessoire +appelle +animée +compréhensible +paroles +mariages 8. +surmonter +saint +pst +accessoire +appelle +animée +compréhensible +mariages 9. +surmonter +relatifs +voulu +dramatiques

61 nombre d occurrence nombre de du mot document mot 568 529 connection 637 572 ok 642 577 server 684 578 aug 886 579 html 1037 577 gmt 1132 580 content 1456 580 http FIG. 4.17 Mots éloignés de la distribution de Zipf pour ML (occurrences de 550 à 2048 dans plus de 500 documents) 10. +surmonter +saint +pst +accessoire +appelle +animée +mariages On peut voir que ces dix requêtes peuvent être classées dans trois catégories différentes. +surmonter La première catégorie ne contient qu une requête : la requête +surmonter. Cette requête est unique car elle ne contient qu un mot et est très générale. On peut interdire d envoyer des requêtes ne contenant qu un terme d inclusion mais cela n est pas forcément utile. En effet, si l on envoie cette requête au moteur de recherche Altavista, le moteur trouve 33757 pages ou sites relatifs à ce mot. Ceci explique pourquoi on préfère envoyer des requêtes contenant plusieurs mots. L avantage est que l on ne risque pas d épuiser cette requête avec ses 33757 résultats. Si l on regarde les dix premiers résultats de cette requête, neuf pages sont en français sur dix. La page http ://www.beetfoundation.com/words/s/surmonter.html étant l unique page qui n est pas en français. Ceci nous fait un taux de 90% de réussite et nous avons donc trouver 9 documents nouveaux dans la langue cible. Les requêtes contenant +surmonter +relatifs +voulu +dramatiques Cette catégorie est formée de six requêtes : les requêtes 2 à 6 et la requête 9. On peut choisir de tester toutes les requêtes. Ici, nous allons juste étudier les résultats de la requête 2 ayant le plus haut score et étant la plus spécifique ainsi que la requête 9 ayant le plus bas score et étant la plus générale. On peut remarquer que la requête 9 est la requête de cette catégorie ayant le plus haut score avant multiplication par la longueur de la requête et que la requête 2 est celle ayant le plus haut score après multiplication. La requête 2 nous donne aucun résultat si elle est soumise au moteur de recherche. La première requête qui nous donne un résultat est la requête 9. Toutes les autres requêtes ne nous donnent aucun résultat à cause du mot lentille qui est un mot trop précis. Lorsqu on soumet la requête 9 au moteur de recherche, celui ci nous renvoie 34 pages. Si l on étudie les dix premières réponses, on obtient dix documents français, cela veut dire que cette requête a un taux de réussite de 100% sur les dix premiers résultats. Ceci est très intéressant et laisse supposer qu une très grande partie des 34 documents répondant à cette requête doivent être dans la langue cible. On voit donc que la requête 9 est la requête la plus intéressante des six requêtes de cette catégorie. Pourtant, elle est la requête ayant le plus faible score... Les requêtes contentant +surmonter +saint +pst +accessoire +appelle +animée +mariages Cette catégorie contient les trois requêtes restantes. Elle contient les requêtes 7, 8 et 10. Ces requêtes sont aussi classées par ordre de spécificité : la requête 7 étant la plus spécifique et la 10 étant la plus

62 nombre d occurrence nombre de du mot document mot 5219 384 son 5569 360 cette 6089 434 avec 6767 362 nous 6834 404 se 7002 418 vous 7216 393 sont 8068 460 plus 8235 409 aux 10972 455 pas 11925 459 ce 13626 555 sur 15848 422 il 17202 480 qui 17514 483 par 17614 573 pour 18798 520 dans 21073 488 que 21685 543 une 23409 515 est 24700 547 un 29833 588 en 30181 587 du 43130 596 des 45518 626 les 49583 629 et 51172 618 le 122468 662 de FIG. 4.18 Mots fréquents et proche de la distribution de Zipf pour LTA (plus de 4100 occurrences dans plus de 350 documents) générale. Aucune des trois requêtes ne donne de résultat. On peut classer les requêtes générées en deux ensembles. Les requêtes qui renvoient des résultats et les requêtes sans résultat. Lorsqu on étudie plus en détails les requêtes donnant des résultats, on voit que plus de 95% des résultats correspondent à la langue cible. Ceci améliore grandement la méthode traditionnelle d apprentissage qui avait un rapport d environ 75%. Pour améliorer les résultats, il suffit d améliorer le nombre de requêtes donnant des résultats par rapport au nombre de requête ne donnant pas de résultats. De plus, le nombre de documents, pour les requêtes correctes, est relativement important par rapport aux requêtes de la méthode LTA. Ceci permet d appliquer plusieurs fois cette requête et donc de récupérer plus de documents avec une même requête. Tous les mots utilisés ici, proviennent d un unique cluster par rapport à la distribution de Zipf, il peut être intéressant d étudier d autres clusters de mots.un

63 score(q) score(q) q requête q 0.285714 0.285714 +surmonter 0.085714 0.085714 -derri 0.085714 0.085714 -military 0.057143 0.057143 +etat 0.028571 0.057142 +surmonter +relatifs 0.028571 0.085713 +surmonter +relatifs +voulu 0.028571 0.114284 +surmonter +relatifs +voulu +dramatiques 0.028571 0.148255 +surmonter +relatifs +voulu +dramatiques +lentilles 0.028571 0.171426 +surmonter +relatifs +voulu +dramatiques +lentilles +expresse 0.028571 0.199997 +surmonter +relatifs +voulu +dramatiques +lentilles +expresse +show +surmonter +relatifs +voulu +dramatiques +lentilles +expresse 0.028571 0.228568 +show +évaluation +surmonter +relatifs +voulu +dramatiques +lentilles +expresse 0.028571 0.257139 +show +évaluation +collectives 0.028571 0.057142 +surmonter +saint 0.028571 0.028571 -syndrome 0.028571 0.028571 -thornier +surmonter +saint +pst +accessoire +appelle +animée +compréhensible 0.014286 0.114288 +mariages +surmonter +saint +pst +accessoire +appelle +animée +compréhensible 0.014286 0.128574 +paroles +mariages 0.014286 0.100002 +surmonter +saint +pst +accessoire +appelle +animée +mariages 0.014286 0.085716 +surmonter +saint +pst +accessoire +appelle +mariages 0.014286 0.071430 +surmonter +saint +pst +accessoire +mariages 0.014286 0.057144 +surmonter +saint +pst +mariages 0.014286 0.042858 +surmonter +saint +relatifs 0.014286 0.057144 +surmonter +saint +relatifs +mariages FIG. 4.19 Requêtes générées après filtrage sur le mot sur exemple de cluster de mots à étudier sont les mots proches de la fonction de Zipf dans la zone des mots ayant entre 1024 et 4096 occurrences. Ces mots nous permettent ainsi de générer d autres requêtes. La méthode de génération de requête que l on a appliquée à CorpusBuilder, nous a permis d améliorer la génération de requête grâce à une étude des occurrences des différents mots des documents appropriés. Ceci nous permet de superviser les différentes méthodes d apprentissage. On peut utiliser ce procédé toutes les 1000 requêtes générées. La génération permet d explorer un espace non encore étudié par la méthode et elle facilite la diversité des requêtes.

Conclusion La méthode qui a été développée dans le cadre de ce rapport se trouve validée par les résultats qu elle a eu avec le programme CorpusBuilder. On a réussi a développer une méthode simple et rapide de génération de requêtes à partir de l historique des requêtes déjà utilisées. Cette méthode utilise un outil puissant et simple : les fonctions booléennes. Ces fonctions permettent une manipulation aisée et simple des requêtes. De plus, l algorithme d approximation des ROBDD est très pratique avec l opérateur ou exclusif pour pouvoir explorer l espace autour de la fonction étudiée. En effet, la combinaison des deux permet, avec une fonction booléenne donnée, d explorer l espace autour de cette fonction de manière très simple. De plus, on peut choisir d utiliser une exploration vers introvertie (utilisation de f f), extravertie (f f + ) ou les deux (f + f ). Cette méthode d exploration a pu être appliquée avec succès à la génération de requêtes. Le programme ainsi obtenu a pu être testé avec de bons résultats sur les requêtes menant à la page http ://www.admin.cam.ac.uk. De plus, on a pu tester l amélioration qu apporte cette exploration à la méthode utilisée par CorpusBuilder. Pour pouvoir l appliquer de manière aisée, il a fallu réaliser une étude du vocabulaire générée par les requêtes de ce programme et par les documents pertinents récupérés. Après cette étude, nous avons pu appliquer avec succès la méthode. Les résultats sont très encourageant. En effet, les requêtes générées donnent des résultats de l ordre de plus de 90% de bons documents récupérés, alors que CorpusBuilder a des moyennes d environ 75%. On voit donc une nette amélioration du pourcentage de documents pertinents. Par contre, nous n avons pas réussi a améliorer le pourcentage de requêtes donnant des résultats. On se retrouve au même niveau qu avec CorpusBuilder. Il faut donc améliorer ce point. Dans ce but, il serait intéressant d introduire une notion de sémantique dans la méthode. En effet, les fonctions booléennes sont un objet purement théorique, elles ne tiennent pas compte de la sémantique des termes de la requête. Ce fait explique que nos requêtes ne donnent pas forcément un résultat. Un moyen d arriver à introduire cette notion serait de modifier la fonction de notation des requêtes générées. En effet, la fonction utilisée dans les expérimentations est une fonction probabiliste naïve, il est possible de la modifier. On peut introduire des modèles de Markov pour améliorer cette fonction. Ceci nous permettrait d améliorer la notation des requêtes et ainsi faciliter encore plus le choix de l utilisateur. De plus, lors de l utilisation avec CorpusBuilder, on peut introduire les Support Vector Machine (SVM) pour pouvoir extraire automatiquement et avec de meilleurs résultats les mots proches de la distribution de Zipf associée à la méthode. Ceci permettrait une plus grande richesse des requêtes générées par la méthode et ainsi augmenterait le nombre de requêtes donnant des résultats. 64

Bibliographie [Bryant, 1992] Bryant, R. E. (1992). Symbolic Boolean manipulation with ordered binary-decision diagrams. ACM Computing Surveys, 24(3) :293 318. [Buckley et al., ] Buckley, C., Singhal, A., Mitra, M., and Salton, G. New retrieval approaches using smart : Trec. [Callan et al., 1995] Callan, J. P., Croft, W. B., and Broglio, J. (1995). TREC and tipster experiments with inquery. Information Processing and Management, 31(3) :327 343. [Cui et al., 2002] Cui, H., Wen, J.-R., Nie, J.-Y., and Ma, W.-Y. (2002). Probabilistic query expansion using query logs. In International World Wide Web Conference, Honolulu, Hawaii. [Flake et al., 2002] Flake, G., Glover, E., Lawrence, S., and Giles, C. L. (2002). Extracting query modifications from nonlinear svms. In International World Wide Web Conference, Honolulu, Hawaii. [Ghani et al., 2001] Ghani, R., Jones, R., and Mladeni c, D. (2001). Building minority language corpora by learning to generate web search queries. [Kunjan et al., 1997] Kunjan, T., Hinsberger, U., and Kolla, R. (1997). Approximative representation of boolean functions by size controllable robdd s. [Mitra et al., 1998] Mitra, M., Singhal, A., and Buckley, C. (1998). Improving automatic query expansion. In Research and Development in Information Retrieval, pages 206 214. [Nikolskaia and Rauzy, 1998] Nikolskaia, M. and Rauzy, A. (1998). sum-of-products formulae. Heuristics for bdd handling of [Nikolskaïa, 2000] Nikolskaïa, M. (2000). Binary decision diagrams and applications to reliability analysis. [Sparck, 1971] Sparck, J. (1971). Automatic keyword classification for information retrieval. [Xu and Croft, 1996] Xu, J. and Croft, W. B. (1996). Query expansion using local and global document analysis. In Research and Development in Information Retrieval, pages 4 11. [Zien et al., 2000] Zien, J., Meyer, J., Tomlin, J., and Liu, J. (2000). Web query chararcteristics and their implications on search engines. i

Liste des Figures 1.1 BDD de f(a,b,c) = (a ((b c) (b c))) ( a ((b c) b)) sous forme d arbre 11 1.2 BDD de f = (a ((b c) (b c)) ) ( a ((b c) b)) avec uniquement 2 feuilles 12 1.3 arbre binaire ordonné de f(a,b,c) = (a ((b c) (b c))) ( a ((b c) b)) 13 1.4 OBDD de f(a,b,c) = (a ((b c) (b c))) ( a ((b c) b))........ 13 1.5 OBDD de f simplifié.................................... 14 1.6 ROBDD de f = (a ((b c) (b c))) ( a ((b c) b))........... 14 1.7 ROBDD de f : G = 40.................................. 19 1.8 ROBDD de f avec un autre ordre : G = 23........................ 20 1.9 Nombres d ordres en fonction de la taille du ROBDD................... 24 1.10 Gain de la taille des graphes pour différentes heuristiques dans un cas particulier..... 25 2.1 ROBDD de la fonction g (12 noeuds)........................... 31 2.2 ROBDD de la fonction g + (11 noeuds)........................... 32 2.3 ROBDD de la fonction g (11 noeuds)........................... 32 3.1 Liste de requêtes menant à la page d accueil de l université de Cambridge........ 38 3.2 Variation de la taille du ROBDD de la fonction en utilisant le codage simple....... 39 3.3 Variation de la taille du ROBDD de la fonction en utilisant le codage complet...... 39 3.4 Taille du ROBDD et codage de la fonction booléenne avec de nombreux mots...... 40 3.5 Quelques requêtes générées à partir du codage simple et une approximation à 40 noeuds 41 3.6 Tableau des tailles des différents ROBDD et du nombre de requêtes générées pour le codage complet....................................... 42 3.7 Dix requêtes générées par le codage complet et une contrainte de 60 noeuds et la sélection de l utilisateur parmi ces dix requêtes............................ 42 3.8 Codage de deux requêtes.................................. 43 3.9 ROBDD de f = f 24 f 28................................. 43 3.10 ROBDD de f + avec une contrainte de taille de 7 noeuds................. 44 3.11 ROBDD de f + f..................................... 44 4.1 Architecture générale de CorpusBuilder.......................... 47 4.2 Résultats obtenus pour les différentes méthodes de génération de requêtes avec différentes longueur....................................... 49 4.3 Résultats globaux des méthodes d apprentissages..................... 51 4.4 Apprentissage des longueurs des termes d inclusion.................... 52 4.5 Apprentissage des méthodes de génération des termes d inclusion............ 52 4.6 Apprentissage des longueurs des termes d exclusion.................... 52 iii

4.7 Apprentissage des méthodes de génération des termes d exclusion............ 53 4.8 Nombre de documents pertinents par rapport au nombre de document récupérés par les différentes méthodes.................................... 53 4.9 Taille du ROBDD des requêtes pour LTA (avec 2000 requêtes).............. 54 4.10 Evolution de la richesse du vocabulaire des différentes méthodes............. 55 4.11 Fréquence des différents mots du vocabulaire pour la méthode LTA............ 56 4.12 Fréquence des différents mots du vocabulaire pour la méthode ML............ 57 4.13 Répartition du vocabulaire du concept pour la méthode LTA............... 58 4.14 Répartition du vocabulaire du concept pour la méthode ML................ 59 4.15 Distribution de Zipf et répartition du vocabulaire de la méthode ML........... 60 4.16 Exemples de mots éloignés de la distribution de Zipf pour LTA.............. 60 4.17 Mots éloignés de la distribution de Zipf pour ML (occurrences de 550 à 2048 dans plus de 500 documents)..................................... 61 4.18 Mots fréquents et proche de la distribution de Zipf pour LTA (plus de 4100 occurrences dans plus de 350 documents)................................ 62 4.19 Requêtes générées après filtrage sur le mot sur....................... 63 iv

Sommaire 1 Etude d une représentation particulière des fonctions booléennes : les ROBDD 4 1.1 Représentation des fonctions booléennes.......................... 4 1.1.1 Algèbre de Boole.................................. 4 1.1.2 Quelques représentations des fonctions booléennes................ 5 1.1.3 Différents problèmes liés aux fonctions booléennes................ 8 1.2 Binary Decision Diagram et ROBDD........................... 10 1.2.1 BDD et OBDD................................... 10 1.2.2 Reduced Ordonned Binary Decision Diagram : ROBDD............. 13 1.3 Discussions sur les ROBDD................................ 15 1.3.1 Éléments de complexité des ROBDD....................... 15 1.3.2 Problème NP-Complet............................... 16 1.3.3 Lien entre données et fonctions booléennes.................... 16 1.4 Taille du ROBDD et ordre des variables.......................... 18 1.4.1 Influence de l ordre des variables : un exemple.................. 18 1.4.2 Techniques pour réduire la taille d un ROBDD.................. 18 1.5 Heuristiques permettant de réduire la taille des graphes.................. 21 1.5.1 Une heuristique particulière : HMA........................ 21 1.5.2 Généralisation de HMA : une nouvelle heuristique................ 22 1.5.3 Résultats des heuristiques............................. 24 2 ROBDD et approximations de fonctions booléennes 27 2.1 Approximation et fonctions booléennes.......................... 27 2.2 Fonctions booléennes, ROBDD et approximation..................... 28 2.2.1 Approximation................................... 28 2.2.2 Etude d un cas particulier............................. 29 2.2.3 Heuristiques pour calculer f........................... 29 2.2.4 Exemple...................................... 30 2.2.5 Remarques sur l ordre des variables et l approximation.............. 31 3 Application à l expansion, l enrichissement et la reformulation de requêtes 33 3.1 Analyse et génération de requêtes............................. 33 3.1.1 Présentation du problème.............................. 33 3.1.2 Solutions existantes................................. 34 3.2 Méthode de résolution proposée avec l utilisation de ROBDD............... 35 3.2.1 Présentation générale................................ 35 v

vi 3.2.2 Deux codages de requêtes sous formes booléennes................ 36 3.2.3 Requêtes générées et comparaison des deux méthodes de codage......... 37 4 Construction de corpus en langue minoritaire à partir du WEB 46 4.1 Présentation de CorpusBuilder............................... 46 4.1.1 Introduction..................................... 46 4.1.2 Algorithme général................................. 46 4.1.3 Méthodes de générations de requêtes....................... 48 4.2 Résultats des différentes méthodes de génération de requêtes............... 48 4.3 Apprentissage de la génération de requête......................... 49 4.3.1 ML : Memory-Less Learning............................ 50 4.3.2 FM : Fading Memory Learning.......................... 50 4.3.3 LTA : Long-Term Learning Additive........................ 50 4.3.4 LTM : Long-Term learning Multiplicative..................... 51 4.4 Résultats de l apprentissage................................. 51 4.5 Application de la méthode................................. 54 4.5.1 Problème rencontré................................. 54 4.5.2 Evaluation du vocabulaire généré......................... 54 4.5.3 Evaluation du vocabulaire des documents pertinents et résultats......... 57 Annexes Bibliographie........................................... i Liste des Figures......................................... iv Sommaire............................................. v

INSTITUT DE RECHERCHE EN INFORMATIQUE DE NANTES Représentation et approximation de fonctions booléennes : Application à la génération de requêtes LEBLET Jimmy (encadré par QUAFAFOU Mohamed) Termes généraux : fonctions booléennes, ROBDD, approximation, génération de requêtes Mots-clés additionnels et phrases : apprentissage, extraction à partir du WEB, construction de corpus IRIN, Faculté des Sciences & Techniques de Nantes 2, rue de la Houssinière B.P. 92208 F-44322 NANTES CEDEX 3