La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Xavier Tannier Indexation avancée Indexation et Recherche d'Information.

Présentations similaires


Présentation au sujet: "Xavier Tannier Indexation avancée Indexation et Recherche d'Information."— Transcription de la présentation:

1 Xavier Tannier Indexation avancée Indexation et Recherche d'Information

2 Rappels des épisodes précédents

3 Indexation et Recherche d'Information Xavier Tannier Indexation Avancée Recherche d'Information 3 Collections dynamiques vs. statiques Collections dynamiques vs. statiques Requête Indexation (modèle de document) Modèle de recherche Évaluation

4 Indexation et Recherche d'Information Xavier Tannier Indexation Avancée Construction de lindex : vue générale 4 TEXTE Rien ne sert de courir; il faut partir à point : Le lièvre et la tortue en sont un témoignage. «Gageons, dit celle-ci, que vous n'atteindrez point Sitôt que moi ce but. - Sitôt? Êtes-vous sage ? Repartit l'animal léger : Ma commère, il vous faut purger Avec quatre grains d'ellébore.) - Sage ou non, je parie encore." Ainsi fut fait; et de tous deux On mit près du but les enjeux : Savoir quoi, ce n'est pas l'affaire, Ni de quel juge l'on convint. Notre lièvre n'avait que quatre pas à faire, J'entends de ceux qu'il fait lorsque, prêt d'être atteint, Il s'éloigne des chiens, les renvoie aux calendes, Et leur fait arpenter les landes. Ayant, dis-je, du temps de reste pour brouter, Pour dormir et pour écouter D'où vient le vent, il laisse la tortue Aller son train de sénateur. Elle part, elle s'évertue, Elle se hâte avec lenteur. Lui cependant méprise une telle victoire, Tient la gageure à peu de gloire, Croit qu'il y a de son honneur De partir tard. Il broute, il se repose, Il s'amuse à toute autre chose Qu'à la gageure. A la fin, quand il vit Que l'autre touchait presque au bout de la carrière, Il partit comme un trait; mais les élans qu'il fit Furent vains : la tortue arriva la première. "Eh bien! lui cria-t-elle, avais-je pas raison ? De quoi vous sert votre vitesse ? Moi l'emporter! et que serait-ce Si vous portiez une maison ?" TERMES Rien nesert de couririlfaut partir à point TERMES NORMALISÉS rien sert courirfaut partirpoint DOCUMENTS INDEX

5 Indexation et Recherche d'Information Xavier Tannier Indexation Avancée Construction de lindex 5 Doc #1 I didenact julius caesarIwas killed i the Capitol Brutuskilledme Doc #2 So letit be caesarThe with hath was told Brutus ambitious you noble caesar Séquence de termes Terme Id. Doc

6 Indexation et Recherche d'Information Xavier Tannier Indexation Avancée Construction de lindex 6 Tri par termes (puis par documents) Terme Id. Doc ….. Terme Id. Doc

7 Indexation et Recherche d'Information Xavier Tannier Indexation Avancée Construction de lindex 7 ….. Terme Id. Doc TermeFréquence Liste Fichier inverse (dictionnaire)

8 Indexation et Recherche d'Information Xavier Tannier Indexation Avancée Construction de lindex 8 TermeFréquence Liste Questions pour plus tard Comment construire cet index de façon efficace et économe ? Comment le conserver (mémoire, disque, quelle structure de données) ? Cest maintenant !

9 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Requête dans les index Les listes de documents sont ordonnées ! On traverse les deux listes l1 et l2 simultanément 9 fusion = <> id1 = l1[0], id2 = l2[0] Tant que les listes ne sont pas vides si id1 = id2 alors ajouter(fusion, id1) id1 = suivant(l1) id2 = suivant(e2) sinon si id1 < id2 alors id1 = suivant(l1) sinon id2 = suivant(l2) BrutusCaesar Fin !

10 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Arbres binaires de recherche 10 jeu je jeudi jeux jard jante

11 Recherche approximative dans lindex

12 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Joker (« Wild Card ») * mon* : trouver tous les termes qui commencent par « mon ». Aucun problème avec les arbres binaires ou les B-Tree. *mon : trouver tous les termes qui finissent par « mon ». Maintenir un second B-Tree contenant les termes à lenvers ! tra*ant ? Sarranger pour que le joker soit toujours à la fin ! Pourquoi ? 12

