xavier tannier [email protected] indexation extraction dinformation dans les textes i
TRANSCRIPT
Rappels des épisodes précédents
Extraction d’Information dans les Textes I
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
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
Extraction d’Information dans les Textes I
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
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
Indexation et Recherche d'InformationXavier Tannier
Indexation
Fichier inverse
7
Extraction d’Information dans les Textes I
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
Construction d’un index
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
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
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"
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 ?
Requête dans un index
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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é ?
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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
Recherche de groupes de mots
21
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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 ?
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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 ?
Extraction d’Information dans les Textes I
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 ?
Extraction d’Information dans les Textes I
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 !
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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
D3 : 89
D4 : 43
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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 ?
Extraction d’Information dans les Textes I
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 %...
Extraction d’Information dans les Textes I
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…
Structures de données
34
Extraction d’Information dans les Textes I
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 ?
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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)
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
IndexationXavier Tannier
B-Tree
40
a-hu
hy-m
n-z
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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".
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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$
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
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
Extraction d’Information dans les Textes I
IndexationXavier Tannier
Mais aussi…
• Splay Tree• Ternary Search Tree• Burst Tree• Judy Tree• String B-Tree (dynamiques et statiques)• Trie compilés• …
47