47
Xavier Tannier [email protected] Indexation Indexation et Recherche d'Information

Xavier Tannier [email protected] Indexation Indexation et Recherche d'Information

Embed Size (px)

Citation preview

Page 1: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Xavier [email protected]

Indexation

Indexation et Recherche d'Information

Page 2: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Rappels des épisodes précédents

Page 3: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Les acteurs de la Recherche d'Information

Utilisateur : un besoin

d'information et/ou une tâche

à accomplir

Collection : un ensemble de

documents

Les systèmes de RI doivent pouvoir traiter :

• De grandes masses d'information• En langage naturel (et créée pour

des humains)• De façon rapide et pertinente

Page 4: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'InformationXavier Tannier

Indexation

Recherche d'Information

4

Collections dynamiquesvs. statiques

Requête

Indexation(modèle de document)

Modèle derecherche Évaluation

Page 5: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Indexation : pourquoi ?

• Le parcours complet de l'ensemble des documents avec les termes d'une requête est impossible : trop de documents et temps de réponse prohibitif.

• On passe par un traitement préalable : l'indexation• Le but de l'indexation automatique : "transformer des documents

en substituts capables de représenter le contenu de ces documents" (Salton et McGill, 1983)

• Les difficultés de l'indexation sont pour beaucoup celles inhérentes à la langue des documents.

• Les index peuvent prendre plusieurs formes : mots simples, termes complexes, syntagmes, entrées de thésaurus...

5

Page 6: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'InformationXavier Tannier

Indexation

Construction de l’index : vue générale

6

TEXTERien 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 pointSitô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 ne sert de

courir il faut

partir à point

TERMES NORMALISÉS

rien sert

courir faut

partir point

DOCUMENTS INDEX

Page 7: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'InformationXavier Tannier

Indexation

Fichier inverse

7

Page 8: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Indexation : le fichier inverse

• Notion "classique" de l'index• Un fichier inverse associe des index aux documents qui les

contiennent. Chaque document possède un identifiant unique.– a d1, d2, d3, d4, d5...▸– à d1, d2, d3, d4, d5...▸– abaissa d3, d4...▸– abaissable d5▸– abandon d1, d5▸– abandonna d2▸– abasourdi d1▸– …

8

Page 9: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Construction d’un index

Page 10: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'InformationXavier Tannier

Indexation

Construction de l’index

10

Doc #1

I did enact julius

caesar I was

killed i’ the Capitol

Brutus killed me

Doc #2

So let it be

caesar The

with

hath

was

toldBrutus

ambitious

you

noble

caesar

Séquencede termes

Terme

Terme Id. Doc

Id. Doc

Page 11: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'InformationXavier Tannier

Indexation

Construction de l’index

11

Tri par termes(puis par documents)

Terme

Terme Id. Doc

Id. Doc

….. …..

Terme Id. Doc

Page 12: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'InformationXavier Tannier

Indexation

Construction de l’index

12

….. …..

Terme Id. DocTerme Fréquence Liste

Fichier inverse(dictionnaire)

En RI, "fréquence" = "nb d’occurrences"

Page 13: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'InformationXavier Tannier

Indexation

Construction de l’index

13

Terme Fréquence Liste

Questions pour plus tard

• Pourquoi conserver la fréquence ?• Comment construire cet index de

façon efficace et économe ?• Comment le conserver (mémoire,

disque, quelle structure de données) ?

• Mais pour l’instant : comment faire une requête sur cet index ?

Page 14: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Requête dans un index

Page 15: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Retrouver les documents

Brutus AND Caesar

– On recherche « Brutus » dans le dictionnaire On récupère la liste de documents

– On recherche « Caesar » dans le dictionnaire On récupère la liste de documents

– On fusionne les deux listes

15

Brutus

Caesar

Page 16: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Fusion

• Les listes de documents sont ordonnées !

• On traverse les deux listes l1 et l2 simultanément

16

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)

Brutus

Caesar

Fin !

Complexité ?

Page 17: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Fusion

Brutus AND Caesar AND Calpurnia

Comment faire la fusion de trois listes (ou plus) ?

Indice

• On a conservé dans l’index le nombre de documents contenant le terme

17

Page 18: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Fusion par sauts

• Pour éviter de parcourir des morceaux de liste inutilementPar exemple lorsque l’on fusionne un mot fréquent et un mot peu fréquent

• On ajoute des pointeurs de « saut »

18

5 21

Page 19: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Fusion par sauts

• Comment et où place-t-on les sauts ?– Plus de sauts plus de chances de sauter

des sauts plus courts– Moins de sauts moins de chances de sauter

des sauts plus longs

– En pratique, pour une liste de longueur L, on met des sauts tous les L.

19

Page 20: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Fusion par sauts

