SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Mineure « Data Science » Frédéric Pennerath
RECHERCHE D’INFORMATION
Chapitre 5
Mineure « Data Science » Frédéric Pennerath
INTRODUCTION
Mineure « Data Science » Frédéric Pennerath
Le problème de la recherche d’information
(information retrieval)
Ensemble de
références
Application
cliente
Moteur de
recherche
d’information
Ensemble de
documents
Documents :
– Textes (bases documentaires)
– Hypertextes, documents XML/HTML
– R.I multimédia : images, vidéo, sons, etc
Granularité des réponses :
– Page web (URL)
– Documents (pdf,.doc, etc)
– Section, chapitre, page
– Paragraphes
Langage de requête :
– Mots clés pour le texte
– Requête par l’exemple (image, son, etc)
– Algèbre : opérateurs logiques, opérateurs
de proximité
Requête Réponse
Mineure « Data Science » Frédéric Pennerath
Objectifs
1. Démystifier les moteurs de recherche :
– Problème résolu depuis longtemps (bases documentaires)
– Théorie très simple : recherche linéaire dans des listes
2. Prétexte à introduire des notions connexes
– Modèles IR : modèle booléen, vectoriel, probabiliste
– Algorithmique : indexation, optimisation des requêtes, B-tree, correction
orthographique
– Fouille de texte et traitement automatique du langage naturel (TALN)
– Problématique du Big Data : parallélisme des données (Map Reduce), NoSQL
– TechniquesWeb : crawling /scraping
Mineure « Data Science » Frédéric Pennerath
La préhistoire de la recherche d’information :
l’approche de type « grep »
• Principe du grep :
grep(requête Q)
Liste L
pour chaque document D,
si D satisfait Q, ajouter la référence de D à L
fin pour
retourner L
• Avantage : requête sophistiquée (expressions régulières)
• Inconvénient :
– Parcours de toute la base documentaire à chaque requête
– Très lent car pas de prétraitement
– Inutilisable pour la recherche sur le Web
Mineure « Data Science » Frédéric Pennerath
RECHERCHE D’INFORMATION
MODÈLE LOGIQUE
ET
IMPLÉMENTATION
Mineure « Data Science » Frédéric Pennerath
Index inversé
(inverted index)
Principe :
– Index inversé = ensemble (liste) des documents associés à / contenant un terme
– Vocabulaire = ensemble des termes indexés
– Les index inversés sont calculés offline.
– Le traitement online d’une requête combine les index inversés :
recherche(requête « M1 et M2 »)
Index L1 <- ensemble des documents contenant M1
Index L2 <- ensemble des documents contenant M2
Liste L <- intersection de L1 et L2
retourner L
Avantage :
– Rapide car minimise le traitement online
Inconvénient :
– Nécessite des capacités de stockage importantes.
– Que se passe t-il si un terme de la requête n’est pas dans le vocabulaire ?
Mineure « Data Science » Frédéric Pennerath
Langage de requêtes booléennes :
• Opérateurs logiques ET, OU, NON
• Langage des premiers moteurs de recherche
• Exemple : vienne AND NOT(autriche OR département)
• Peu adapté à l’usage :
– Liste de résultats trop longue ou trop courte
– Résultat « à plat » : pas de tri des résultats par importance
– Utilité du OU et du NON discutable : la conjonction de termes est la plus naturelle
pour décrire le concept recherché.
Exemple : vienne AND isère
ET (x)
OU (x)
ET NON (x)
Mineure « Data Science » Frédéric Pennerath
Implémentation d’un index inversé
• Chaque document dispose d’un identifiant unique entier (UID)
• Chaque mot est associé à la liste des UIDs des documents contenant ce mot,
rangés par UID croissant.
• Cette liste est stockée dans un fichier que l’on peut lire rapidement selon
une lecture séquentielle des blocs disque.
vienne 1 4 5 9 12 15
isère 2 4 5 6 9
vienne ET isère 4 5 9
Mineure « Data Science » Frédéric Pennerath
Traitement séquentiel de l’opérateur ET
intersection(fichier index L1, fichier index L2)
entier uid1 = lire(L1), uid2 = lire(L2);
créer fichier index L vide;
tant que uid1 et uid2 sont définis
si(uid1 < uid2) uid1 = lire(L1);
sinon si(uid1 > uid2) uid2 = lire(L2);
sinon
écrire uid1 dans L; uid1 = lire(L1); uid2 = lire(L2);
fsi
fin tant que
retourner L
L1 1 4 5 9 12 15
L2 2 4 5 6 9
L 4 5 9
NB: possibilité d’accélérer
l’algorithme avec des « skip lists »
Mineure « Data Science » Frédéric Pennerath
Traitement séquentiel de l’opérateur NON
• Problème : l’index de NON(M) est énorme et non stockable.
• Solution :
– l’opérateur NON n’est acceptable que dans le cas d’une requête « M1 ET NON M2 ».
– Dans ce cas l’algorithme s’apparente au calcul d’une intersection.
intersectionEtNegation(fichier index L1, fichier index L2)
entier uid1 = lire(L1), uid2 = lire(L2);
créer fichier index L vide;
tant que uid1 et uid2 sont définis
si(uid1 < uid2) { uid1 = lire(L1); écrire uid1 dans L; }
sinon si(uid1 > uid2) uid2 = lire(L2);
sinon
écrire uid1 dans L; uid1 = lire(L1); uid2 = lire(L2);
fsi
fin tant que
tant que uid1 est défini { écrire uid1 dans L; uid1 = lire(L1); }
retourner L
Mineure « Data Science » Frédéric Pennerath
Optimisation du moteur de requête
• Accès aux index d’un mot grâce à un B-tree
• Composition des opérations par accumulation en mémoire (cache)
• Ordonnancement des opérations pour minimiser la taille du résultat et le temps de
calcul
1. Mettre la requête sous forme DNF (disjunctive normal form)
2. Négation à la fin des conjonctions
3. Ordonner les conjonctions en commençant par les index les plus courts.
• Exemple : (A and not B and (C or D) and E)
– Réécriture : (A and not B and C and E) or (A and not B and D and E)
– Ordonnancement : (((E and C) and A) and not B) or …
– Calcul :
L ← intersection(LE,LC)
L ← intersection(L,LA)
L ← intersectionEtNegation(L,LB)
Terme Fréquence
A 100M
B 20M
C 30M
D 50M
E 1M
Mineure « Data Science » Frédéric Pennerath
RECHERCHE D’INFORMATION
MODÈLEVECTORIEL
ET
IMPLÉMENTATION
Mineure « Data Science » Frédéric Pennerath
Le modèle vectoriel :
Modèle booléen peu adapté :
– Réponses binaires trop rigides (trop ou pas assez de résultats)
– Pas de classement des résultats
Introduction du modèle vectoriel :
– Représentation des requêtes et des documents par des vecteurs
– Chaque terme du vocabulaire est une dimension de l’espace vectoriel.
– Approche « sac de mots » : un vecteur équivaut à un ensemble pondéré de mots.
– Deux vecteurs sont similaires s’ils sont alignés.
→ Score d’un document d pour une requête q : angle entre d et q
𝑠𝑖𝑚 𝑞, 𝑑 = cos 𝑞, 𝑑 =
𝑞 ⋅ 𝑑
𝑞 ⋅ 𝑑
Avantages :
– Classement des résultats selon un score.
– Pas de différence entre requêtes et documents : requête par document possible.
– Possibilité d’appliquer les méthodes de classification numérique (SVM, etc)
t1
t2
t3
t4
t5 t6
t7
dim = nbr. de termes
Mineure « Data Science » Frédéric Pennerath
Les coordonnées tf-idf :
Comment calculer le poids wd,t (coordonnée) d’un terme t dans un document d ?
𝑑 =
𝑡∈𝑉𝑜𝑐𝑎𝑏.
𝑤𝑑,𝑡 ⋅ 𝑢𝑡
Le poids wd,t doit être d’autant plus grand que :
– Le terme t est informatif (rare dans l’ensemble des documents)
– Le terme t est présent dans le document d.
Modèle tf-idf : poids = information (en bits) pour coder les occurrences de t
𝑤𝑑,𝑡 = 𝑡𝑓𝑑,𝑡 × 𝑖𝑑𝑓𝑡 = 𝑡𝑓𝑑,𝑡 × log2
𝑁
𝑁𝑡
– tfd,t (term frequency) : nbr. d’occurrences de t dans le document d
– idft (inverse document frequency) : information pour coder une seule occurrence de t
– N : nbr. de documents / Nt : nbr. de documents contenant t
Questions : à quelle condition deux documents
– Sont parfaitement similaires (𝑠𝑖𝑚 𝑑1, 𝑑2 = 1) ?
– Ne partagent aucune similarité (𝑠𝑖𝑚 𝑑1, 𝑑2 = 0) ?
Mineure « Data Science » Frédéric Pennerath
Exemple de calcul de similarité
Calcul de la similarité entre la requête « vienne isère » et le document 1 :
𝑞
𝑞
⋅
𝑑1
𝑑1
=
𝑢𝑣𝑖𝑒𝑛𝑛𝑒 + 𝑢𝑖𝑠è𝑟𝑒
2
⋅
tf−idf1,𝑣𝑖𝑒𝑛𝑛𝑒 ⋅ 𝑢𝑣𝑖𝑒𝑛𝑛𝑒 + tf−idf1,𝑖𝑠è𝑟𝑒 ⋅ 𝑢𝑖𝑠è𝑟𝑒
𝑑1
⇒ cos 𝑞, 𝑑1 =
1
2
⋅
10 ⋅ 20 + 2 ⋅ 18
4 ⋅ 104
= 41 ⋅ 10−4
cos(𝑞, 𝑑2) =
1
2
⋅
3 ⋅ 20
2 ⋅ 104
= 21 ⋅ 10−4
Termes
Doc-ID
tfvienne tfisère …
1 10 2
2 3 0
3 0 0
4 2 4
…
Doc-
ID
𝒅
1 4 ⋅ 104
2 2 ⋅ 104
3 102
4 103
Terme
idf
(bits)
vienne 20
isère 18
𝑑 =
𝑡∈𝑉𝑜𝑐𝑎𝑏.
tf−idf𝑡,𝑑
2
Mineure « Data Science » Frédéric Pennerath
Implémentation du modèle tf-idf :
structure des index
Intégration dans les index :
• Chaque index de terme t est associé à son idft
• Chaque entrée dans l’index du terme t contient tft,d en plus du docID de d.
vienne / 20 bits 1/10
isère / 18 bits 1/2
tft,d
idft
4/2
3/1
5/7 9/4
docID
4/4 9/5
1
…
4.104
…
4 103
docID
Algorithme de calcul des similarités :
• Les docID sont traités un par un en progressant en parallèle dans les index des termes
de la requête
• Le score de chaque docID est calculé.
• Une file de priorité contient en permanence les k meilleurs docIDs trouvés.
𝒅
Mineure « Data Science » Frédéric Pennerath
DocId
Somme
tf-idf
Implémentation du modèle tf-idf :
traitement en ligne d’une requête
vienne / 20 bits 1/10
isère / 18 bits 1/2
4/2
3/1
5/7 9/4
4/4 9/5
DocId Score
File de priorité des 2
meilleurs DocID triés
par score décroissant
File des DocId en
cours de traitement
DocId
Somme
tf-idf
1 200
DocId
Somme
tf-idf
1 236
DocId Score
1 5,9.10-3
DocId
Somme
tf-idf
1 200
3 18
DocId
Somme
tf-idf
1 236
3 18
4 40
DocId
Somme
tf-idf
3 18
4 40
DocId
Somme
tf-idf
3 18
4 112
DocId
Somme
tf-idf
4 112
DocId Score
1 5,9.10-3
3 0,9.10-3
DocId 𝒅
1 4.104
3 2.104
4 104
5 14.104
9 2.104
DocId
Somme
tf-idf
4 112
5 140
DocId
Somme
tf-idf
4 112
5 140
9 80
DocId
Somme
tf-idf
4 112
5 140
9 170
DocId Score
4 11,2.10-3
1 5,9.10-3
DocId
Somme
tf-idf
5 140
9 170
DocId
Somme
tf-idf
9 170
DocId Score
4 11,2.10-3
5 8,5.10-3
DocId
Somme
tf-idf
Mineure « Data Science » Frédéric Pennerath
Implémentation du modèle tf-idf :
parcours des index
Entrées : requête q, nbr. de réponses attendues k, table d’index I[]
Sortie : liste L des k meilleures réponses
créer une file de priorité F de couples(docID, score) maximale sur les scores
créer une file de priorité D de triplets (index, docID, tf-idf) minimale sur docID
pour chaque terme t de la requête q
insérer (I[t], d, tf * I[t].idf) dans D
où (d, tf) est la première entrée de l’index I[t] du terme t
fin pour
docIdCourant <- 1; score <- 0;
tant que D n’est pas vide
(index I, docID d, tf-idf) <- D.retirerMinimum()
si(d == docIdCourant)
score <- score + tf-idf
si I n’a pas été entièrement lu
(d, tf) <- lire prochaine entrée de I
D.insérer(I, d, tf * I.idf);
fin si
sinon
score <- score / norme[docIdCourant];
F.insérer((docIdCourant , score)); F.écrêter(k);
score <- 0; docIdCourant <- d
fin si
fin tant que
recopier F dans L; retourner L
Mineure « Data Science » Frédéric Pennerath
RECHERCHE D’INFORMATION
MODÈLE PROBABILISTE
ET
IMPLÉMENTATION
Mineure « Data Science » Frédéric Pennerath
Le modèle probabiliste :
1er principe : Probability Ranking Principle
Problème : à quelle condition 𝑅 = 1|𝑄, 𝐷 ?
Réponse : si
𝑃 𝑅 = 1 𝑄, 𝐷 > 𝑃(𝑅 = 0|𝑄, 𝐷)
Calcul d’un score 𝒔𝑸(𝑫)
𝑠𝑄(𝐷) =
𝑃 𝑅 = 1 𝑄, 𝐷
𝑃 𝑅 = 0 𝑄, 𝐷
=
𝑃 𝐷 𝑅 = 1, 𝑄 × 𝑃 𝑅 = 1 𝑄
𝑃 𝐷 𝑅 = 0, 𝑄 × 𝑃 𝑅 = 0 𝑄
∝
𝑃 𝐷 𝑅 = 1, 𝑄
𝑃 𝐷 𝑅 = 0, 𝑄
– Tri des documents par ordre décroissant de 𝑠𝑄(𝐷)
– Ne gère pas la redondance entre documents
𝑅 : relevance
𝑄 : query
𝐷 : document
D
Q R
Mineure « Data Science » Frédéric Pennerath
Le modèle probabiliste :
2ème principe : Binary Independance Model (BIM)
Hyp 1 : les termes d’un document sont indépendants cond à 𝑄 et 𝑅 :
𝑃 𝐷 𝑅 = 𝑟, 𝑄 =
𝑡∈𝐷
𝑃(𝑡 ∈ 𝐷|𝑅 = 𝑟, 𝑄)
×
𝑡∉𝐷
1 − 𝑃 𝑡 ∈ 𝐷 𝑅 = 𝑟, 𝑄
Hyp 2 : les termes hors requête sont indépendants de 𝑅 :
𝑃 𝑡 ∈ 𝐷 𝑅 = 0, 𝑡 ∉ 𝑄 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 0, 𝑡 ∉ 𝑄
⇒ 𝑠𝑄(𝐷) ∝
𝑡∈𝑄∩𝐷
𝑝𝑡
1 − 𝑝𝑡
×
1 − 𝑢𝑡
𝑢𝑡
𝑎𝑣𝑒𝑐
𝑝𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 1, 𝑡 ∈ 𝑄
𝑢𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 0, 𝑡 ∈ 𝑄
 Retrieval StatusValue :
