![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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/40.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/41.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/42.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/43.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/44.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/45.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/46.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/47.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/48.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/49.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/50.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/51.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/52.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/53.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/54.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/55.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/56.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/57.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/58.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/59.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/60.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/61.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/62.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/63.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/64.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/65.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/66.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/67.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/68.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/69.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/70.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/71.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/72.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/73.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/74.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/75.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/76.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/77.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/78.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/79.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/80.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/81.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/82.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/83.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/84.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/85.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/86.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/87.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/88.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/89.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/90.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/91.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/92.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/93.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/94.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/95.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/96.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/97.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/98.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/99.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/100.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/101.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/102.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/103.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/104.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/105.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/106.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/107.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/108.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/109.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/110.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022063015/5fd38a09b2dd8f1eb36074b2/html5/thumbnails/111.jpg)
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