• Gain de temps pour la fusion• Mais :

– Plus de pointeurs, donc plus de place dans l’index– Si l’index est sur le disque, plus d’entrées-sorties pour le lire– Compliqué à mettre en place si l’index évolue beaucoup (L…)

20

Page 21: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Recherche de groupes de mots

21

Page 22: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Recherche de groupes de mots

• Recherche sur Nicolas Sarkozy. • On veut obtenir des textes contenant « Nicolas Sarkozy », et non

par exemple :« Nicolas Bedos après son sketch sur DSK et Carla Bruni-Sarkozy. »

• De nombreuses requêtes sont implicitement des recherches de groupes de mots, au moins en partie :« Nicolas Sarkozy » Disneyland

• Nos index inversés <terme : documents> ne suffisent plus

Page 23: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

La notion de n-gramme

• n-gramme : une sous-séquence de n éléments extraite d’une séquence donnée.Ici, n-grammes de mots

• uni-gramme : tous les mots• bi-gramme : une sous-séquence de 2 éléments• etc.

• Différent du groupe de mots d’un point de vue linguistique

23

(cf. modèles de Markov)

• Combien de bi-grammes théoriquement possibles pour m mots uniques dans un vocabulaire ?

• Combien de tri-grammes ?• Jusqu’à quelle valeur de n devrait-on aller pour couvrir

raisonnablement les besoins d’un utilisateur de moteur de recherche ?

Page 24: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Index de bi-grammes

• Indexer (en plus des mots simples) toutes les paires de termes du texte.

• On considère donc chaque bi-gramme comme un terme du dictionnaire

• Une requête sur un bi-gramme est immédiate

24

Comment éviter d’indexer toutes les paires ?

Rien ne sert de

courir il faut

partir à point

Rien ne ne sert sert de

courir il faut partir

de courir

il faut

partir à à point

Page 25: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Index de bi-grammes

• Les requêtes plus longues (n-grammes, n > 2)« pommes de terre »

et ainsi de suite pour des requêtes encore plus longues…

25

« pommes de » AND « de terre »

Risque de faux positifs, pourquoi ?

Page 26: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Index de bi-grammes

• Autre solution plus économique, on supprime les « mots vides » dans l’index et dans la requête

« pommes de terre »

• Ça ne suffit pas pour « Université Paris-Sud 11 » ou« Centre National de la Recherche Scientifique »

26

« pommes terre »

Encore un risque de faux positifs, pourquoi ?

Page 27: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Index de bi-grammes

• Conduit à des faux positifs• Dictionnaire beaucoup plus gros et index vite ingérable• Impraticable pour n > 2

• On peut utiliser des index bi-grammes dans certaines circonstances ou pour certains groupes de mots, mais ce n’est pas la solution standard pour la recherche de groupes de mots.

27

Index de positions

• si on a 200 000 termes uniques• et si on considère les n-grammes de n = 1 à 5• on obtient un dictionnaire de 3,2 × 1026 entrées !

Page 28: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Index de position

• Idée : dans les listes de documents de l’index, ajouter la position de chaque occurrence de terme dans le document.

28

terme fréquence D1 D3 D4

terme fréquence D1 : pos1, pos2, pos3

D3 : pos1, pos2

D4 : pos1, pos2, pos3

Page 29: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Index de position : parcours

« Université Paris-Sud 11 »

• Extraction des entrées du dictionnaires

• Utilisation récursive de l’algorithme de fusion, pour les documents puis pour les positions.

• Mais utiliser une comparaison incrémentale au lieu d’une égalité stricte.

29

université 1252 D2 : 546

D6 : 34, 87, 145, 243

D7 : 44, 87, 34

paris-sud 45 D2 : 547

D6 : 88, 543

11 15345 D2 : 54, 90

D6 : 89

D4 : 43

Page 30: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Recherche de proximité

• Souvent les recherches de groupes de mots sont implicites.• Même pour des recherches de mots simples, la proximité des

termes est importante.

• Cette proximité peut être demandée dans la requête…– déclaration /3 droits /3 Angleterre /3– déclaration NEAR droits Angleterre

• … mais dans la plupart des moteurs ce n’est pas le cas– déclaration droits Angleterre

30

Page 31: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Recherche de proximité

• Ici les index de n-grammes sont inutiles…• … Mais les index de position peuvent servir.

31

• Comment adapter l’algorithme de fusion linéaire pour tenir compte de la proximité des termes ?

• Comment garder cet algorithme efficace ?

Page 32: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Recherche de proximité

• La recherche de proximité est devenue indispensable pour un moteur de recherche dans les grands corpus.

• Mais un index de position augmente fortement la taille de l’index.– Une entrée par occurrence au lieu d’une entrée par document.– La taille de l’index dépend directement de la taille moyenne des documents