𝑅𝑆𝑉𝑄 𝐷 =
𝑡∈𝑄∩𝐷
log
𝑝𝑡
1 − 𝑝𝑡
+ log
1 − 𝑢𝑡
𝑢𝑡
D
𝑇1
𝑄, 𝑅
𝑇𝑉
…
Mineure « Data Science » Frédéric Pennerath
Le modèle probabiliste :
Apprentissage des paramètres 𝑝𝑡 et 𝑢𝑡
Hyp : il existe un jeu d’apprentissage 𝐷+
𝑄 ∪ 𝐷−
𝑄 pour la requête 𝑄 :
𝑝𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 1, 𝑡 ∈ 𝑄 =
𝑁 𝐷 ∈ 𝐷+
𝑄 , 𝑡 ∈ 𝐷 + 𝛼
𝑁 𝐷+ 𝑄 + 2𝛼
=
𝑁𝑄
+
𝑡 + 𝛼
𝑁𝑄
+
+ 2𝛼
𝑢𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 0, 𝑡 ∈ 𝑄 =
𝑁 𝐷 ∈ 𝐷− 𝑄 , 𝑡 ∈ 𝐷 + 𝛼
𝑁 𝐷− 𝑄 + 2𝛼
=
𝑑𝑓𝑡 − 𝑁𝑄
+
𝑡 + 𝛼
𝑁 − 𝑁𝑄
+
+ 2𝛼
Remarque : on retrouve les coefficients idf :
log
1 − 𝑢𝑡
𝑢𝑡
= log
𝑁 − 𝑑𝑓𝑡
𝑑𝑓𝑡 − 𝑁𝑄
+
𝑡
≃ log
𝑁 − 𝑑𝑓𝑡
𝑑𝑓𝑡
≃ log
𝑁
𝑑𝑓𝑡
= 𝑖𝑑𝑓𝑡
⇒ 𝑅𝑆𝑉𝑄 𝐷 =
𝑡∈𝑄∩𝐷
log
𝑝𝑡
1 − 𝑝𝑡
+ 𝑖𝑑𝑓𝑡
Fréquence de 𝑡
dans les documents
Coefficient
de Laplace
Mineure « Data Science » Frédéric Pennerath
Le modèle probabiliste BM25
(Spärck Jones et al. 2000)
Problème : jeu d’apprentissage par requête contraignant / irréaliste
Hypothèses :
– Pas de documents pertinents : 𝑝𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 1, 𝑡 ∈ 𝑄 =
1
2
– Mais prise en compte du nombre d’occurrences d’un terme dans le document
relativement à sa longueur
Résultat :
𝑅𝑆𝑉𝑄 𝐷 =
𝑡∈𝑄
𝑖𝑑𝑓𝑡 ×
𝑘1 + 1 𝑡𝑓𝑡,𝑑
𝑘1 1 − 𝑏 + 𝑏
𝐿𝑑
𝐿
+ 𝑡𝑓𝑡,𝑑
Typiquement 𝑏 = 0,75 et 1,2 < 𝑘1 < 2
Fréquence de 𝑡 dans
le document 𝑑
Longueur du document 𝑑
Longueur moyenne
des documents
Mineure « Data Science » Frédéric Pennerath
INTRODUCTION AUTALN
(TRAITEMENT AUTOMATIQUE DU
LANGAGE NATUREL)
PRÉTRAITEMENT DUTEXTE POUR
L’APPRENTISSAGE ET LA RECHERCHE
D’INFORMATION
Mineure « Data Science » Frédéric Pennerath
Définition du vocabulaire
Question : quels sont les termes à indexer ?
Plusieurs problèmes :
– Un terme est une notion spécifique à un langage.
Exemple : mot pain en français/anglais
=> Intérêt de dissocier les termes par langage pour des index plus courts
– Les « stop words » produisent des index inutiles et couteux :
Exemple : en français un, le, la, est. En anglais a, the, is etc.
– Synonymie : plusieurs mots désignent le même objet ou la même action :
Exemple : formes conjuguées des verbes, accord des noms et adjectifs réguliers ou
irréguliers, synonymes, etc.
→ nécessité de réaliser une recherche modulo les formes conjuguées
– Polysémie : un même mot peut avoir plusieurs sens
Exemple : les poules du couvent couvent.
Mineure « Data Science » Frédéric Pennerath
Prétraitement des textes à indexer
1. Segmentation du texte : séparation d’un document en unités d’indexation
(paragraphes, pages, etc)
2. Identification de la langue de chaque unité
3. Tokenization : séparation du texte d’une unité en une liste de mots (token)
Problème complexe spécifique à la langue :
• En français, gestion des traits d’union, des apostrophes :
Ex : l’article = (l + article), fait-il = (fait + il) mais chef-d’œuvre = (chef-d’œuvre)
• En chinois, les mots sont une suite d’idéogrammes qui ne sont pas séparés par des espaces !
4. Elimination des « stop words » de la langue
5. Normalisation simple des mots (minuscules, accents)
6. Décomposition de mots (allemand, etc)
7. Normalisation par racinisation ou lemmatisation
Mineure « Data Science » Frédéric Pennerath
Identification de la langue (Baldwin 2010)
Remarques :
• Le cosinus est utilisé comme mesure de similarité pour K-NN.
• Pour une détection rapide, K-NN sur des vecteurs prototypes moyennés (quelques uns
par langue)
• La classification peut se faire sans tokenisation (sur le codage binaire brut)
Unité
textuel
Extraction
des n-grams
(n=1, 2 ou 3)
Classifieur
(K-NN,
SVM,
Naive Bayes)
Vecteur
d’occurrences
des différents
items
Langue
Vecteurs d’occurrences
pour des textes de
référence
Mineure « Data Science » Frédéric Pennerath
Racinisation versus lemmatisation des mots
Racinisation (stemming) :
– Suite de règles ad hoc de simplification d’un mot spécifiques au langage pour
obtenir une racine (stem)
Ex: suis/es/est → être, ent/ant → *, *s → *, *ité → *, *ement → *, …
– Stemmers : snowball.tartarus.org
– Avantages : simple à implémenter, rapide
– Inconvénient : approximatif
Ex de confusion : majorité / major → major
Ex de dissociation : contraindre → contraind / contraint → contraint
Lemmatisation (lemmatization) :
– Analyse morpho-syntaxique : construction d’un arbre syntaxique
– Chaque mot est étiqueté par son lemme (représentant), son genre, son
nombre, sa fonction, etc.
– Avantage : rigoureux et précis (en théorie)
– Inconvénient : couteux et gain faible dans le cadre de la RI
Mineure « Data Science » Frédéric Pennerath
Calcul de similarité entre termes
et correction orthographique
Que faire lorsqu’un terme de la requête n’est pas dans le dictionnaire ?
→ Correction orthographique :
– Distance d’édition : nombre minimal de transformations
• Avec ajout, suppression, remplacement de caractères
• Avec en plus permutation de caractère
– Problème de programmation dynamique :
→
0
c→
1
ca→
2
cas→
3
→s
1
c→s
1
ca→s
2
cas→s
2
→sa
2
c→sa
2
ca→sa
1
cas→sa
2
→sac
3
c→sac
2
ca→sac
2
cas→sac
2
Remplacement
de an par bm
Suppression de an
Ajout
de bm
Temps ≈ 3 × 𝑛 × 𝑚
𝑎1 … 𝑎𝑛−1 → 𝑏1 … 𝑏𝑚−1 𝑎1 … 𝑎𝑛 → 𝑏1 … 𝑏𝑚−1
𝑎1 … 𝑎𝑛 → 𝑏1 … 𝑏𝑚
𝑎1 … 𝑎𝑛−1 → 𝑏1 … 𝑏𝑚
𝑑𝑠𝑎𝑛𝑠 𝑝𝑒𝑟𝑚𝑢𝑡. 𝑐𝑎𝑠, 𝑠𝑎𝑐 = 2
𝑑𝑎𝑣𝑒𝑐 𝑝𝑒𝑟𝑚𝑢𝑡. 𝑐𝑎𝑠, 𝑠𝑎𝑐 = 1
𝑑 𝑎1 … 𝑎𝑛 → 𝑏1 … 𝑏𝑚 = 𝑚𝑖𝑛
𝑑 𝑎1 … 𝑎𝑛−1 → 𝑏1 … 𝑏𝑚 + 𝑐𝑠𝑢𝑝𝑝𝑟 𝑎𝑛
𝑑 𝑎1 … 𝑎𝑛 → 𝑏1 … 𝑏𝑚 + 𝑐𝑎𝑗𝑜𝑢𝑡 𝑏𝑚
𝑑 𝑎1 … 𝑎𝑛−1 → 𝑏1 … 𝑏𝑚−1 + 𝑐𝑟𝑒𝑚𝑝𝑙 𝑎𝑛, 𝑏𝑚
Mineure « Data Science » Frédéric Pennerath
Calcul rapide de termes similaires :
approche fondée sur les permutations circulaires
Problème : le calcul de la distance d’édition d’un terme R de la requête avec tous les termes
du vocabulaire est trop long.
→ Se focaliser sur les termes partageant un grand nombre de lettres consécutives avec R
– Création d’un dictionnaire contenant toutes les rotations circulaires des termes.
– Recherche des termes du dictionnaire préfixés par R supprimé des k derniers caractères
– Calcul de la distance d’édition sur ces sous-ensembles de termes
Exemple : k = 2 et requête = linx
linx
linx
inxl
nxli
xlin
linux
linux
inuxl
nuxli
uxlin
xlinu
lynx
lynx
ynxl
nxly
xlyn
linx
li
in
nx
xl
lin
lin
inl
nli
Mineure « Data Science » Frédéric Pennerath
Calcul rapide de termes similaires :
approche fondée sur les n-grams
Idée : deux termes sont proches s’ils partagent
de nombreux n-grams.
Principe :
1. Chaque terme est décomposé en n-grams.
Ex : trigrams(albatos) =
{alb,lba,bat,ato,tos}
2. Chaque terme Ti du vocabulaire est
indexé selon ses n-grams.
3. Les index des n-grams du terme R de la
requête sont parcourus.
4. L’indice de Jaccard J(R,Ti) est calculé
dynamiquement par comptage desTi dans
les index des n-grams de R.
5. Seuls les termes Ti dont l’indice J(R,Ti) est
supérieur à un seuil donné sont
conservés.
6. Leur distance d’édition d(R,Ti) est
finalement calculée.
alb 1 2
lba 1 2
bat 1 2
ato
atr 1 2
tro
tre 1
tos
ros 2
albâtre < albatros
Trigrams
de
albatos
 
  375
