Indexation avancée

  • Published on
    01-Jan-2016

  • View
    32

  • Download
    1

Embed Size (px)

DESCRIPTION

Indexation avance. Indexation et Recherche d'Information. Rappels des pisodes prcdents. Recherche d'Information. Indexation (modle de document). Collections dynamiques vs. statiques. Modle de recherche. valuation. Requte. Construction de lindex : vue gnrale. INDEX. - PowerPoint PPT Presentation

Transcript

Diapositive 1

IndexationavanceIndexation et Recherche d'Information

Xavier Tannierxavier.tannier@limsi.frRappels des pisodes prcdentsRecherche d'Information3

Collections dynamiquesvs. statiquesRequteIndexation(modle de document)Modle derecherchevaluationIndexation et Recherche d'InformationXavier Tannier Indexation AvanceConstruction de lindex : vue gnrale4

TEXTERien ne sert de courir; il faut partir point :Le livre et la tortue en sont un tmoignage.Gageons, dit celle-ci, que vous n'atteindrez pointSitt que moi ce but. - Sitt? tes-vous sage ? Repartit l'animal lger : Ma commre, il vous faut purger Avec quatre grains d'ellbore.) - Sage ou non, je parie encore." Ainsi fut fait; et de tous deux On mit prs du but les enjeux : Savoir quoi, ce n'est pas l'affaire, Ni de quel juge l'on convint.Notre livre n'avait que quatre pas faire,J'entends de ceux qu'il fait lorsque, prt 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 snateur. Elle part, elle s'vertue, Elle se hte avec lenteur.Lui cependant mprise 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 vitQue l'autre touchait presque au bout de la carrire,Il partit comme un trait; mais les lans qu'il fitFurent vains : la tortue arriva la premire."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 ?" TERMESRiennesertdecouririlfautpartirpointTERMES normalissriensertcourirfautpartirpointDOCUMENTS

INDEXIndexation et Recherche d'InformationXavier Tannier Indexation AvanceConstruction de lindex5Doc #1IdidenactjuliuscaesarIwaskilleditheCapitolBrutuskilledmeDoc #2SoletitbecaesarThewithhathwastoldBrutusambitiousyounoblecaesarSquencede termesTerme

TermeId. DocId. DocIndexation et Recherche d'InformationXavier Tannier Indexation AvanceConstruction de lindex6Tri par termes(puis par documents)Terme

TermeId. DocId. Doc

....TermeId. DocIndexation et Recherche d'InformationXavier Tannier Indexation AvanceConstruction de lindex7

....TermeId. DocTermeFrquenceListeFichier inverse(dictionnaire)Indexation et Recherche d'InformationXavier Tannier Indexation Avance7Construction de lindex8

TermeFrquenceListeQuestions pour plus tard Comment construire cet index de faon efficace et conome ? Comment le conserver (mmoire, disque, quelle structure de donnes) ?

Cest maintenant !Indexation et Recherche d'InformationXavier Tannier Indexation Avance8Requte dans les indexLes listes de documents sont ordonnes !On traverse les deux listes l1 et l2 simultanment9fusion = 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 !Indexation et Recherche d'Information Indexation AvanceXavier TannierArbres binaires de recherche10jeujejeudijeuxjardjanteIndexation et Recherche d'Information Indexation AvanceXavier TannierRecherche approximative dans lindexJoker (Wild Card)*

mon* : trouver tous les termes qui commencent par mon.Aucun problme 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 ?12Indexation et Recherche d'Information Indexation AvanceXavier TannierPermutermPour chaque terme, indexer de faon circulairebonjour$onjour$bnjour$bojour$bonour$bonjur$bonjor$bonjou$bonjour

13Traitement des requtes : permuter en conduisant le joker vers la droiteX X$X* $X**X X$*X*Y *X* X*Y*Z

Index environ 4 fois plus gros !

?Indexation et Recherche d'Information Indexation AvanceXavier TannierCorrection dorthographeCorrection dans les documentsParticulirement utile pour les documents numriss (OCR)Les pages Web ont beaucoup de fautes de frappe ou dorthographeLe but : introduire moins de termes errons dans le dictionnaireCorrection dans les requtescomprendre ce que demandait lutilisateur

14

Indexation et Recherche d'Information Indexation AvanceXavier TannierCorrection dorthographeCorrection dun mot isol :Distance ddition (Levenshtein)

Distance ddition pondre

N-grammes de caractres

Statistiques sur les logs de requtes

