1 Recherche d Information(RI): Fondements et illustration avec Apache Lucene par Majirus Fansi @majirus
Résumé Fondements de la Recherche d Information (RI) Noyau de toute application de RI Éléments à prendre en compte Modèles Booléens et Vectoriels Construction des index inversés et calcul du niveau de pertinence Librairie Apache Lucene 2
Majirus Fansi, PhD, MBA @majirus Chercheur au laboratoire Informatique de l Université de Pau Stockolm Business School Executive MBA Consultant SOA/Java EE à Valtech SA Maintenant à Devoxx France 3
Définition 4
Recherche d Information (RI) Trouver des ressources (des documents) De nature non structurée (des textes) Besoin d information (pas une requête) parmi une large collection Stockées sur ordinateurs 5
RI Web/Traditionnelle RI Web (Web Information Retrieval) La plus grande collection de documents (liés) RI traditionnelle (Traditional Information Retrieval) Collection plus ou moins contrôlable, plus petite en taille Votre intranet Scénario le plus souvent rencontré par le développeur 6
RI Traditionnelle Trois techniques basiques de recherche d Information Modèles Booléens (Boolean Models) Modèles Vectoriels (Vector Space Models) Modèles Probabilistes (Probabilistic Models) Les moteurs de recherche s appuient sur un ou plusieurs modèles Apache Lucene se repose sur les modèles booléens et vectoriels 7
Exemple de Problème RI Bibliothèque numérique de l entreprise Documents techniques, rapport de réunions, spécifications, etc Dizaines de milliers de documents Lucene AND Cutting AND NOT SOLR Grep de la collection pour retrouver les documents candidats Peut être un processus efficace mais 8
Exemple de Problème RI (2) Grep ne répond pas à tous les besoins Traiter rapidement une large collection de documents Permettre des recherches plus flexibles "Lucene Cutting"~5 Permettre la recherche par pertinence (ranked retrieval) Meilleures réponses à un besoin d information Parmi les documents qui contiennent certains mots 9
Index/terme/document L index est le moyen d éviter le scan linéaire de la collection On indexe au préalable les documents de la collection L unité d index est un terme Mot dans le document indexé, mais pas toujours Document: Tout élément sur lequel est basé l index Ligne d une table, livre, chapitre de livre, présentation, etc 10
Index: structure et construction 11
Index : structure Supposons N= 1 million de documents, 1000 mots par document, M=500 000 termes environ pour la collection Un milliard de mots pour 500 000 termes Quelle structure pour l index? 12
Matrice d incidence termedocument Doc 1 Doc 2 Doc 3 Doc 4 Lucene 1 0 1 1 Cutting 0 0 1 1 Solr 1 0 1 0 Majirus 0 1 0 0 Méthode naïve, matrice clairsemée: un terme dans 2 documents L index doit idéalement tenir en mémoire 13
Index Inversé (Inverted index) Maintien d un dictionnaire de termes Pour chaque terme t, lister les documents (postings list) où apparaît t docid pour identifier chaque document de la liste Cutting 1 2 4 11 31 45 173 Posting Lucene SOLR 1 2 4 5 6 16 57 132 2 31 54 101 Dictionnaire Trier par docid Postings 14
Construction de l index Inversé Documents à indexer Friends, to, Romans, countrymen. Flow de jetons Analyseur Module linguistique Friends Romans Countrymen Jetons modifiés friend roman countryman Index inversé Indexeur friend 2 4 roman 1 2 countryman 13 16 15
Analyser le texte Découper le texte en pièces appelées jetons (token) Dépendant du langage (Français, Allemand, etc...) Exclure les termes peu pertinents pour la recherche (stop words) Indice: Nombre d occurrence du terme dans la collection Réduit la taille de l index mais attention Phrases comme requête (phrase query): "réunion de geek" Ecoutez-vous? :"I did it all", "Ni Oui Ni Non", "Oui Mais Non" 16
Normaliser les jetons Processus de standardisation des jetons Pour éliminer les différences superficielles Création implicite des classes d équivalence Suppression des points et tirets: U.S.A USA; anti-héros antiheros Suppression des accents: cliché cliche; naïve naive Tout en minuscule? CAT, Bush 17
Indexeur: dictionnaire et postings Fusion des entrées du même terme dans un document Partition entre dictionnaire et postings La fréquence de document est ajouté 18
Modèle Booléen 19
Modèle Booléen Requête sous forme d expression booléenne de termes Termes combinés par les opérateurs AND, OR, NOT Un document est vu comme un ensemble de mots 20
Traitement des requêtes: AND On considère la requête Lucene AND Cutting Localiser Lucene dans le dictionnaire Extraire son postings Localiser Cutting dans le dictionnaire Extraire son postings Faire l intersection des deux postings 21
Traitement des requêtes: AND (2) On considère la requête Lucene AND Cutting 2 8 2 4 8 16 32 64 128 Lucene 1 2 3 5 8 13 21 34 Cutting Si les listes sont de tailles X et Y, alors fusion en O(X+Y) Important: les listes sont triées par docid 22
Requêtes Booléennes: correspondances exactes Modèle très précis: le document match les conditions ou pas Sans doute le modèle le plus simple pour construire un système RI La seule option disponible jusqu en 1990 Trois siècles de règne sans partage Plusieurs systèmes utilisent toujours ce modèle Email, catalogues de librairie, Mac OS X Spotlight 23
Requêtes Booléennes avec Apache Lucene AND (ou &&), "+ ", OR (ou ), NOT (ou!) et "-" Opérateur par défaut: OR Retourner les documents qui contiennent "Apache Lucene" ou Lucene "Apache Lucene" Lucene ou "apache Lucene" OR Lucene "+" impose que le terme après ce signe existe dans le document 24
Requêtes Booléennes avec Apache Lucene (2) NOT (-): exclut les documents qui contiennent le terme après l opérateur Ne peut être utilisé avec un seul terme ( NOT SOLR) Utiliser les parenthèses pour forcer les priorités (A OR B) AND C 25
Req Booléennes : Limitations Problème général avec la recherche booléenne AND très précis mais très restreint OR peu précis, mais moins restreint Difficile de trouver le juste milieu Ne répond pas toujours au besoin d information des utilisateurs Modèle booléen étendu: proximité entre termes (term proximity) Apache et Lucene dans 10 mots ("Apache Lucene" ~10) 26
Req Booléennes : Perspectives Renseigne uniquement sur la présence ou l absence d un terme Nous aimerions donner un poids important aux documents où le terme est plus fréquent Besoin de la fréquence du terme (term frequency) Retourne l ensemble des documents qui matchent la condition Nous souhaiterions ordonner les résultats par pertinence Besoin d un mécanisme pour déterminer le score du document 27
Recherche ordonnée (Ranked Retrieval) 28
Recherche ordonnée (Motivations) Jusqu en 1990 uniquement les requêtes Booléennes Les documents correspondent ou pas Bien pour les experts qui comprennent bien leurs besoins et la collection Peu adapté pour la majorité des utilisateurs Beaucoup sont incapables d écrire les requêtes booléennes Très peu sont disposés à explorer une liste de 1000 résultats 29
Recherche ordonnée (Principes) Plutôt qu un ensemble de documents qui satisfont la requête Le système retourne les tops k documents les plus pertinents La taille des résultats n est plus un problème Seule condition: l algorithme de ranking fonctionne Plutôt qu une requête avec expressions et opérateurs L utilisateur soumet une requête en texte libre 30
Scoring 31
Score Élément clé pour la recherche ordonnée Nous voulons retourner en priorité les documents les plus utiles à l utilisateur Comment ordonner les documents de la collection par rapport à la requête? Assigner un score [0, 1] à chaque document Ce score mesure combien le document et la requête matchent. 32
Éléments de scoring Fréquence du terme (term frequency) Fréquence document (document frequency) Non en fait la fréquence document inversée (Inverse doc freq) 33
Fréquence du terme - tf t,d La fréquence tf t,d : nombre d occurrences de t dans d tf peut-il être le score? Tf comme score n est pas ce que nous voulons: Un document avec 10 occurrences du terme est plus pertinent qu un document avec 1 seule occurrence du même terme Mais pas 10 fois plus pertinent 34
tf t,d - Inconvénients Tous les termes sont considérés avec la même importance Certains termes ont peu ou pas du tout de pouvoir discriminant Poids du terme «java» dans une collection de documents sur les frameworks java. Besoin d un Mécanisme pour atténuer l effet des termes trop fréquents 35
Fréquence document (df t ) Nombre de documents contenant le terme dans la collection Les termes rares sont plus informatifs que les termes fréquents Le but est d attribuer un poids élevé pour les termes fréquents Mais moins important que les termes rares La fréquence document (df) permet de matérialiser ce besoin 36
Fréquence document inversé df t est la fréquence document de t: le nombre de documents qui contiennent t df t est une mesure inverse du caractère informatif de t df t N; N étant le nombre de document de la collection Idf t (inverse document frequency) de t est ainsi défini idf log ( N/df t 10 t La fonction log est utilisée pour rendre idf moins prononcé ) 37
tf.idf Scoring Le score tf.idf d un terme est le produit de ses poids tf et idf w log(1 tft, ) log ( N / df t, d d t ) Schéma de calcul de score très utilisé en RI w t,d Augmente avec le nombre d occurrences de t dans d w t,d Augmente suivant la rareté de t dans la collection w t,d plus élevé si t apparaît plusieurs fois dans n documents, n petit w t,d est le moindre si t apparaît dans presque tous les documents 38
Modèle Vectoriel (Vector Space Model) 39
VSM: Principes Documents comme vecteurs dans l espace Requête comme vecteur dans l espace Calcul de la similarité entre les vecteurs 40
document comme vecteur (document vector) Les documents sont des points ou des vecteurs dans un espace vectoriel Les termes sont les axes de l espace: d (w t1,d ; w t2,d ; w tn,d ) Espace vectoriel de dimension n, n = nombre de termes Vecteurs très dispersés: beaucoup d entrées à zéro 41
Req comme vecteur (Query vector) Idée clef 1: Représenter les requêtes comme vecteurs dans l espace Idée clef 2: ordonner les documents suivant leurs proximités à la requête dans l espace 42
Proximité (d, q) Proximité par mesure de distance Euclidienne Ne reflète pas la distribution des termes Dupliquer le contenu de d pour obtenir d d a une plus grande distance et s écarte de d Proximité donné par l angle avec la requête: cos(0) = 1 = similarité maximale Respecte mieux la similarité sur la distribution des termes (d,d)=0 43
Ranking Ordonner les documents par ordre décroissant de l angle entre le document et la requête Ou par ordre croissant de cos(requête, document) 44
cos(requête q, document d) produit scalaire q d cos( q, d) q d q q vecteurs unitaires q i est le poids tf-idf du terme i dans la requête q d d V i 1 q V i 1 2 i q d i i V i 1 d 2 i fondamental pour tout système RI à modèle vectoriel d i est le poids tf-idf du terme i dans le document d cos(q,d) donne le score du document d considérant la requête q On retourne les top K documents 45
Adaptation Lucene (1) Normaliser le vecteur v(d) à un vecteur unitaire est problématique Supprime toute information sur la longueur du document D où la fonction doc-len-norm(d) qui normalise à un vecteur supérieur ou égal au vecteur unitaire (2) On peut décider à l indexation qu un document est plus important qu un autre Ajout d un boost pour le document (doc-boost(d)) 46
Adaptation Lucene (2) (3) On peut attribuer un facteur de boost aux termes de la requête (queryboost(q)) Multiplie la contribution d un terme au score du document (4) Un document peut satisfaire une requête à plusieurs termes Mais ne contient pas tous les termes de la requête L utilisateur récompense le document qui contient le plus de termes Coord-factor(q,d) 47
Lucene: Formule de scoring conceptuelle Suppose un champ (field) par document q d score( q, d) coordfact(q, d).queryboost ( q).doclennorm ( d).docboost( d) q 48
Lucene: Scoring Pratique Formule pratique : un document a plusieurs champs score( q, d) coord(q, d).query Norm( q) t q ( tf ( t d). idf numdocs tf ( t d) tf idf ( t) 1 log( ) t, d docfreq 1 ( t) 2. t. getboost(). norm( field( t), d)) norm( field( t), d) doclennorm( field( t), d). docboost( d) QueryNorm(q) utile pour comparer les scores entre requêtes doclennorm(field(t),d) calculé de sorte que les champs courts contribuent plus au score 49
Conclusion et perspectives 50
Perspectives Schéma d extraction «Inexact Top K» documents Retourner les K documents susceptibles d être parmi les K meilleurs scores L algorithme de scoring n est qu un proxy vers le besoin d information Modèles Probabilistes Aller plus loin dans la recherche avec la sémantisation La recherche de base est à mots clés 51
Remerciements Pandu Nayak and Prabhakar Raghavan: Introduction to Information Retrieval Amy N. Langville and Carl D. Meyer: Google s PageRank and Beyond Equipe de développement de Lucene L organisation de Devoxx France Le management de Michels, Maj-Daniels et Sonzia Fansi Bien sûr vous, pour votre présence et votre attention 52
A ceux et celles qui œuvrent pour l enseignement et la recherche! 53
54 Please note : slide format is 1280x720 We d like to record in 16:9 But prepare also a 1024x768 as a backup plan if your computer is not able to output a video signal with a 1280x720 resolution