,
0
3
6
5
3
albatros
albatos,
429
,
0
3
5
5
3
albatre
albatos,








J
J
B
A
B
A
 
B
A
B
A
B
A
J



,
 
   
   
 
     
   
 
 

















R
n
g
i
i
R
i
R
i
i
R
i
i
i
T
L
g
T
N
T
N
n
T
n
R
T
N
T
n
R
n
T
n
R
n
T
R
J
grams
avec
1
1
grams
grams
grams
grams
,



2
Mineure « Data Science » Frédéric Pennerath
Elastic Search / Solr
Bases de données NoSQL orientée documents
• Index  base de données
• Type  ensemble de documents similaires 
tables
• Documents  tuples
• Champs colonnes
+ un vrai moteur de recherche d’information :
• Lucene : moteur de recherche Java
• Indexation en continue
• Fonctionnement en cluster
• Fonctionnalités avancées

Contenu connexe

Similaire à 4-Recherche d'information.pdf

Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines Databricks
 
Cours de topic modeling
Cours de topic modelingCours de topic modeling
Cours de topic modelingAlexis Perrier
 
LDA & LSI : à quoi peuvent-ils servir dans un moteur de recherche
LDA & LSI : à quoi peuvent-ils servir dans un moteur de rechercheLDA & LSI : à quoi peuvent-ils servir dans un moteur de recherche
LDA & LSI : à quoi peuvent-ils servir dans un moteur de recherchePhilippe YONNET
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
 
