structure de données en text miningrozenknop/cours/micr_rei/seance5/... · structure de donn ees...

111
Structure de donn´ ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine () Structure de donn´ ees en Text Mining 29 mai 2008 1 / 110

Upload: others

Post on 23-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Structure de donnees en Text Mining

Julien Lemoine

29 mai 2008

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 1 / 110

Page 2: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 2 / 110

Page 3: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

Usage

Structure de donnees: liee a un/des algorithme(s)

Type de structure de donnees

Structures generalistes (Tableaux, Tables de hashages, arbres derecherches binaires, ...)

Chaque domaine a des structures de donnees specifiques:par exemple les transducteurs en NLP

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 3 / 110

Page 4: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Structures utilisees dans notre domaine

Dictionnaires

Dans notre metier: 99% des structures sont des dictionnaires

Objectif: associer une valeur Y a chaque cle X

Exemples:

dictionnaire de motsdictionnaire de n-gramsdictionnaire associant des meta-donnees a une urldictionnaire associant des co-occurrences a un mot· · ·

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 4 / 110

Page 5: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Structures utilisees dans notre domaine

Algorithmes

Les algorithmes appliques sur ces structures de donnees sont souventplus complexes qu’une simple recherche exacte

Par exemple:

recherche via une expression reguliererecherche approximative (trouver l’orthographe la plus proche)recherche par prefixe(trouver toutes les urls d’un site dans undictionnaire d’urls)...

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 5 / 110

Page 6: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Les bonnes questions

Comment choisir la bonne structure:

Structures de donnees dynamiques ou statiques: ajout/suppression devaleurs a quelle frequence ?

RAM ou Disque: nombres d’elements ?

Quels algorithmes vont utiliser cette structure ?

Performances ? Nombres d’acces a la seconde

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 6 / 110

Page 7: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple d’algorithme

Correction orthographique (1/2)

Idee: comparer deux mots a l’aide d’une distance pour savoir si ils sontproches ou pas (distance d’edition):

Distance de Levenshtein : compter le plus petit nombre desuppression, insertion, substitution

Distance de Damerau-Levenshtein : compter le plus petit nombre desuppression, insertion, substitution, transposition

possibilite de donner des poids differents entre la suppression,l’insertion, la substitution et la transposition (par default tous a 1)

selon les travaux de Damerau (1964), 80% des erreurs d’orthographesont corrigees avec une de ces 4 corrections

aussi largement utilise en genetique pour comparer les sequencesd’ADN

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 7 / 110

Page 8: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple d’algorithme

Correction orthographique (2/2)

Il s’agit de la base statistique de tout algorithme de correction a laquelleon ajoute :

Prise en compte de la frequence des mots

Phonetisation des mots (par exemple eviter que “andore” soit corrigeen “andre (andre)” plutot que “andorre” alors que la distance est lameme)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 8 / 110

Page 9: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Correction orthographique

Exemples

Dlevenshtein(bojnour , bonjour) = 2 (2 substitutions)

Ddamerau−levenshtein(bonjnour , bonjour) = 1 (1 transposition)

Dlevenshtein(alseimer , alzheimer) = 2 (1 substitution + 1 insertion)

Ddamerau−levenshtein(alseimer , alzheimer) = 2 (1 substitution + 1ajout)

Dlevenshtein(bonjjour , bonjour) = 1 (1 suppression)

Dlevenshtein(dijstra, dijkstra) = 1 (1 insertion)

...

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 9 / 110

Page 10: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Correction orthographique

Implementation classique

Comparaison entre deux mots

Application d’un algorithme rapide (programmation dynamique) pourcomparer deux mots (disponible dans tous les langages deprogrammation)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 10 / 110

Page 11: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Programmation dynamique (Damerau-Levenshtein)

uint compute(char mot1[1..tailleMot1], char mot2[1..tailleMot2])uint d[0..tailleMot1, 0..tailleMot2], i, j, distPour (i = 0, i ≤ tailleMot1, ++i) d[i, 0] = iPour (j = 1, j ≤ tailleMot2, ++j) d[0, j] = j

Pour (i = 1, i ≤ tailleMot1, ++i)Pour (j = 1 j ≤ tailleMot2, ++j)