Soundex15Indexation et Recherche d'Information Indexation AvanceXavier TannierCorrection dorthographeCorrection en contextecacher / cracherfoncer / forcer

Techniques :Fonction du nombre de documents retrouvs

Bi-grammes les plus frquents

16Indexation et Recherche d'Information Indexation AvanceXavier TannierConstruction de lindexRappel des enjeux matrielsLespace disque est ncessaire pour stocker les index inverssCertains moteurs de recherche stockent presque tout en mmoire, cest rapide mais trs cher, et le changement dchelle est plus compliqu. (mais Google et Bing le font)

Le transfert de donnes via le disque dur est utilis pour manipuler (au moins en partie) les listes inverses

La mmoire vive stocke (si possible) le dictionnaire et accumule les documents de lindex

La CPU est mise contribution pour construire et ordonner les listes inverses

18Indexation et Recherche d'Information Indexation AvanceXavier Tannier

Rappel des enjeux matrielMmoire

Accs rapideAccs alatoireContenance moyenne (Go)Chre

Disque

Accs lentAccs par blocs (de 8 256 Ko)Contenance leve (To)Bon march

19Indexation et Recherche d'Information Indexation AvanceXavier TannierConstruction de lindex : tri par termes20Tri par termes(puis par documents)Terme

TermeId. DocId. Doc

....TermeId. DocIndexation et Recherche d'InformationXavier Tannier Indexation AvanceTriLe tri est gnralement un travail pour la mmoire viveAlgorithmes efficaces, lectures/critures frquentes mais rapidesOK jusqu quelques dizaines de millions de termes trier. Impossible de tenir de grosses collections en mmoire pour la trierOn analyse un document la fois (compression trs difficile)Les listes des index ne sont compltes qu la fin du processusNcessit de prvoir des stockages intermdiaires sur le disqueAlgorithmes classiques de tri en mmoire impossible reproduire sur le disque (accs trop lents)21 Chaque comparaison demande 2 accs au disque. On ordonne N lments en N ln N comparaisons. Temps daccs moyen : 5ms Combien de temps prendrait le tri de 100 M de termes ?Indexation et Recherche d'Information Indexation AvanceXavier TannierTri par blocsSparer la collection en n parties grables en mmoireTrier chacune de ses n parties sparment, et rcrire le rsultat sur le disque (on trie par identifiants de termes et on conserve un dictionnaire)Fusionner les rsultats 2 par 2.Fusion linaire, vous commencez connatreInutile de mettre les deux blocs en mmoireLog2 n fusionsPeut tre fait avec plus de 2 blocs (plus efficace)

22 Temps de transfert du disque (une fois la tte positionne) : 0,02s par octet Un identifiant de terme : 4 octets Temps dune comparaison ou dun change de chane de caractres : 0,01s

Temps total pour accder aux donnes dun bloc, les trier et les rcrire sur le disque ?Indexation et Recherche d'Information Indexation AvanceXavier TannierTri par blocsCondition du tri par blocs : le dictionnaire tient en mmoireLe dictionnaire permet de faire le lien entre les termes et leurs identifiantsIl grandit dynamiquementOn pourrait indexer par termes et non par identifiants, mais les fichiers deviendraient trs gros

Si le dictionnaire ne tient pas en mmoire ?Indexation complte par blocsOn maintient un dictionnaire par bloc seulementOn trie les dictionnaires, mais pas les listes

23Indexation et Recherche d'Information Indexation AvanceXavier TannierIndexation par blocs24Tant que la mmoire 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 dictionnairecrire le bloc sur le disque (dictionnaire + index)Recommencer avec un nouveau bloc si la liste est pleine alors doubler la taille de la listeFusion des blocs (toujours pareil)Indexation et Recherche d'Information Indexation AvanceXavier TannierIndexation distribue

Indexation distribuePour de trs larges collections (Web)Pour viter de devoir utiliser des machines tolrantes aux fautes

Un serveur principal dirige le tout (doit tre trs sr)Il divise la tche dindexation en un ensemble de tches parallles

Il assigne chaque tche une machine libre et fonctionnelle du rseau

26Quest-ce quune tche paralllisable ?(MapReduce)Indexation et Recherche d'Information Indexation AvanceXavier Tannier

Indexation distribue : contexteLe problme :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 RIModliser la pertinence d'un documentConstruire l'architecture capable de mettre ce modle en uvre Stocker les donnes (efficacement !)Faciliter le traitement de masse de donnes27Indexation et Recherche d'Information Indexation AvanceXavier TannierIndexation dist