Graphes, multi-graphes et recherche d’information
Graphes, multi-graphes et recherche d’informationGraphes, multi-graphes et recherche d’information
Graphes, multi-graphes et recherche d’informationtuxette
 
Databases for Bioinformatics
Databases for BioinformaticsDatabases for Bioinformatics
Databases for BioinformaticsKarim Mezhoud
 
Text retrievalmining
Text retrievalminingText retrievalmining
Text retrievalminingvanwormhoudt
 
Génération automatique de texte
Génération automatique de texteGénération automatique de texte
Génération automatique de texteEstelle Delpech
 
Vhdl cours
Vhdl coursVhdl cours
Vhdl courssgdaim
 
Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"Aline Deschamps
 
Modèles de données et langages de description ouverts 5 - 2021-2022
Modèles de données et langages de description ouverts   5 - 2021-2022Modèles de données et langages de description ouverts   5 - 2021-2022
Modèles de données et langages de description ouverts 5 - 2021-2022François-Xavier Boffy
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProEttore Rizza
 
Adbs2012presentation 120527125034-phpapp02
Adbs2012presentation 120527125034-phpapp02Adbs2012presentation 120527125034-phpapp02
Adbs2012presentation 120527125034-phpapp02ABES
 
Créer un moteur de recherche avec des logiciels libres
Créer un moteur de recherche avec des logiciels libresCréer un moteur de recherche avec des logiciels libres
Créer un moteur de recherche avec des logiciels libresRobert Viseur
 
ABES - intervention congrès Semweb pro (5-11-2014)
ABES - intervention congrès Semweb pro (5-11-2014)ABES - intervention congrès Semweb pro (5-11-2014)
ABES - intervention congrès Semweb pro (5-11-2014)ABES
 
Du web sémantique à tous les étages
Du web sémantique à tous les étagesDu web sémantique à tous les étages
Du web sémantique à tous les étagesSemWebPro
 
Jabes 2012 - Tutoriel theses.fr
Jabes 2012 - Tutoriel theses.frJabes 2012 - Tutoriel theses.fr
Jabes 2012 - Tutoriel theses.frABES
 
Chapitre 1- Présentation.pptx
Chapitre 1- Présentation.pptxChapitre 1- Présentation.pptx
Chapitre 1- Présentation.pptxYounesAziz3
 

Similaire à 4-Recherche d'information.pdf (20)

Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
 
Cours de topic modeling
Cours de topic modelingCours de topic modeling
Cours de topic modeling
 
LDA & LSI : à quoi peuvent-ils servir dans un moteur de recherche
LDA & LSI : à quoi peuvent-ils servir dans un moteur de rechercheLDA & LSI : à quoi peuvent-ils servir dans un moteur de recherche
LDA & LSI : à quoi peuvent-ils servir dans un moteur de recherche
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Graphes, multi-graphes et recherche d’information
Graphes, multi-graphes et recherche d’informationGraphes, multi-graphes et recherche d’information
Graphes, multi-graphes et recherche d’information
 
Databases for Bioinformatics
Databases for BioinformaticsDatabases for Bioinformatics
Databases for Bioinformatics
 
Adbs2012 presentation
Adbs2012 presentationAdbs2012 presentation
Adbs2012 presentation
 
Text retrievalmining
Text retrievalminingText retrievalmining
Text retrievalmining
 
Génération automatique de texte
Génération automatique de texteGénération automatique de texte
Génération automatique de texte
 
Vhdl cours
Vhdl coursVhdl cours
Vhdl cours
 
Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"
 
