Indexation et Recherche d'Information

Slides:



Advertisements
Présentations similaires
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Advertisements

LES NOMBRES PREMIERS ET COMPOSÉS
Ma surprise du Zoo.
[number 1-100].
Vocabulaire 6.2 Français II Bon voyage ! 1.
Structures de données avancées : Principales structures de fichiers
Tris.
Chap. 4 Recherche en Table
Licence pro MPCQ : Cours
Les numéros
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
Chap. 1 Structures séquentielles : listes linéaires
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Utilisation des tableaux
ORTH 1 CE2 Je sais écrire sans erreur les pluriels des noms se terminant par s, x, z.
Améliorer les performances du chiffrage à flot SYND
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
Développement d’applications web
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Écrit, animé et illustré par Sheila CartwrightTraduit par
LOGO Responsable du cours Mlle Amina GHRAB : 1 ère année IAG Institut Supérieur de Gestion de Tunis.
Les structures de données arborescentes
Synchronisation et communication entre processus
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
18/05/ Utiliser le cahier de texte en ligne avec lapplication SPIP Adresse du site du lycée :
Methode de Tri efficace
Le maitre est ici, et il te demande.
1.2 COMPOSANTES DES VECTEURS
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
Normalisation - Pondération
Bases de données lexicales
Tableaux de distributions
Tableaux de distributions
Gestion de Fichiers Arbres B.
Indexation et Recherche d'Information
LES NOMBRES PREMIERS ET COMPOSÉS
Sections sélectionnées du Chapitre 11
VOC 1 CE2 Je sais utiliser des mots de la vie quotidienne.
Logiciel gratuit à télécharger à cette adresse :
Les fichiers indexés (Les B-arbres)
Représentation des systèmes dynamiques dans l’espace d’état
Systèmes mécaniques et électriques
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Indexes à Arbres et Indexes à Hachage
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Indexes à Arbres et Indexes à Hachage
La Distribution des Données
Cours 2 Recherche d'informations Espace vectoriel des sacs de mots.
1.1 LES VECTEURS GÉOMÉTRIQUES
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Universté de la Manouba
Institut Supérieur des Etudes Technologiques de Djerba Exposé du Traitement de Données Réalisé par: Khalifa Marwa Magroun Amira Jawadi Souad L2MDW.
LES PILES ET FILES.
Exercice de vérification 1 p
Jean de la Fontaine UMP Présidentielle 2017 Récitant: Fernandel Le lièvre et la tortue Par Nanou et Stan.
1.
1 Formation à l’usage éco-performant de votre pc 1 ère Partie.
Introduction à SolidWorks
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Arbres binaires et tables de hachage
GF-11: Tri Interne Efficace et Tri Externe
Structures de données avancées : Principales structures de fichiers
Transcription de la présentation:

Indexation et Recherche d'Information

Rappels des épisodes précédents

Les acteurs de la Recherche d'Information 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 Utilisateur : un besoin d'information et/ou une tâche à accomplir

Recherche d'Information Indexation (modèle de document) Collections dynamiques vs. statiques Modèle de recherche Évaluation Requête

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...

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

Fichier inverse

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 …

Construction d’un index

Construction de l’index Terme Id. Doc Doc #1 I did enact julius caesar I was killed i’ the Capitol Séquence de termes Brutus killed me Doc #2 So let it be with caesar The noble Brutus hath told you caesar was ambitious

Construction de l’index ….. Terme Id. Doc Terme Id. Doc Tri par termes (puis par documents)

Construction de l’index Terme Fréquence Liste ….. Terme Id. Doc Fichier inverse (dictionnaire) En RI, "fréquence" = "nb d’occurrences"

Construction de l’index 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

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 fusionne les deux listes Brutus Caesar

Fusion Complexité ? Les listes de documents sont ordonnées ! 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 id2 = suivant(l2) Les listes de documents sont ordonnées ! On traverse les deux listes l1 et l2 simultanément Complexité ? Brutus Fin ! Caesar

Comment faire la fusion de trois listes (ou plus) ? 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

Fusion par sauts Pour éviter de parcourir des morceaux de liste inutilement Par exemple lorsque l’on fusionne un mot fréquent et un mot peu fréquent On ajoute des pointeurs de « saut » 5 21

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.

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…)

Recherche de groupes de mots

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

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 (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 ?

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 Rien ne sert de Rien ne ne sert sert de de courir courir il faut courir il il faut faut partir partir à point partir à à point Comment éviter d’indexer toutes les paires ?

Index de bi-grammes  « pommes de » AND « de terre » Les requêtes plus longues (n-grammes, n > 2) « pommes de terre » et ainsi de suite pour des requêtes encore plus longues…  « pommes de » AND « de terre » Risque de faux positifs, pourquoi ?

Index de bi-grammes  « pommes terre » 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 »  « pommes terre » Encore un risque de faux positifs, pourquoi ?

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. 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 !  Index de positions

Index de position Idée : dans les listes de documents de l’index, ajouter la position de chaque occurrence de terme dans le document. terme fréquence  D1 D3 D4 terme fréquence  D1 : pos1, pos2, pos3 D3 : pos1, pos2 D4 : pos1, pos2, pos3

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. 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

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

Recherche de proximité Ici les index de n-grammes sont inutiles… … Mais les index de position peuvent servir. Comment adapter l’algorithme de fusion linéaire pour tenir compte de la proximité des termes ? Comment garder cet algorithme efficace ?

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 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 %...

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. Rappel On ne parle ici que d’une certaine catégorie de langues…

Structures de données

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 ?

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 Plutôt non

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

Arbres binaires de recherche jeu jard jard jeudi jante je jante je jeux jeu jeudi Dépend de l'ordre d'insertion ! jeux (au pire : liste chaînée)

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)

B-Tree a-hu n-z hy-m

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…)

Les nœuds représentant un mot Trie j j a e Les nœuds représentant un mot existant sont "marqués". ja je n r u jan jar jeu t d d x jant jard jeud jeux 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. e i jante jeudi

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"

Arbres des suffixes Tous les suffixes du mot BANANA $ NA $ NA$ 5 4 2 $ NA$ 3 1 Tous les suffixes du mot BANANA Le '$' indique la fin du mot Le chiffre indique la position du suffixe dans le mot

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

Patricia Trie c c (0,1) e c (1,1) t (2,2) c t i t e i t e

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