13 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Permuterm Pour chaque terme, indexer de façon circulaire – bonjour$ – onjour$b – njour$bo – jour$bon – our$bonj – ur$bonjo – r$bonjou – $bonjour 13 Traitement des requêtes : permuter en conduisant le joker vers la droite – X X$ – X* $X* – *X X$* – X*Y – *X* – X*Y*Z Index environ 4 fois plus gros ! ? ?

14 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Correction dorthographe Correction dans les documents – Particulièrement utile pour les documents numérisés (OCR) – Les pages Web ont beaucoup de fautes de frappe ou dorthographe – Le but : introduire moins de termes erronés dans le dictionnaire Correction dans les requêtes – « comprendre » ce que demandait lutilisateur 14

15 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Correction dorthographe Correction dun mot isolé : – Distance dédition (Levenshtein) – Distance dédition pondérée – N-grammes de caractères – Statistiques sur les logs de requêtes – Soundex 15

16 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Correction dorthographe Correction en contexte – cacher / cracher – foncer / forcer Techniques : – Fonction du nombre de documents retrouvés – Bi-grammes les plus fréquents 16

17 Construction de lindex

18 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Rappel des enjeux matériels Lespace disque est nécessaire pour stocker les index inversés Certains moteurs de recherche stockent presque tout en mémoire, cest rapide mais très cher, et le changement déchelle est plus compliqué. (mais Google et Bing le font) Le transfert de données via le disque dur est utilisé pour manipuler (au moins en partie) les listes inversées La mémoire vive stocke (si possible) le dictionnaire et accumule les documents de lindex La CPU est mise à contribution pour construire et ordonner les listes inversées 18

19 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Rappel des enjeux matériel Mémoire Accès rapide Accès aléatoire Contenance moyenne (Go) Chère Disque Accès lent Accès par blocs (de 8 à 256 Ko) Contenance élevée (To) Bon marché 19

20 Indexation et Recherche d'Information Xavier Tannier Indexation Avancée Construction de lindex : tri par termes 20 Tri par termes (puis par documents) Terme Id. Doc ….. Terme Id. Doc

21 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Tri Le tri est généralement un travail pour la mémoire vive – Algorithmes efficaces, « lectures/écritures » fréquentes mais rapides – OK jusquà quelques dizaines de millions de termes à trier. Impossible de tenir de grosses collections en mémoire pour la trier – On analyse un document à la fois (compression très difficile) – Les listes des index ne sont complètes quà la fin du processus Nécessité de prévoir des stockages intermédiaires sur le disque – Algorithmes « classiques » de tri en mémoire impossible à reproduire sur le disque (accès trop lents) 21 Chaque comparaison demande 2 accès au disque. On ordonne N éléments en N ln N comparaisons. Temps daccès moyen : 5ms Combien de temps prendrait le tri de 100 M de termes ?

22 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Tri par blocs Séparer la collection en n parties gérables en mémoire Trier chacune de ses n parties séparément, et réécrire le résultat sur le disque (on trie par identifiants de termes et on conserve un dictionnaire) Fusionner les résultats 2 par 2. – Fusion linéaire, vous commencez à connaître – Inutile de mettre les deux blocs en mémoire – Log 2 n fusions – Peut être fait avec plus de 2 blocs (plus efficace) 22 Temps de transfert du disque (une fois la tête positionnée) : 0,02 s par octet Un identifiant de terme : 4 octets Temps dune comparaison ou dun échange de chaîne de caractères : 0,01 s Temps total pour accéder aux données dun bloc, les trier et les réécrire sur le disque ?

23 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Tri par blocs Condition du tri par blocs : le dictionnaire tient en mémoire – Le dictionnaire permet de faire le lien entre les termes et leurs identifiants – Il grandit dynamiquement – On pourrait indexer par termes et non par identifiants, mais les fichiers deviendraient très gros Si le dictionnaire ne tient pas en mémoire ? – Indexation complète par blocs – On maintient un dictionnaire par bloc seulement – On trie les dictionnaires, mais pas les listes 23