32

Pourquoi ?

Indices

• Une page Web moyenne contient moins de 1000 termes

• De la documentation, un livre, etc. 100 000, voire beaucoup plus

• Considérons un terme avec une fréquence de 0.1 %...

Page 33: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Index de position

• Un index de position est environ 2 à 4 fois plus grand qu’un index « sac de mots ».

• Le volume d’un index de position représente environ 35 à 50 % de celui du texte original.

• Nous verrons plus tard comment on peut compresser (un peu) cet index.

33

Rappel

• On ne parle ici que d’une certaine catégorie de langues…

Page 34: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Structures de données

34

Page 35: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Les questions à se poser

Que veut-on faire ?– Indexer

• Quoi ?– Recherche littérale– Racinisation, lemmatisation, rien ?

• Vite ?• En économisant la place ?• En facilitant la lecture de l'index ?• Un index, plusieurs index ?• Modifications fréquentes ?

– Chercher• Quoi ?• Vite ?• Souvent avec les mêmes

requêtes ?• Avec des fautes ?• Avec des expressions

régulières ?

Page 36: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Une base de données

• Vous savez faire… mais attention de bien gérer les index !• Permet d'éviter la redondance (avec des tables bien conçues)

• Manipulation parfois peu aisée et rigide• Les jointures peuvent être très longues à exécuter• Pour assurer des réponses en un temps raisonnable, la base doit

entrer en mémoire

36

Plutôt non

Page 37: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Une hashtable

• Association clé-élément ( terme-liste de documents)• Recherche très rapide (O(1))• Compliqué de gérer les variations mineures

(fautes d’orthographe, fautes de frappe)

• Pas de recherche par préfixes

37

Page 38: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Arbres binaires de recherche

38

jeu

je

jeudi

jeux

jard

jante jeu

je

jeudi

jeux

jard

jante

Dépend de l'ordre d'insertion !(au pire : liste chaînée)

Page 39: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Arbres binaires de recherche

• BST : Binary Search Tree• En RAM• Chaque nœud de l'arbre contient un mot• Chaque nœud pointe vers deux sous-arbres :

– Le sous-arbre des éléments "plus grands"– Le sous-arbre des éléments "plus petits"

• Recherche et ajout rapide• Recherche par préfixes simple• Redondance des préfixes• Plus lent : O(log M)

39

Page 40: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

B-Tree

40

a-hu

hy-m

n-z

Page 41: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Trie

• Arbre N-aire (automate à états finis déterministe)• En RAM• L'arc entre les nœuds représente l'ajout d'une lettre• Un arc sortant du nœud par lettre ajoutée• Plus de nœuds, mais moins d'information stockée• Un nœud ne contient rien, sauf l'information qu'il s'agit d'une fin de

mot

• Coûteux en RAM• Chaque préfixe est stocké une seule fois• Nombreux algorithmes possibles (recherche approximative…)

41

Page 42: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Trie

42

j

jar

je

jeux

ja

jan

jardjant

jante

jeud

jeu

jeudi

j

a e

n r

dt

e

u

d

i

x

Les nœuds sont étiquetés pour la clarté de l'illustration,

mais en pratique ils ne contiennent pas la chaîne de caractères.

Les nœuds représentant un motexistant sont "marqués".

Page 43: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Arbre des suffixes

• Suffix tree• Une structure de trie• Stockage de tous les suffixes d'un texte• Utile pour :

– La recherche de motifs– La détection de répétition

• Moins adapté pour le stockage "simple"

43

Page 44: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Arbres des suffixes

44

25

1

4

A NA

$ NA

NA$

$ NA$

• Tous les suffixes du mot BANANA• Le '$' indique la fin du mot• Le chiffre indique la position du suffixe dans le mot

3

$

0

BANANA$

Page 45: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Patricia Trie

• Un type de Trie• Remplace les listes (segments non arborescents) par des chaînes de

caractères• Les chaînes de caractères sont externes à la structure et les arcs

indiquent les offset et les longueurs dans ce tableau

• On peut stocker le tableau sur le disque, et la structure est plus petite en RAM

• Le tableau est fragmenté• Les ajouts demandent de réorganiser l'arbre

45

Page 46: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Patricia Trie

46

c

t

e

c

i t

e

c (0,1)

t (2,2)c (1,1)

e i t e

Page 47: Xavier Tannier xavier.tannier@limsi.fr Indexation Indexation et Recherche d'Information

Indexation et Recherche d'Information

IndexationXavier Tannier

Mais aussi…

• Splay Tree• Ternary Search Tree• Burst Tree• Judy Tree• String B-Tree (dynamiques et statiques)• Trie compilés• …

47