Si (mot1[i] = mot2[j] alors dist = 0 sinon dist = 1d[i, j] = min(d[i-1, j ] + 1, // suppression

d[i , j-1] + 1, //insertiond[i-1, j-1] + dist) //substitution

Si (i > 1 et j > 1 et mot1[i] = mot2[j-1] et mot1[i-1] = mot2[j]) alorsd[i, j] = min(d[i, j], d[i-2, j-2] + dist) //transposition

retourne d[tailleMot1, tailleMot2]

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 11 / 110

Page 12: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple

Comparer le mot “crise” avec le mot “kries”

Initialisation, d =

0 1 2 3 4 5

0 0 1 2 3 4 51 12 23 34 45 5

Voir cette initialisation comme :

d[0, i] = comparaison de la chaıne de caracteres “kries” avec unechaıne de caracteres ayant i caracteres en moins. Ex: d(“kries”, “kr”)= 3d[i, 0] = comparaison de la chaıne de caracteres “crise” avec une chaınede caracteres ayant i caracteres en moins. Ex: d(“crise”, “c”) = 4

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 12 / 110

Page 13: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 1, j = 1

Objectif: remplir la case d[1, 1] (“crise”, “kries”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “kries”, il faut donc maintenantcomparer “ries” avec “crise”. distance = d[0, 1] + 1 = 2. d[0, 1] car“ries” a uniquement quatre lettresinserer une lettre devant le mot “kries”, il faut donc maintenantcomparer “kries” avec “rise”, distance = d[1, 0] + 1 = 2. d[1, 0] car“rise” a uniquement quatre lettressubstituer la lettre “k” par “c”, il faut donc maintenant comparer“ries” avec “rise”, distance = d[0, 0] + 1 = 1transposition: pas encore possible

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 13 / 110

Page 14: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [1, 1] = min(d [0, 1] + 1, d [1, 0] + 1, d [0, 0] + 1) = 1

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 12 23 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 14 / 110

Page 15: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 1, j = 2

Objectif: remplir la case d[1, 2] (“crise”, “ries”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “ries”, il faut donc maintenantcomparer “ies” avec “crise”. distance = d[0, 2] + 1 = 3inserer une lettre devant le mot “ries”, il faut donc maintenantcomparer “ries” avec “rise”, distance = d[1, 1] + 1 = 2substituer la lettre “r” par “c”, il faut donc maintenant comparer “ies”avec “rise”, distance = d[0, 1] + 1 = 2transposition: pas encore possible

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 15 / 110

Page 16: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [1, 2] = min(d [0, 2] + 1, d [1, 1] + 1, d [0, 1] + 1) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 22 23 34 44 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 16 / 110

Page 17: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 1, j = 3

Objectif: remplir la case d[1, 3] (“crise”, “ies”)

d [1, 3] = min(d [1, 2] + 1, d [0, 3] + 1, d [0, 2] + 1) = 3

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 32 23 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 17 / 110

Page 18: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 1, j = 4

Objectif: remplir la case d[1, 4] (“crise”, “es”)

d [1, 4] = min(d [1, 3] + 1, d [0, 4] + 1, d [0, 3] + 1) = 4

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 42 23 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 18 / 110

Page 19: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 1, j = 5

Objectif: remplir la case d[1, 5] (“crise”, “s”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “s”, il faut donc maintenantcomparer “” avec “crise”. distance = d[0, 5] + 1 = 6inserer une lettre devant le mot “s”, il faut donc maintenant comparer“s” avec “rise”, distance = d[1, 4] + 1 = 5substituer la lettre “s” par “c”, il faut donc maintenant comparer “”avec “rise”, distance = d[0, 4] + 1 = 5transposition: pas encore possible

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 19 / 110

Page 20: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [1, 5] = min(d [0, 5] + 1, d [1, 4] + 1, d [0, 4] + 1) = 5

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 23 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 20 / 110

Page 21: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 2, j = 1

Objectif: remplir la case d[2, 1] (“rise”, “kries”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “kries”, il faut donc maintenantcomparer “ries” avec “rise”. distance = d[1, 1] + 1 = 2inserer une lettre devant le mot “kries”, il faut donc maintenantcomparer “kries” avec “ise”, distance = d[2, 0] + 1 = 3substituer la lettre “k” par “r”, il faut donc maintenant comparer“ries” avec “ise”, distance = d[1, 0] + 1 = 2transposition: pas encore possible

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 21 / 110

Page 22: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [2, 1] = min(d [1, 1] + 1, d [2, 0] + 1, d [1, 0] + 1) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 23 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 22 / 110

Page 23: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 2, j = 2

Objectif: remplir la case d[2, 2] (“rise”, “ries”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “ries”, il faut donc maintenantcomparer “ies” avec “rise”. distance = d[1, 2] + 1 = 3inserer une lettre devant le mot “ries”, il faut donc maintenantcomparer “ries” avec “ise”, distance = d[2, 1] + 1 = 3substituer la lettre “r” par “r”, il faut donc maintenant comparer “ies”avec “ise”, distance = d[1, 1] + 0 = 1transposition: tester le matche de “rkise” avec “crise” (pas possible)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 23 / 110

Page 24: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [2, 2] = min(d [1, 2] + 1, d [2, 1] + 1, d [1, 1]) = 1

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 13 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 24 / 110

Page 25: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 2, j = 3

Objectif: remplir la case d[2, 3] (“rise”, “ies”)

d [2, 3] = min(d [1, 3] + 1, d [2, 2] + 1, d [1, 2] + 1) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 23 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 25 / 110

Page 26: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 2, j = 4

Objectif: remplir la case d[2, 4] (“rise”, “es”)

d [2, 4] = min(d [1, 4] + 1, d [2, 3] + 1, d [1, 3] + 1) = 3

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 33 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 26 / 110

Page 27: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 2, j = 5

Objectif: remplir la case d[2, 5] (“rise”, “s”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “s”, il faut donc maintenantcomparer “” avec “rise”. distance = d[1, 5] + 1 = 6inserer une lettre devant le mot “s”, il faut donc maintenant comparer“s” avec “ise”, distance = d[2, 4] + 1 = 4substituer la lettre “s” par “r”, il faut donc maintenant comparer “”avec “ise”, distance = d[1, 4] + 1 = 5transposition: tester le matche de “se” avec “crise” (pas possible)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 27 / 110

Page 28: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [2, 5] = min(d [1, 5] + 1, d [2, 4] + 1, d [1, 4] + 1) = 4

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 28 / 110

Page 29: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 3, j = 1

Objectif: remplir la case d[3, 1] (“ise”, “kries”)

d [3, 1] = min(d [2, 1] + 1, d [3, 0] + 1, d [2, 0] + 1) = 3

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 29 / 110

Page 30: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 3, j = 2

Objectif: remplir la case d[3, 2] (“ise”, “ries”)

d [3, 2] = min(d [2, 2] + 1, d [3, 1] + 1, d [2, 1] + 1) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 24 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 30 / 110

Page 31: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 3, j = 3

Objectif: remplir la case d[3, 3] (“ise”, “ies”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “ies”, il faut donc maintenantcomparer “es” avec “ise”. distance = d[2, 3] + 1 = 3inserer une lettre devant le mot “ies”, il faut donc maintenantcomparer “ies” avec “se”, distance = d[3, 2] + 1 = 3substituer la lettre “i” par “i”, il faut donc maintenant comparer “se”avec “es”, distance = d[2, 2] + 0 = 1transposition: tester le matche de “ires” avec “rise” (pas possible)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 31 / 110

Page 32: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [3, 3] = min(d [2, 3] + 1, d [3, 2] + 1, d [2, 2]) = 1

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 14 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 32 / 110

Page 33: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 3, j = 4

Objectif: remplir la case d[3, 4] (“ise”, “es”)

d [3, 4] = min(d [2, 4] + 1, d [3, 3] + 1, d [2, 3] + 1) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 24 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 33 / 110

Page 34: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 3, j = 5

Objectif: remplir la case d[3, 2] (“ise”, “s”)

d [3, 5] = min(d [2, 5] + 1, d [3, 4] + 1, d [2, 4] + 1) = 3

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 34 / 110

Page 35: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 4, j = 1

Objectif: remplir la case d[4, 1] (“se”, “kries”)

d [4, 1] = min(d [3, 1] + 1, d [4, 0] + 1, d [3, 0] + 1) = 4

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 45 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 35 / 110

Page 36: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 4, j = 2

Objectif: remplir la case d[4, 2] (“se”, “ries”)

d [4, 2] = min(d [3, 2] + 1, d [4, 1] + 1, d [3, 1] + 1) = 3

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 35 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 36 / 110

Page 37: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 4, j = 3

Objectif: remplir la case d[4, 3] (“se”, “ies”)

d [4, 3] = min(d [3, 3] + 1, d [4, 2] + 1, d [3, 2] + 1) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 3 25 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 37 / 110

Page 38: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 4, j = 4

Objectif: remplir la case d[4, 4] (“se”, “es”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “es”, il faut donc maintenantcomparer “s” avec “se”. distance = d[3, 4] + 1 = 3inserer une lettre devant le mot “es”, il faut donc maintenant comparer“es” avec “e”, distance = d[4, 3] + 1 = 3substituer la lettre “e” par “s”, il faut donc maintenant comparer “e”avec “s”, distance = d[3, 3] + 1 = 2transposition: tester le matche de “eis” avec “ise” (pas possible)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 38 / 110

Page 39: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [4, 4] = min(d [3, 4] + 1, d [4, 3] + 1, d [3, 3] + 1) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 3 2 25 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 39 / 110

Page 40: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 4, j = 5

Objectif: remplir la case d[4, 5] (“se”, “s”)

d [4, 5] = min(d [3, 5] + 1, d [4, 4] + 1, d [3, 4] + 1) = 3

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 3 2 2 35 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 40 / 110

Page 41: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 5, j = 1

Objectif: remplir la case d[5, 1] (“e”, “kries”)

d [5, 1] = min(d [4, 1] + 1, d [5, 0] + 1, d [4, 0] + 1) = 5

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 3 2 2 35 5 5

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 41 / 110

Page 42: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 5, j = 2

Objectif: remplir la case d[5, 2] (“e”, “ries”)

d [5, 2] = min(d [4, 2] + 1, d [5, 1] + 1, d [4, 1] + 1) = 4

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 3 2 2 35 5 5 4

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 42 / 110

Page 43: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 5, j = 3

Objectif: remplir la case d[5, 3] (“e”, “ies”)

d [5, 3] = min(d [4, 3] + 1, d [5, 2] + 1, d [4, 2] + 1) = 3

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 3 2 2 35 5 5 4 3

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 43 / 110

Page 44: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 5, j = 4

Objectif: remplir la case d[5, 4] (“e”, “es”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “es”, il faut donc maintenantcomparer “s” avec “e”. distance = d[4, 4] + 1 = 3inserer une lettre devant le mot “es”, il faut donc maintenant comparer“es” avec “”, distance = d[5, 3] + 1 = 4substituer la lettre “e” par “e”, il faut donc maintenant comparer “s”avec “”, distance = d[4, 3] + 0 = 2transposition: tester le matche de “eis” avec “se” (pas possible)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 44 / 110

Page 45: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [5, 4] = min(d [4, 4] + 1, d [5, 3] + 1, d [4, 3]) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 3 2 2 35 5 5 4 3 2

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 45 / 110

Page 46: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Exemple, i = 5, j = 5

Objectif: remplir la case d[5, 5] (“e”, “s”)

Prendre le min de plusieurs cas :

supprimer la premiere lettre du mot “s”, il faut donc maintenantcomparer “” avec “e”. distance = d[4, 5] + 1 = 4inserer une lettre devant le mot “s”, il faut donc maintenant comparer“s” avec “”, distance = d[5, 4] + 1 = 3substituer la lettre “s” par “e”, il n’y a plus rien a comparer ensuite.distance = d[4, 4] + 1 = 3transposition: tester le matche de “es” avec “se” (possible). distance= d[3, 3] + 1 = 2

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 46 / 110

Page 47: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Resultat

d [5, 5] = min(d [4, 5] + 1, d [5, 4] + 1, d [4, 4] + 1, d [3, 3] + 1) = 2

d =

0 1 2 3 4 5

0 0 1 2 3 4 51 1 1 2 3 4 52 2 2 1 2 3 43 3 3 2 1 2 34 4 4 3 2 2 35 5 5 4 3 2 2

Donc distance(“kries ′′, “crise ′′) = d [5, 5] = 2

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 47 / 110

Page 48: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Comparaison de deux mots

Conclusion

Algorithme rapide pour comparer deux mots: O(n×m), n = taille dumot1 et m = taille du mot2

La complexite ne depend pas de la distance recherchee

En pratique, le besoin est plutot de chercher le mot ayant la pluspetite distance avec le mot requete dans un grand dictionnaire

Il n’est pas envisagable de calculer la distance avec tous les mots dudictionnaire

Il faut donc une structure de donnees permetant d’obtenir le mot leplus proche rapidement.

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 48 / 110

Page 49: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 49 / 110

Page 50: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Principe

Definition

Soit T un tableau de n elements (n ∈ P)

On calcule une fonction de hashage (h) de chaque cle k a ajouter, lavaleur de la fonction de hashage donne la position dans le tableau

Il y a des collisions possibles: deux cles differentes k1 et k2 peuventavoir la meme position: h(k1) = h(k2)

Gestion des collisions a l’exterieur du tableau (chaınage) ou al’interieur(adressage ouvert)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 50 / 110

Page 51: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Les collisions (1/2)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 51 / 110

Page 52: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Les collisions (2/2)

Resolution par chaınage

Solution la plus efficace en NLP [3]

On stocke les collisions dans une liste chaınee

On stocke les elements les plus frequemments utilises en tete de liste

Resolution par adressage ouvert

De nombreuses methodes : i = 0, 1, ..., n − 1 = numero du sondage

Sondage lineaire : h(k , i) = (h′(k) + i)modn

Sondage quadratique: h(k, i) = (h′(k) + c1i + c2i2)modn, c1, c2 6= 0

Double hashage : h(k, i) = (h1(k) + ih2(k))modn

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 52 / 110

Page 53: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Birthday paradox

Definition

En probabilite: le Birthday paradox est un cas particulier de collision(generalisable)

Soit un groupe de N personnes choisies aleatoirement

Quelle est la probabilite qu’au moins deux personnes aient leuranniversaire le meme jour ?

Pour 23 personnes, la probabilite est de plus de 50%

Pour 57 personnes, la probabilite est de plus de 99%

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 53 / 110

Page 54: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Birthday paradox

Definition

En probabilite: le Birthday paradox est un cas particulier de collision(generalisable)

Soit un groupe de N personnes choisies aleatoirement

Quelle est la probabilite qu’au moins deux personnes aient leuranniversaire le meme jour ?

Pour 23 personnes, la probabilite est de plus de 50%

Pour 57 personnes, la probabilite est de plus de 99%

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 53 / 110

Page 55: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Birthday paradox

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 54 / 110

Page 56: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Tables de hashages: Caracteristiques

Complexite de la recherche/ajout

en moyenne en O(1)

dans le pire des cas en O(N)

Avantages

facon simple pour representer un ensemble (sans repetition des cles)

Bonnes performances moyennes

Inconvenients

Pas de compression des cles

Pas d’ordre sur les cles, donc

pas de tri possiblepas d’algorithme autre que get(key)pour faire une recherche via une distance d’edition, il faut enumerer lecontenu de la table de hashage

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 55 / 110

Page 57: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 56 / 110

Page 58: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

Presentation

BST: Binary Search Tree

chaque noeud pi contient une cle ki de taille variable

Beaucoup de prefixes dupliques

Pire des cas: liste chaınee

Utiliser un AVL ou un Red-Back-Tree : reequilibrage en O(log(N))

Temps de recherche/ajout en O(log(N)× |w | ou |w | est le nombre delettre du mot a rechercher

Conclusion

BST pas adapte pour stocker un dictionnaire

pour faire une recherche via une distance d’edition, il faut enumerer lecontenu complet de l’arbre

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 57 / 110

Page 59: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple

Figure: Exemple de BST avec les cles ”le”, ”la”, ”les”, ”lit”, ”lot”, ”luc”

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 58 / 110

Page 60: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 59 / 110

Page 61: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

Principe

Daniel D. & Tarjan, Robert E. (1985),

Meme principe qu’un arbre binaire de recherche equilibree

Les noeuds recemment utilises remontent dans l’arbre (chaque lookupplace l’element recherche a la racine) : operation de splaying

Peut-etre vu comme un cache

Plus adapte qu’un AVL/RBT pour le texte mais toujours unecomplexite de O(log(N)× |w |) dans le pire des cas

Pour faire une recherche via une distance d’edition, il faut toujoursenumerer le contenu complet de l’arbre

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 60 / 110

Page 62: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 61 / 110

Page 63: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: Introduction

Principe

1959/1960: R. de la Briandais and E. Fredkin

Arbre N-aire adapte a la representation du texte (Automate a etatsfinis deterministe)

Soit A un aphabet et |A| le nombre de symboles de cet alphabet.

Chaque noeud contient entre 0 et |A| fils dont la transition estetiquetee par un symbole de AChaque prefixe est stocke une seule fois

Plusieurs manieres de stocker les pointeurs vers les noeuds fils

sous forme de tableau de pointeurs (contient |A| pointeurs). Occupeenormement de memoire, mais offre un acces en O(1) aux noeuds filssous forme de liste chaıneesous forme de table de hashage...

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 62 / 110

Page 64: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple de Trie

Figure: Exemple de Trie avec les cles/valeurs ”to”/7, ”tea”/3, ”ten”/12, ”i”/11,”in”/5, et ”inn”/9

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 63 / 110

Page 65: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Caracteristiques (1/2)

Complexite

Avec un tableau acces direct : Ajout/Recherche en O(|w |) ou |w | estle nombre de lettre du mot a rechercher

Avec liste chaınee : Ajout/Recherche en O(|A| × |w |)Bien faire la difference avec un arbre binaire de recherche (chaquenoeud contient une cle complete : O(|w | × log(N)) ou N est lenombre d’elements dans l’arbre

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 64 / 110

Page 66: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: algorithmes

Questions

Une recherche prefixe est-elle possible ? simple ?

Une recherche approximative est-elle possible ?

Si un noeud est a une distance > seuil, Que penser de ses noeuds fils ?

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 65 / 110

Page 67: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: recherche approximative

Algorithme

int distance(noeud, char mot[1..tailleMot], float dist)Si (dist > maxDist) alors retourne distint res = -1, mdist = -1;Si (noeudFinal(noeud)) alors res = tailleMotSi (dist + 1 < maxDist) alors

int suppression = distance(noeud, mot[2..tailleMot], dist + 1))res = min(res, suppression)Pour (ni ∈ successeur(noeud))

Si (tailleMot > 0 et char(ni) == mot[1]) mdist = 0 sinon mdist = 1int substitution = distance(ni, mot[2..tailleMot], dist + mdist)int insertion = distance(ni, mot[1..tailleMot], dist + 1)res = min(res, substitution, insertion)

retourne res

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 66 / 110

Page 68: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: exemple de recherche approximative

recherche de “cecci” avec distance maximale de 1

Figure: Initialisation

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 67 / 110

Page 69: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: exemple de recherche approximative

recherche de “cecci” avec distance maximale de 1

Figure: Application des 3 transformations sur la racine

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 68 / 110

Page 70: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: exemple de recherche approximative

recherche de “cecci” avec distance maximale de 1

Figure: elimination des distances > 0 et applications des 3 transformations

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 69 / 110

Page 71: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: exemple de recherche approximative

recherche de “cecci” avec distance maximale de 1

Figure: elimination des distances > 0 et applications des 3 transformations

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 70 / 110

Page 72: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: exemple de recherche approximative

recherche de “cecci” avec distance maximale de 1

Figure: elimination des distances > 0 et applications des 3 transformations

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 71 / 110

Page 73: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: exemple de recherche approximative

recherche de “cecci” avec distance maximale de 1

Figure: Resultat

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 72 / 110

Page 74: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie: Caracteristiques (2/2)

Avantages

Compression prefixe : taille en O(N) dans le pire des cas

Implementation simple

Trie par construction

Enumeration prefixe triviale

Nombreux algorithmes possibles : par exemple rechercheapproximative

Inconvenient

Couteux en RAM pour la version a acces direct ou lent pour laversion avec liste chainee

Cout de stockage des pointeurs importants

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 73 / 110

Page 75: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Suffix Tree

Definition

Un arbre suffixe utilise une structure de type Trie pour stocker tousles suffixes des cles

Utilise pour pre-calculer certaines expressions regulieres

Pour une cle de taille k, on ajoute k elements dans l’arbre suffixe

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 74 / 110

Page 76: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple d’arbre suffixe

Figure: Exemple d’arbre suffixe pour la cle “BANANA”

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 75 / 110

Page 77: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Patricia Trie: Introduction

Patricia Trie, radix tree ou crit bit tree (Pat Tree quand il contientdes suffixes)

Est un type de Trie

Remplace les listes dans l’arbre par des chaınes de caracteres(economie de pointeurs)

Reduit enormement la consommation RAM sans changer lesperformances

Les strings sont externes a la structure (dans un tableau). Lestransitions contiennent des offset/length dans ce tableau

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 76 / 110

Page 78: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Patricia Trie: Exemple

Figure: Exemple de transformation d’un Trie en Patricia Trie avec les cles ”ceci”et ”cette”

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 77 / 110

Page 79: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Patricia Trie

Avantages

On peut stocker le tableau sur disque et la structure en RAM

On peut controler le nombre de lecture dans le tableau (nombre d’I/Olorsque le vecteur est sur disque)

Si le vecteur est sur disque, on a O(1) acces disques

Inconvenients

Fragmentation du tableau

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 78 / 110

Page 80: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 79 / 110

Page 81: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

Jon Bentley et Robert Sedgewick, 1998

Arbre ternaire (trois fils : fl , fs , fr )

Melange entre un arbre binaire de recherche et un Trie

un symbole p de A comme etiquette de chaque noeud

le fils a gauche fl signifie < p

le fils a droite fr signifie > p

le fils du milieu fs signifie = p

la meme compression que le Patricia Trie est possible

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 80 / 110

Page 82: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple de TST

Figure: Exemple de TST avec les cles ”le”, ”la”, ”les”, ”lit”, ”lot”, ”luc”

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 81 / 110

Page 83: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Caracteristiques

Complexite

Ajout/Recherche en O(log(|(A)|)× |w |) ou |w | est le nombre de lettres dumot a rechercher

Avantages/Inconvenient

Les memes que le Patricia Trie

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 82 / 110

Page 84: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 83 / 110

Page 85: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

Steffen Heinz, Justin Zobel, Hugh E. Williams (2002)

Principe:

Les noeuds (non feuilles) sont stockes en utilisant un Trie (base sur untableau de pointeurs)Les feuilles sont stockees en utilisant une structure classique (le plussouvent un arbre binaire de recherche)

Bien adapte pour stocker de nombreuses cles / valeurs

Decision pour un noeud d’etre sous forme pleine (tableau) oucreuse(BST) a partir d’une heuristique

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 84 / 110

Page 86: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple de Burst Tree

Figure: Exemple de Burst Tree avec les cles ”car”, ”came”, ”cat”, ”cave”,”cyan”, ”cy”, ”we”, ”were”, ”went”, ”west”

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 85 / 110

Page 87: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 86 / 110

Page 88: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

Definition

Alan Silverstein (HP, 2002)

Un Judy Array est un type de Trie

Arite = 256

Un judy Array possede trois types de noeuds :

Liste de pointeurs (linear)vecteur de bit : 256 bits + 8 listes chaınees de 32 pointeurs maximum(bitmap)vecteur de 256 pointeurs (uncompressed)

structure complexe a implementer (changement de type de noeud)

Heuristiques pour determiner le bon type de noeud

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 87 / 110

Page 89: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 88 / 110

Page 90: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

B-Tree classique

B-Tree: possible de stocker des cles a taille variable

noeuds contiennent des indices dans un tableau sur disque

Il faut O(log(B)) acces disque par noeud !

String B-Tree

Paolo Ferragina, Roberto Grossi (1999)

Adapte le concept du B-Tree pour des cles de tailles variables

Idee: chaque noeud organise les B cles sous forme de Patricie Trie

Imaginer le matching du noeud racine sous forme de Patricia Trie,que se passe-t’il dans les cas suivants :

Nous sommes sur une feuileIl n’y a pas de match dans le patricia trie

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 89 / 110

Page 91: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Patricia Trie: operateur <=

Principe

Soit un noeud intermediaire n et ses B noeuds ni , i ∈ 0, .., B − 1associes.

Pour chaque noeud ni , on extrait la cle la plus grande et on la stockedans le noeud n avec le pointeur (RAM ou disque vers le noeud ni )

Il faut donc implementer un match <= dans les Patricia Trie !

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 90 / 110

Page 92: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple de Patricia Trie dans un String B-Tree

Figure: Exemple noeud intermediaire d’un String B-Tree contenant trois fils.Comment faire la recherche ceux ?

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 91 / 110

Page 93: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

String B-Tree

Utilisation generale

Utilise trois niveaux, les deux premiers en RAM

Le dernier sur disque

1 recherche = un acces disque

1 ajout = deux acces disque (une lecture + une ecriture)

Ex: 1 milliard de mots: 200M en RAM + 10G sur disque

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 92 / 110

Page 94: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

String B-Tree

Avantages

Permet de stocker de tres gros volume de cles/valeurs (> 1 milliard)

Permet de controler finement le nombre d’acces disque par recherche

Garde la structure hierarchique (ex: iterateur prefixe possible)

Bon compromis RAM/Disque

Inconvenients

Il faut toujours un acces disque, meme quand l’element n’existe pas

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 93 / 110

Page 95: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Bloom Filter

Presentation

Burton H. Bloom (1970)

Structure probabiliste qui stocke l’information la cle est peut-etre/pasdans la structure sur n bits

Au debut tous les bits sont a 0

On definit k fonctions de hashage donnant un resultat dans [0, n − 1]

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 94 / 110

Page 96: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Bloom Filter

Principe

Ajout: pour la cle c, on calcule la valeur des k fonctions de hashageet on met les bits hi (c), i ∈ [0..k − 1] a 1

Recherche: pour la cle c , on calcule la valeur des k fonctions dehashage :

Si tous les bits hi (c) sont a 1, alors la cle est peut-etre ajouteeSi un des bit hi (c) est a 0, alors la cle n’a pas ete ajoutee

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 95 / 110

Page 97: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Bloom Filter

Quelques chiffres

77% de reponses correctes avec 2 bits par cle

90% de reponses correctes avec 3.4 bits par cle

99% de reponses correctes avec 9.6 bits par cle

Cette structure ajoutee devant un String B-Tree permet de supprimerl’IO quand la cle n’existe pas dans 90% des cas avec juste 3.4 bits parcle

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 96 / 110

Page 98: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

table de hashage parfaites

Principe

Calculer une fonction de hashage parfaite (sans collision) pour chaqueelements (ex: gperf)

Long a calculer pour les gros ensemble, impossibilite d’appliquer unalgorithme special

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 97 / 110

Page 99: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 98 / 110

Page 100: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

Definition

Objectif: serialiser le Patricia Trie dans un tableau binaire et realiserun interpreteur

Principe: transformer les noeuds successeurs en tableau de paires(char, offset) : recherche dichotomique

deux implementations possibles:

ecriture bit par bit (compression efficace mais complexe)ecriture octet par octet (compression moins efficace), ecriture desoffset en taille variable (base 128)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 99 / 110

Page 101: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Trie Compile

Caracteristiques

Environ 10x plus econome en RAM que la version dynamique

Plus efficace (localite: cache CPU). Environ 4 millions de lookup parsecondes

Exemple: 45 millions de N-gram francais (Cle = n-gram, valeur =frequence), Taille: 300 MO, seulement 6.6 octets par cle/valeur

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 100 / 110

Page 102: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Suggest

Caracteristiques

Objectif: commencer a tapper un prefixe et suggerer les meilleursentrees du dictionnaire commencant par ce prefixe.

Quelle structure de donnees utiliser ?

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 101 / 110

Page 103: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Suggest

Caracteristiques

Trie compile particulier

permet de resoudre efficacement des requetes prefixes

Idee: avoir une table de pre-calcul dans chaque noeud

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 102 / 110

Page 104: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Exemple de Suggest

Figure: Exemple de suggest sur les titres Wikipedia (Score = frequence)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 103 / 110

Page 105: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Plan

1 Introduction

2 Les structures dynamiques (RAM)Table de HashageArbres binaires de rechercheSplay TreeTrie, Suffix Tree et Patricia TrieTST: Ternary Search TreeBurst TreeJudy Array

3 Les structures dynamiques (Disque)String B-Tree

4 Les structures statiques (RAM)Trie compile

5 Les structures statiques (Disque)String B-Tree statique

6 Conclusion / References

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 104 / 110

Page 106: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Introduction

Principe

Meme principe que la structure dynamique, mais :

on utilise toujours trois niveaux, les deux premiers en RAM et le derniersur disqueon utilise des Trie Compiles pour representer les noeuds (meilleurcompression)On peut controler le nombre de cles/valeurs dans chaque feuille (oncontrole la taille de l’acces disque en plus du nombre !)On peut construire la structure avec tres peu de RAM (a peine 10 MO)

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 105 / 110

Page 107: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

String B-Tree statique

Algorithme de construction (1/2)

Soit K l’ensemble des cles triees a ajouter

On part d’un noeud racine, d’un noeud intermediaire et d’une feuille,tous vides

On ajoute les cles par odre dans la feuille

Si la feuille contient maintenant P elements, on la flush sur disque dansle fichier feuilles et on ajoute la derniere cle dans le noeud intermediaireSi le noeud intermediaire contient maintenant Q elements, on le flushdans le fichier tete et on ajoute la derniere cle dans le noeud racine

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 106 / 110

Page 108: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

String B-Tree statique

Algorithme de construction (2/2)

On flush le noeud feuille, on ajoute sa derniere cle dans le noeudintermediaire

On flush le noeud intermediaire et on ajoute sa derniere cle dans lenoeud racine

enfin on flush le noeud racine

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 107 / 110

Page 109: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

Conclusion

Best Practices

Essayer de ramener le probleme sur une structure statique si possible(meilleurs performances)

En fonction du volume:

< 1 million et uniquement besoin de faire get(c): hash table< 50 million: Patricia Trie / TST> 50 millions: String B-Tree

Si vous avez besoin d’un algorithme autre que get(c), il faut unestructure arborescente: tri, enumeration prefixe, rechercheapproximative, expressions regulieres ...

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 108 / 110

Page 110: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

References

Bibliographie (1/2)

1 Introduction a l’algorithmique, Thomas H. Cormen, CharlesE.Leiserson, Ronald L. Rivest, Clifford Stein

2 Automata and Dictionaries, Denis Maurel,Franz Guenthner

3 In-memory Hash Tables for Accumulating Text Vocabularies,Justin Zobel. Steffen Heinz. Hugh E. Williams. Department ofComputer Science, RMIT University

4 Burst Tries: A Fast, Efficient Data Structure for String Keys,Steffen Heinz, Justin Zobel, Hugh E. Williams

5 Judy IV Shop Manual, Alan Silverstein

6 The string B-tree: a new data structure for string search inexternal memory and its applications, Paolo Ferragina, RobertoGrossi

7 Programming Pearls, Jon Bentley

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 109 / 110

Page 111: Structure de données en Text Miningrozenknop/Cours/MICR_REI/Seance5/... · Structure de donn ees en Text Mining Julien Lemoine 29 mai 2008 Julien Lemoine Structure de donn ees en

References

Bibliographie (2/2)

8 A guided tour to approximate string matching., G. Navarro, ACMComputing Surveys (CSUR) archive 33(1), pp 31-88, 2001

Julien Lemoine () Structure de donnees en Text Mining 29 mai 2008 110 / 110