Modèles de données et langages de description ouverts 5 - 2021-2022
Modèles de données et langages de description ouverts   5 - 2021-2022Modèles de données et langages de description ouverts   5 - 2021-2022
Modèles de données et langages de description ouverts 5 - 2021-2022
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJPro
 
Adbs2012presentation 120527125034-phpapp02
Adbs2012presentation 120527125034-phpapp02Adbs2012presentation 120527125034-phpapp02
Adbs2012presentation 120527125034-phpapp02
 
Créer un moteur de recherche avec des logiciels libres
Créer un moteur de recherche avec des logiciels libresCréer un moteur de recherche avec des logiciels libres
Créer un moteur de recherche avec des logiciels libres
 
ABES - intervention congrès Semweb pro (5-11-2014)
ABES - intervention congrès Semweb pro (5-11-2014)ABES - intervention congrès Semweb pro (5-11-2014)
ABES - intervention congrès Semweb pro (5-11-2014)
 
Du web sémantique à tous les étages
Du web sémantique à tous les étagesDu web sémantique à tous les étages
Du web sémantique à tous les étages
 
Jabes 2012 - Tutoriel theses.fr
Jabes 2012 - Tutoriel theses.frJabes 2012 - Tutoriel theses.fr
Jabes 2012 - Tutoriel theses.fr
 
Chapitre 1- Présentation.pptx
Chapitre 1- Présentation.pptxChapitre 1- Présentation.pptx
Chapitre 1- Présentation.pptx
 
Rapport Projet Module Complexité
Rapport Projet Module ComplexitéRapport Projet Module Complexité
Rapport Projet Module Complexité
 

Plus de RihabBENLAMINE

presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfRihabBENLAMINE
 
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfTutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfRihabBENLAMINE
 
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdfCM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdfRihabBENLAMINE
 
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdfRihabBENLAMINE
 
coursphp-chap3-230321082859-121d6678.pptx
coursphp-chap3-230321082859-121d6678.pptxcoursphp-chap3-230321082859-121d6678.pptx
coursphp-chap3-230321082859-121d6678.pptxRihabBENLAMINE
 
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfCours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfRihabBENLAMINE
 
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdfVirtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdfRihabBENLAMINE
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdfRihabBENLAMINE
 
Interace Utilisateur.pdf
Interace Utilisateur.pdfInterace Utilisateur.pdf
Interace Utilisateur.pdfRihabBENLAMINE
 
Bases de données sous Android.pdf
Bases de données sous Android.pdfBases de données sous Android.pdf
Bases de données sous Android.pdfRihabBENLAMINE
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdfRihabBENLAMINE
 
coursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfcoursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfRihabBENLAMINE
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdfRihabBENLAMINE
 
introAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfintroAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfRihabBENLAMINE
 
016834638650_suitechap1.pptx
016834638650_suitechap1.pptx016834638650_suitechap1.pptx
016834638650_suitechap1.pptxRihabBENLAMINE
 
Chapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfChapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfRihabBENLAMINE
 

Plus de RihabBENLAMINE (20)

presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdfTutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
Tutoriel-PHP-Introduction-à-la-POoooooooooooO.pdf
 
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdfCM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
CM_PHP_PDOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.pdf
 
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
10_interfacesjavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pdf
 
coursphp-chap3-230321082859-121d6678.pptx
coursphp-chap3-230321082859-121d6678.pptxcoursphp-chap3-230321082859-121d6678.pptx
coursphp-chap3-230321082859-121d6678.pptx
 
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdfCours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
Cours3-PHPfgdwfwdffhddfbwdfwdfwdfwdfwfw.pdf
 
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdfVirtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
Virtualisation & Cloud. Cloud Computing. Iset Siliana RSI3..pdf
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf
 
Interace Utilisateur.pdf
Interace Utilisateur.pdfInterace Utilisateur.pdf
Interace Utilisateur.pdf
 
Firebase.pdf
Firebase.pdfFirebase.pdf
Firebase.pdf
 
Bases de données sous Android.pdf
Bases de données sous Android.pdfBases de données sous Android.pdf
Bases de données sous Android.pdf
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdf
 
coursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfcoursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdf
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf
 
introAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdfintroAndroid_2023_V6.5.2pp1-162.pdf
introAndroid_2023_V6.5.2pp1-162.pdf
 
016834638650_suitechap1.pptx
016834638650_suitechap1.pptx016834638650_suitechap1.pptx
016834638650_suitechap1.pptx
 
PHP_intro.pdf
PHP_intro.pdfPHP_intro.pdf
PHP_intro.pdf
 
Chapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfChapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdf
 
chapitre-2.pptx.pdf
chapitre-2.pptx.pdfchapitre-2.pptx.pdf
chapitre-2.pptx.pdf
 