24 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Indexation par blocs 24 Tant que la mémoire nest pas pleine token = token suivant si token est dans le dictionnaire alors liste = liste existante pour ce token sinon liste = nouvelle liste ajouterToken(token, liste) Ordonner le dictionnaire Écrire le bloc sur le disque (dictionnaire + index) Recommencer avec un nouveau bloc si la liste est pleine alors doubler la taille de la liste Fusion des blocs (toujours pareil)

25 Indexation distribuée

26 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Indexation distribuée Pour de très larges collections (Web) Pour éviter de devoir utiliser des machines tolérantes aux fautes Un serveur principal dirige le tout (doit être très sûr) Il divise la tâche dindexation en un ensemble de tâches parallèles Il assigne chaque tâche à une machine libre et fonctionnelle du réseau 26 Quest-ce quune tâche « parallélisable » ? (MapReduce) Quest-ce quune tâche « parallélisable » ? (MapReduce)

27 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Indexation distribuée : contexte Le problème : – Compter le nombre de mots d'un corpus est trivial... – Quand le corpus contient 100 documents... – … mais pas quand il y en a 10 milliards ! Les deux aspects de la RI – Modéliser la pertinence d'un document – Construire l'architecture capable de mettre ce modèle en œuvre Stocker les données (efficacement !) Faciliter le traitement de masse de données 27

28 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Indexation distribuée Aujourd'hui tous les moteurs de recherche utilisent une architecture semblable – un système de fichiers distribué – un système de contrôle de tâches (job scheduler : quel programme est exécuté sur quelle machine à quel moment) Architecture initiale proposée par Google (Google File System & Map Reduce) Implémentation libre développée dans le projet Hadoop 28

29 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Système de fichiers distribué Pour le programmeur : – Système de fichier standard (hiérarchie de répertoires + fichiers) En réalité : – Les fichiers sont stockés découpés en morceaux (chunks) et stockés sur différentes machines – Chaque chunk est stocké plusieurs fois (redondance) possibilité de perdre des machines Système de fichiers : – Vue abstraite : on ne sait pas où sont physiquement stockés les fichiers – Gère la réplication : plus de copies des fichiers auxquels on accède le plus 29

30 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier MapReduce Principe : – Cadre de développement permettant de paralléliser et de distribuer facilement les tâches – Tous les algos sont écrits sous la forme de deux fonctions : 1.Une fonction map qui réalise un traitement (modification) des données 2.Une fonction reduce qui fusionne les résultats intermédiaires produits par map Interêt : – Manière simple décrire des programmes traitant plusieurs To de données – Les tâches map sont exécutés sur les machines sur lesquelles sont stockées les données – Les tâches map sont exécutées en parallèle 30

31 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier MapReduce : compter les mots 31 CORPUS comptage Compte global chunks MAP REDUCE Fusion des comptes

32 Compression de lindex

33 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Pourquoi utiliser la compression ? Utiliser moins despace disque (et faire des économies) Conserver plus dinformations en mémoire (et réfléchir plus vite) – Conserver les dictionnaires – Éventuellement, garder même les listes des mots fréquemment demandés en mémoire. Accélérer le transfert entre le disque et la mémoire – À condition que le temps de compression/décompression soit inférieur au temps gagné au transfert – Les algorithmes de compression doivent être rapides 33

34 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression avec ou sans perte Compression avec perte Cest le principe même de lindexation : – sac de mots – mots vides – lemmatisation, stemming, … Compression sans perte – Rangement plus économe – Compression de lindex une fois quon a décidé quelles informations on conserve 34

35 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Rappel : Taille du vocabulaire Le vocabulaire grandit quand la collection grandit. Loi de Heaps : M = kT b – M : taille du vocabulaire – T : nombre de tokens dans la collection – b et k : constantes (typiquement, b = 0,5 et k = 30 à 100) – Loi empirique Et cest bien pire pour le Web ! 35

36 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Rappel : Fréquence des termes Peu de mots fréquents, et beaucoup de mots rares Loi de Zipf : le n ème mot le plus fréquent a une fréquence proportionnelle à 1/n 36 rang des termes fréquence des termes

37 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression du dictionnaire 37 TermesFréquencePointeur vers les listes a abandon1245 ……… zoulou63 20 octets4 octets Si on a environ termes 28 octets par termes 11,2 Mo Problèmes de cette structure fixe ? « a » « anticonstitutionnellement » Problèmes de cette structure fixe ? « a » « anticonstitutionnellement » le double en unicode !

38 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression de la liste de termes 38 TermesFréquencePointeur vers les listes octets4 octets comacombatcombecombinaisoncomblercombustible Si un terme fait 8 lettres en moyenne (disons 8 octets) 19 octets par terme au lieu de 28 7,6 Mo

39 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression de la liste de termes 39 TermesFréquencePointeur vers les listes octets4 octets 4coma6combat5combe11combinaison7combler11combustible On économise 3 pointeurs (9 octets) tous les k termes. On dépense 1 octet de plus à chaque mot pour la taille 7,1 Mo Pointeurs par blocs pointeur tous les k termes (ici, k=4) Pourquoi ne pas augmenter k ?

40 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression de la liste de termes 40 jeu je jeudi jeux jard jante jeun job jeu je jeudi jeux jante jard jeun job Recherche sans les pointeurs par blocs… … et avec les pointeurs par blocs Combien de comparaisons en moyenne ?

41 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression de la liste de termes 41 8attabler7attache9attachant9attaquer On descend à 5,9 Mo Codage incrémental 8atta*bler3che5chant4quer Les mots ordonnés partagent souvent de longs préfixes en commun On ne code que les différences À lintérieur dun bloc uniquement !

42 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression des listes de documents On trie les listes de documents par leurs identifiants (entiers) – En général, un entier est codé sur 4 octets – Au mieux, pour 1 M de documents, sur log = 20 bits Peu de termes fréquents, beaucoup de termes rares – « allomorphie » apparaît peut-être une fois tous les millions de documents, donc pour notre collection dun million de document, 20 bits devraient suffire – « le » apparaît probablement dans chaque document, donc potentiellement 20 M de bits pour stocker la liste (cest trop)

43 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression des listes de documents Une idée : stocker les intervalles entre identifiants Lespoir est de pouvoir stocker les intervalles dans moins de 20 bits Mais… – « le » – « allomorphie » On a toujours besoin du maximum « au cas où » ! …511156…

44 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression des listes de documents La solution ? Pour une valeur dintervalle I, on veut utiliser aussi peu de bits que possible (lentier au-dessus de log 2 I). En pratique, on arrondit à loctet supérieur. Comme pour les encodages de caractères, on consacre 7 bits dun octet à représenter le nombre, et le dernier est le bit de continuation c. – Si I 127, 7 bits suffisent, et c = 1. – Sinon, c = 0 et on continue sur loctet suivant. – c = 1 signifie toujours que le nombre se termine à cet octet. 44

45 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Compression des listes de documents Bilan : – Pour une collection initiale de : documents 16 M de termes termes uniques – Taille du dictionnaire : Structure de taille fixe : 11,2 Mo Avec pointeurs vers les termes : 7,6 Mo Avec pointeurs par blocs : 7,1 Mo Avec pointeurs par blocs et codage incrémental : 5,9 Mo – Taille de la liste de documents (sans les positions) : Matrice dincidence : 40 Go Index inversé (4 octets) : 400 Mo Entiers de tailles variables : 116 Mo 45

46 Plusieurs index ?

47 Indexation et Recherche d'Information Indexation Avancée Xavier Tannier Pourquoi plusieurs index ? Les collections évoluent plus ou moins rapidement – Documentation technique : de gros ajouts plutôt rares – Des articles de journaux : quelques ajouts assez fréquents – Le Web : beaucoup dajouts en permanence Plusieurs raisons dutiliser plusieurs index : – Pouvoir toujours utiliser un index si un autre est en reconstruction – Maintenir un index des nouveaux documents en attendant de les fusionner à lindex principal – Avoir un index pour chaque type de documents : Les pages rarement modifiées (exemple, le blog de votre grand-mère) Les pages modifiées régulièrement (exemple, le blog de votre petite sœur) Les pages modifiées en « temps réel » (exemple, la page daccueil de liberation.fr) 47


Télécharger ppt "Xavier Tannier Indexation avancée Indexation et Recherche d'Information."

Présentations similaires


Annonces Google