4-Recherche d'information.pdf

  • 1. Mineure « Data Science » Frédéric Pennerath RECHERCHE D’INFORMATION Chapitre 5
  • 2. Mineure « Data Science » Frédéric Pennerath INTRODUCTION
  • 3. Mineure « Data Science » Frédéric Pennerath Le problème de la recherche d’information (information retrieval) Ensemble de références Application cliente Moteur de recherche d’information Ensemble de documents Documents : – Textes (bases documentaires) – Hypertextes, documents XML/HTML – R.I multimédia : images, vidéo, sons, etc Granularité des réponses : – Page web (URL) – Documents (pdf,.doc, etc) – Section, chapitre, page – Paragraphes Langage de requête : – Mots clés pour le texte – Requête par l’exemple (image, son, etc) – Algèbre : opérateurs logiques, opérateurs de proximité Requête Réponse
  • 4. Mineure « Data Science » Frédéric Pennerath Objectifs 1. Démystifier les moteurs de recherche : – Problème résolu depuis longtemps (bases documentaires) – Théorie très simple : recherche linéaire dans des listes 2. Prétexte à introduire des notions connexes – Modèles IR : modèle booléen, vectoriel, probabiliste – Algorithmique : indexation, optimisation des requêtes, B-tree, correction orthographique – Fouille de texte et traitement automatique du langage naturel (TALN) – Problématique du Big Data : parallélisme des données (Map Reduce), NoSQL – TechniquesWeb : crawling /scraping
  • 5. Mineure « Data Science » Frédéric Pennerath La préhistoire de la recherche d’information : l’approche de type « grep » • Principe du grep : grep(requête Q) Liste L pour chaque document D, si D satisfait Q, ajouter la référence de D à L fin pour retourner L • Avantage : requête sophistiquée (expressions régulières) • Inconvénient : – Parcours de toute la base documentaire à chaque requête – Très lent car pas de prétraitement – Inutilisable pour la recherche sur le Web
  • 6. Mineure « Data Science » Frédéric Pennerath RECHERCHE D’INFORMATION MODÈLE LOGIQUE ET IMPLÉMENTATION
  • 7. Mineure « Data Science » Frédéric Pennerath Index inversé (inverted index) Principe : – Index inversé = ensemble (liste) des documents associés à / contenant un terme – Vocabulaire = ensemble des termes indexés – Les index inversés sont calculés offline. – Le traitement online d’une requête combine les index inversés : recherche(requête « M1 et M2 ») Index L1 <- ensemble des documents contenant M1 Index L2 <- ensemble des documents contenant M2 Liste L <- intersection de L1 et L2 retourner L Avantage : – Rapide car minimise le traitement online Inconvénient : – Nécessite des capacités de stockage importantes. – Que se passe t-il si un terme de la requête n’est pas dans le vocabulaire ?
  • 8. Mineure « Data Science » Frédéric Pennerath Langage de requêtes booléennes : • Opérateurs logiques ET, OU, NON • Langage des premiers moteurs de recherche • Exemple : vienne AND NOT(autriche OR département) • Peu adapté à l’usage : – Liste de résultats trop longue ou trop courte – Résultat « à plat » : pas de tri des résultats par importance – Utilité du OU et du NON discutable : la conjonction de termes est la plus naturelle pour décrire le concept recherché. Exemple : vienne AND isère ET (x) OU (x) ET NON (x)
  • 9. Mineure « Data Science » Frédéric Pennerath Implémentation d’un index inversé • Chaque document dispose d’un identifiant unique entier (UID) • Chaque mot est associé à la liste des UIDs des documents contenant ce mot, rangés par UID croissant. • Cette liste est stockée dans un fichier que l’on peut lire rapidement selon une lecture séquentielle des blocs disque. vienne 1 4 5 9 12 15 isère 2 4 5 6 9 vienne ET isère 4 5 9
  • 10. Mineure « Data Science » Frédéric Pennerath Traitement séquentiel de l’opérateur ET intersection(fichier index L1, fichier index L2) entier uid1 = lire(L1), uid2 = lire(L2); créer fichier index L vide; tant que uid1 et uid2 sont définis si(uid1 < uid2) uid1 = lire(L1); sinon si(uid1 > uid2) uid2 = lire(L2); sinon écrire uid1 dans L; uid1 = lire(L1); uid2 = lire(L2); fsi fin tant que retourner L L1 1 4 5 9 12 15 L2 2 4 5 6 9 L 4 5 9 NB: possibilité d’accélérer l’algorithme avec des « skip lists »
  • 11. Mineure « Data Science » Frédéric Pennerath Traitement séquentiel de l’opérateur NON • Problème : l’index de NON(M) est énorme et non stockable. • Solution : – l’opérateur NON n’est acceptable que dans le cas d’une requête « M1 ET NON M2 ». – Dans ce cas l’algorithme s’apparente au calcul d’une intersection. intersectionEtNegation(fichier index L1, fichier index L2) entier uid1 = lire(L1), uid2 = lire(L2); créer fichier index L vide; tant que uid1 et uid2 sont définis si(uid1 < uid2) { uid1 = lire(L1); écrire uid1 dans L; } sinon si(uid1 > uid2) uid2 = lire(L2); sinon écrire uid1 dans L; uid1 = lire(L1); uid2 = lire(L2); fsi fin tant que tant que uid1 est défini { écrire uid1 dans L; uid1 = lire(L1); } retourner L
  • 12. Mineure « Data Science » Frédéric Pennerath Optimisation du moteur de requête • Accès aux index d’un mot grâce à un B-tree • Composition des opérations par accumulation en mémoire (cache) • Ordonnancement des opérations pour minimiser la taille du résultat et le temps de calcul 1. Mettre la requête sous forme DNF (disjunctive normal form) 2. Négation à la fin des conjonctions 3. Ordonner les conjonctions en commençant par les index les plus courts. • Exemple : (A and not B and (C or D) and E) – Réécriture : (A and not B and C and E) or (A and not B and D and E) – Ordonnancement : (((E and C) and A) and not B) or … – Calcul : L ← intersection(LE,LC) L ← intersection(L,LA) L ← intersectionEtNegation(L,LB) Terme Fréquence A 100M B 20M C 30M D 50M E 1M
  • 13. Mineure « Data Science » Frédéric Pennerath RECHERCHE D’INFORMATION MODÈLEVECTORIEL ET IMPLÉMENTATION
  • 14. Mineure « Data Science » Frédéric Pennerath Le modèle vectoriel : Modèle booléen peu adapté : – Réponses binaires trop rigides (trop ou pas assez de résultats) – Pas de classement des résultats Introduction du modèle vectoriel : – Représentation des requêtes et des documents par des vecteurs – Chaque terme du vocabulaire est une dimension de l’espace vectoriel. – Approche « sac de mots » : un vecteur équivaut à un ensemble pondéré de mots. – Deux vecteurs sont similaires s’ils sont alignés. → Score d’un document d pour une requête q : angle entre d et q 𝑠𝑖𝑚 𝑞, 𝑑 = cos 𝑞, 𝑑 = 𝑞 ⋅ 𝑑 𝑞 ⋅ 𝑑 Avantages : – Classement des résultats selon un score. – Pas de différence entre requêtes et documents : requête par document possible. – Possibilité d’appliquer les méthodes de classification numérique (SVM, etc) t1 t2 t3 t4 t5 t6 t7 dim = nbr. de termes
  • 15. Mineure « Data Science » Frédéric Pennerath Les coordonnées tf-idf : Comment calculer le poids wd,t (coordonnée) d’un terme t dans un document d ? 𝑑 = 𝑡∈𝑉𝑜𝑐𝑎𝑏. 𝑤𝑑,𝑡 ⋅ 𝑢𝑡 Le poids wd,t doit être d’autant plus grand que : – Le terme t est informatif (rare dans l’ensemble des documents) – Le terme t est présent dans le document d. Modèle tf-idf : poids = information (en bits) pour coder les occurrences de t 𝑤𝑑,𝑡 = 𝑡𝑓𝑑,𝑡 × 𝑖𝑑𝑓𝑡 = 𝑡𝑓𝑑,𝑡 × log2 𝑁 𝑁𝑡 – tfd,t (term frequency) : nbr. d’occurrences de t dans le document d – idft (inverse document frequency) : information pour coder une seule occurrence de t – N : nbr. de documents / Nt : nbr. de documents contenant t Questions : à quelle condition deux documents – Sont parfaitement similaires (𝑠𝑖𝑚 𝑑1, 𝑑2 = 1) ? – Ne partagent aucune similarité (𝑠𝑖𝑚 𝑑1, 𝑑2 = 0) ?
  • 16. Mineure « Data Science » Frédéric Pennerath Exemple de calcul de similarité Calcul de la similarité entre la requête « vienne isère » et le document 1 : 𝑞 𝑞 ⋅ 𝑑1 𝑑1 = 𝑢𝑣𝑖𝑒𝑛𝑛𝑒 + 𝑢𝑖𝑠è𝑟𝑒 2 ⋅ tf−idf1,𝑣𝑖𝑒𝑛𝑛𝑒 ⋅ 𝑢𝑣𝑖𝑒𝑛𝑛𝑒 + tf−idf1,𝑖𝑠è𝑟𝑒 ⋅ 𝑢𝑖𝑠è𝑟𝑒 𝑑1 ⇒ cos 𝑞, 𝑑1 = 1 2 ⋅ 10 ⋅ 20 + 2 ⋅ 18 4 ⋅ 104 = 41 ⋅ 10−4 cos(𝑞, 𝑑2) = 1 2 ⋅ 3 ⋅ 20 2 ⋅ 104 = 21 ⋅ 10−4 Termes Doc-ID tfvienne tfisère … 1 10 2 2 3 0 3 0 0 4 2 4 … Doc- ID 𝒅 1 4 ⋅ 104 2 2 ⋅ 104 3 102 4 103 Terme idf (bits) vienne 20 isère 18 𝑑 = 𝑡∈𝑉𝑜𝑐𝑎𝑏. tf−idf𝑡,𝑑 2
  • 17. Mineure « Data Science » Frédéric Pennerath Implémentation du modèle tf-idf : structure des index Intégration dans les index : • Chaque index de terme t est associé à son idft • Chaque entrée dans l’index du terme t contient tft,d en plus du docID de d. vienne / 20 bits 1/10 isère / 18 bits 1/2 tft,d idft 4/2 3/1 5/7 9/4 docID 4/4 9/5 1 … 4.104 … 4 103 docID Algorithme de calcul des similarités : • Les docID sont traités un par un en progressant en parallèle dans les index des termes de la requête • Le score de chaque docID est calculé. • Une file de priorité contient en permanence les k meilleurs docIDs trouvés. 𝒅
  • 18. Mineure « Data Science » Frédéric Pennerath DocId Somme tf-idf Implémentation du modèle tf-idf : traitement en ligne d’une requête vienne / 20 bits 1/10 isère / 18 bits 1/2 4/2 3/1 5/7 9/4 4/4 9/5 DocId Score File de priorité des 2 meilleurs DocID triés par score décroissant File des DocId en cours de traitement DocId Somme tf-idf 1 200 DocId Somme tf-idf 1 236 DocId Score 1 5,9.10-3 DocId Somme tf-idf 1 200 3 18 DocId Somme tf-idf 1 236 3 18 4 40 DocId Somme tf-idf 3 18 4 40 DocId Somme tf-idf 3 18 4 112 DocId Somme tf-idf 4 112 DocId Score 1 5,9.10-3 3 0,9.10-3 DocId 𝒅 1 4.104 3 2.104 4 104 5 14.104 9 2.104 DocId Somme tf-idf 4 112 5 140 DocId Somme tf-idf 4 112 5 140 9 80 DocId Somme tf-idf 4 112 5 140 9 170 DocId Score 4 11,2.10-3 1 5,9.10-3 DocId Somme tf-idf 5 140 9 170 DocId Somme tf-idf 9 170 DocId Score 4 11,2.10-3 5 8,5.10-3 DocId Somme tf-idf
  • 19. Mineure « Data Science » Frédéric Pennerath Implémentation du modèle tf-idf : parcours des index Entrées : requête q, nbr. de réponses attendues k, table d’index I[] Sortie : liste L des k meilleures réponses créer une file de priorité F de couples(docID, score) maximale sur les scores créer une file de priorité D de triplets (index, docID, tf-idf) minimale sur docID pour chaque terme t de la requête q insérer (I[t], d, tf * I[t].idf) dans D où (d, tf) est la première entrée de l’index I[t] du terme t fin pour docIdCourant <- 1; score <- 0; tant que D n’est pas vide (index I, docID d, tf-idf) <- D.retirerMinimum() si(d == docIdCourant) score <- score + tf-idf si I n’a pas été entièrement lu (d, tf) <- lire prochaine entrée de I D.insérer(I, d, tf * I.idf); fin si sinon score <- score / norme[docIdCourant]; F.insérer((docIdCourant , score)); F.écrêter(k); score <- 0; docIdCourant <- d fin si fin tant que recopier F dans L; retourner L
  • 20. Mineure « Data Science » Frédéric Pennerath RECHERCHE D’INFORMATION MODÈLE PROBABILISTE ET IMPLÉMENTATION
  • 21. Mineure « Data Science » Frédéric Pennerath Le modèle probabiliste : 1er principe : Probability Ranking Principle Problème : à quelle condition 𝑅 = 1|𝑄, 𝐷 ? Réponse : si 𝑃 𝑅 = 1 𝑄, 𝐷 > 𝑃(𝑅 = 0|𝑄, 𝐷) Calcul d’un score 𝒔𝑸(𝑫) 𝑠𝑄(𝐷) = 𝑃 𝑅 = 1 𝑄, 𝐷 𝑃 𝑅 = 0 𝑄, 𝐷 = 𝑃 𝐷 𝑅 = 1, 𝑄 × 𝑃 𝑅 = 1 𝑄 𝑃 𝐷 𝑅 = 0, 𝑄 × 𝑃 𝑅 = 0 𝑄 ∝ 𝑃 𝐷 𝑅 = 1, 𝑄 𝑃 𝐷 𝑅 = 0, 𝑄 – Tri des documents par ordre décroissant de 𝑠𝑄(𝐷) – Ne gère pas la redondance entre documents 𝑅 : relevance 𝑄 : query 𝐷 : document D Q R
  • 22. Mineure « Data Science » Frédéric Pennerath Le modèle probabiliste : 2ème principe : Binary Independance Model (BIM) Hyp 1 : les termes d’un document sont indépendants cond à 𝑄 et 𝑅 : 𝑃 𝐷 𝑅 = 𝑟, 𝑄 = 𝑡∈𝐷 𝑃(𝑡 ∈ 𝐷|𝑅 = 𝑟, 𝑄) × 𝑡∉𝐷 1 − 𝑃 𝑡 ∈ 𝐷 𝑅 = 𝑟, 𝑄 Hyp 2 : les termes hors requête sont indépendants de 𝑅 : 𝑃 𝑡 ∈ 𝐷 𝑅 = 0, 𝑡 ∉ 𝑄 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 0, 𝑡 ∉ 𝑄 ⇒ 𝑠𝑄(𝐷) ∝ 𝑡∈𝑄∩𝐷 𝑝𝑡 1 − 𝑝𝑡 × 1 − 𝑢𝑡 𝑢𝑡 𝑎𝑣𝑒𝑐 𝑝𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 1, 𝑡 ∈ 𝑄 𝑢𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 0, 𝑡 ∈ 𝑄  Retrieval StatusValue : 𝑅𝑆𝑉𝑄 𝐷 = 𝑡∈𝑄∩𝐷 log 𝑝𝑡 1 − 𝑝𝑡 + log 1 − 𝑢𝑡 𝑢𝑡 D 𝑇1 𝑄, 𝑅 𝑇𝑉 …
  • 23. Mineure « Data Science » Frédéric Pennerath Le modèle probabiliste : Apprentissage des paramètres 𝑝𝑡 et 𝑢𝑡 Hyp : il existe un jeu d’apprentissage 𝐷+ 𝑄 ∪ 𝐷− 𝑄 pour la requête 𝑄 : 𝑝𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 1, 𝑡 ∈ 𝑄 = 𝑁 𝐷 ∈ 𝐷+ 𝑄 , 𝑡 ∈ 𝐷 + 𝛼 𝑁 𝐷+ 𝑄 + 2𝛼 = 𝑁𝑄 + 𝑡 + 𝛼 𝑁𝑄 + + 2𝛼 𝑢𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 0, 𝑡 ∈ 𝑄 = 𝑁 𝐷 ∈ 𝐷− 𝑄 , 𝑡 ∈ 𝐷 + 𝛼 𝑁 𝐷− 𝑄 + 2𝛼 = 𝑑𝑓𝑡 − 𝑁𝑄 + 𝑡 + 𝛼 𝑁 − 𝑁𝑄 + + 2𝛼 Remarque : on retrouve les coefficients idf : log 1 − 𝑢𝑡 𝑢𝑡 = log 𝑁 − 𝑑𝑓𝑡 𝑑𝑓𝑡 − 𝑁𝑄 + 𝑡 ≃ log 𝑁 − 𝑑𝑓𝑡 𝑑𝑓𝑡 ≃ log 𝑁 𝑑𝑓𝑡 = 𝑖𝑑𝑓𝑡 ⇒ 𝑅𝑆𝑉𝑄 𝐷 = 𝑡∈𝑄∩𝐷 log 𝑝𝑡 1 − 𝑝𝑡 + 𝑖𝑑𝑓𝑡 Fréquence de 𝑡 dans les documents Coefficient de Laplace
  • 24. Mineure « Data Science » Frédéric Pennerath Le modèle probabiliste BM25 (Spärck Jones et al. 2000) Problème : jeu d’apprentissage par requête contraignant / irréaliste Hypothèses : – Pas de documents pertinents : 𝑝𝑡 = 𝑃 𝑡 ∈ 𝐷 𝑅 = 1, 𝑡 ∈ 𝑄 = 1 2 – Mais prise en compte du nombre d’occurrences d’un terme dans le document relativement à sa longueur Résultat : 𝑅𝑆𝑉𝑄 𝐷 = 𝑡∈𝑄 𝑖𝑑𝑓𝑡 × 𝑘1 + 1 𝑡𝑓𝑡,𝑑 𝑘1 1 − 𝑏 + 𝑏 𝐿𝑑 𝐿 + 𝑡𝑓𝑡,𝑑 Typiquement 𝑏 = 0,75 et 1,2 < 𝑘1 < 2 Fréquence de 𝑡 dans le document 𝑑 Longueur du document 𝑑 Longueur moyenne des documents
  • 25. Mineure « Data Science » Frédéric Pennerath INTRODUCTION AUTALN (TRAITEMENT AUTOMATIQUE DU LANGAGE NATUREL) PRÉTRAITEMENT DUTEXTE POUR L’APPRENTISSAGE ET LA RECHERCHE D’INFORMATION
  • 26. Mineure « Data Science » Frédéric Pennerath Définition du vocabulaire Question : quels sont les termes à indexer ? Plusieurs problèmes : – Un terme est une notion spécifique à un langage. Exemple : mot pain en français/anglais => Intérêt de dissocier les termes par langage pour des index plus courts – Les « stop words » produisent des index inutiles et couteux : Exemple : en français un, le, la, est. En anglais a, the, is etc. – Synonymie : plusieurs mots désignent le même objet ou la même action : Exemple : formes conjuguées des verbes, accord des noms et adjectifs réguliers ou irréguliers, synonymes, etc. → nécessité de réaliser une recherche modulo les formes conjuguées – Polysémie : un même mot peut avoir plusieurs sens Exemple : les poules du couvent couvent.
  • 27. Mineure « Data Science » Frédéric Pennerath Prétraitement des textes à indexer 1. Segmentation du texte : séparation d’un document en unités d’indexation (paragraphes, pages, etc) 2. Identification de la langue de chaque unité 3. Tokenization : séparation du texte d’une unité en une liste de mots (token) Problème complexe spécifique à la langue : • En français, gestion des traits d’union, des apostrophes : Ex : l’article = (l + article), fait-il = (fait + il) mais chef-d’œuvre = (chef-d’œuvre) • En chinois, les mots sont une suite d’idéogrammes qui ne sont pas séparés par des espaces ! 4. Elimination des « stop words » de la langue 5. Normalisation simple des mots (minuscules, accents) 6. Décomposition de mots (allemand, etc) 7. Normalisation par racinisation ou lemmatisation
  • 28. Mineure « Data Science » Frédéric Pennerath Identification de la langue (Baldwin 2010) Remarques : • Le cosinus est utilisé comme mesure de similarité pour K-NN. • Pour une détection rapide, K-NN sur des vecteurs prototypes moyennés (quelques uns par langue) • La classification peut se faire sans tokenisation (sur le codage binaire brut) Unité textuel Extraction des n-grams (n=1, 2 ou 3) Classifieur (K-NN, SVM, Naive Bayes) Vecteur d’occurrences des différents items Langue Vecteurs d’occurrences pour des textes de référence
  • 29. Mineure « Data Science » Frédéric Pennerath Racinisation versus lemmatisation des mots Racinisation (stemming) : – Suite de règles ad hoc de simplification d’un mot spécifiques au langage pour obtenir une racine (stem) Ex: suis/es/est → être, ent/ant → *, *s → *, *ité → *, *ement → *, … – Stemmers : snowball.tartarus.org – Avantages : simple à implémenter, rapide – Inconvénient : approximatif Ex de confusion : majorité / major → major Ex de dissociation : contraindre → contraind / contraint → contraint Lemmatisation (lemmatization) : – Analyse morpho-syntaxique : construction d’un arbre syntaxique – Chaque mot est étiqueté par son lemme (représentant), son genre, son nombre, sa fonction, etc. – Avantage : rigoureux et précis (en théorie) – Inconvénient : couteux et gain faible dans le cadre de la RI
  • 30. Mineure « Data Science » Frédéric Pennerath Calcul de similarité entre termes et correction orthographique Que faire lorsqu’un terme de la requête n’est pas dans le dictionnaire ? → Correction orthographique : – Distance d’édition : nombre minimal de transformations • Avec ajout, suppression, remplacement de caractères • Avec en plus permutation de caractère – Problème de programmation dynamique : → 0 c→ 1 ca→ 2 cas→ 3 →s 1 c→s 1 ca→s 2 cas→s 2 →sa 2 c→sa 2 ca→sa 1 cas→sa 2 →sac 3 c→sac 2 ca→sac 2 cas→sac 2 Remplacement de an par bm Suppression de an Ajout de bm Temps ≈ 3 × 𝑛 × 𝑚 𝑎1 … 𝑎𝑛−1 → 𝑏1 … 𝑏𝑚−1 𝑎1 … 𝑎𝑛 → 𝑏1 … 𝑏𝑚−1 𝑎1 … 𝑎𝑛 → 𝑏1 … 𝑏𝑚 𝑎1 … 𝑎𝑛−1 → 𝑏1 … 𝑏𝑚 𝑑𝑠𝑎𝑛𝑠 𝑝𝑒𝑟𝑚𝑢𝑡. 𝑐𝑎𝑠, 𝑠𝑎𝑐 = 2 𝑑𝑎𝑣𝑒𝑐 𝑝𝑒𝑟𝑚𝑢𝑡. 𝑐𝑎𝑠, 𝑠𝑎𝑐 = 1 𝑑 𝑎1 … 𝑎𝑛 → 𝑏1 … 𝑏𝑚 = 𝑚𝑖𝑛 𝑑 𝑎1 … 𝑎𝑛−1 → 𝑏1 … 𝑏𝑚 + 𝑐𝑠𝑢𝑝𝑝𝑟 𝑎𝑛 𝑑 𝑎1 … 𝑎𝑛 → 𝑏1 … 𝑏𝑚 + 𝑐𝑎𝑗𝑜𝑢𝑡 𝑏𝑚 𝑑 𝑎1 … 𝑎𝑛−1 → 𝑏1 … 𝑏𝑚−1 + 𝑐𝑟𝑒𝑚𝑝𝑙 𝑎𝑛, 𝑏𝑚
  • 31. Mineure « Data Science » Frédéric Pennerath Calcul rapide de termes similaires : approche fondée sur les permutations circulaires Problème : le calcul de la distance d’édition d’un terme R de la requête avec tous les termes du vocabulaire est trop long. → Se focaliser sur les termes partageant un grand nombre de lettres consécutives avec R – Création d’un dictionnaire contenant toutes les rotations circulaires des termes. – Recherche des termes du dictionnaire préfixés par R supprimé des k derniers caractères – Calcul de la distance d’édition sur ces sous-ensembles de termes Exemple : k = 2 et requête = linx linx linx inxl nxli xlin linux linux inuxl nuxli uxlin xlinu lynx lynx ynxl nxly xlyn linx li in nx xl lin lin inl nli
  • 32. Mineure « Data Science » Frédéric Pennerath Calcul rapide de termes similaires : approche fondée sur les n-grams Idée : deux termes sont proches s’ils partagent de nombreux n-grams. Principe : 1. Chaque terme est décomposé en n-grams. Ex : trigrams(albatos) = {alb,lba,bat,ato,tos} 2. Chaque terme Ti du vocabulaire est indexé selon ses n-grams. 3. Les index des n-grams du terme R de la requête sont parcourus. 4. L’indice de Jaccard J(R,Ti) est calculé dynamiquement par comptage desTi dans les index des n-grams de R. 5. Seuls les termes Ti dont l’indice J(R,Ti) est supérieur à un seuil donné sont conservés. 6. Leur distance d’édition d(R,Ti) est finalement calculée. alb 1 2 lba 1 2 bat 1 2 ato atr 1 2 tro tre 1 tos ros 2 albâtre < albatros Trigrams de albatos     375 , 0 3 6 5 3 albatros albatos, 429 , 0 3 5 5 3 albatre albatos,         J J B A B A   B A B A B A J    ,                                            R n g i i R i R i i R i i i T L g T N T N n T n R T N T n R n T n R n T R J grams avec 1 1 grams grams grams grams ,    2
  • 33. Mineure « Data Science » Frédéric Pennerath Elastic Search / Solr Bases de données NoSQL orientée documents • Index  base de données • Type  ensemble de documents similaires  tables • Documents  tuples • Champs colonnes + un vrai moteur de recherche d’information : • Lucene : moteur de recherche Java • Indexation en continue • Fonctionnement en cluster • Fonctionnalités avancées