Vous êtes sur la page 1sur 40

NFE204 - Bases documentaires et NoSQL

NFE204 - Bases documentaires et NoSQL


Recherche d’information avec classement

Auteurs : Virginie Thion-Goasdoué, Philippe Rigaux

Équipe Vertigo
Laboratoire CEDRIC
Conservatoire National des Arts & Métiers, Paris, France
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement

Plan du cours

1 Requêtes avec classement

2 Classement par mesures d’importance


NFE204 - Bases documentaires et NoSQL
Requêtes avec classement

Classement par pertinence

Les requêtes Booléennes classent les documents en deux catégories : ceux qui
satisfont la requête, et les autres. C’est 1, ou c’est 0.

Le classement par pertinence (ranked search) trie un résultat en fonction d’un


“poids” (weight) entre 0 et 1 mesurant le degré de pertinence d’un document
pour une recherche.

Plusieurs approches complémentaires pour évaluer la pertinence d’un document


d pour une recherche q :
par similarité entre d et q ;
par l’importance relative de d par rapport à d’autres documents
semblables. Cf. PageRank ;
en prenant en compte l’utilisateur (profil, boucles de pertinence, etc.). Cf.
l’analyse des clics !
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement

Recherche par similarité

La requête r et le document d sont placés dans un même espace, avec une


fonction de distance dist.

Typ., on produit un vecteur de descripteurs (features), dans un espace


métrique multidimensionnel.

La similarité, ou score, est l’inverse de la distance.


1
sim(r , d ) =
dist(r , d )

Exemple (voir plus loin) : cosinus de l’angle entre deux vecteurs normalisés.
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement

Qualité de la recherche et du classement

La qualité d’une recherche par classement (et notamment de la fonction de


classement) est mesurée par deux indicateurs.
La précision est la fraction du résultat qui est vraiment pertinente.

|relevant| ∩ |retrieved |
precision =
|retrieved |
Le rappel est la fraction des documents pertinents présente dans le
résultat.
|relevant| ∩ |retrieved |
recall =
|relevant|
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Pondération des termes

Pondération des termes

Le classement s’appuie sur l’idée qu’il est possible d’identifier l’importance des
termes dans un document. Deux idées essentielles

Plus un terme est fréquent dans un document, plus il est représentatif du


contenu du document.
Ex. : contrepoint apparaît 10 fois dans le document d , ⇒ d est un
document important pour une recherche sur “contrepoint”.
Normalisation : si d est très long, il est normal de trouver plus
d’occurrences des termes ; on peut décider de normaliser cet indicateur
pour éviter ce biais.

Plus un terme est rare dans la collection, plus sa présence dans un document
est importante.
Ex. : musicologie apparaît 100 fois dans une grande collection, 4 fois dans
le document d ⇒ d est un document important pour une recherche sur
“musicologie”.
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Pondération des termes

Premier indicateur : la fréquence du terme

Soit un document d , t un terme. On note :


Le nombre d’occurrences de t dans d est noté nt,d
Le nombre total de termes dans d est ∑t 0 nt 0 ,d
La fréquence du terme (term frequency, tf ) est :

tf(t, d ) = nt,d

La fréquence normalisée du terme (term frequency, tf ) est :


nt,d
tf(t, d ) =
∑t 0 nt 0 ,d

Exemple : soit d le document suivant :


one such rule family incorporate jaguar their name jaguar paw
Quel est tf (jaguar, d) ?
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Pondération des termes

Deuxième indicateur : fréquence inverse des documents

Soit t un terme, une collection D. On mesure sa rareté de t par l’inverse de sa


fréquence dans D.
Le nombre total de documents est |D|
le nombre de documents avec t est |{d 0 ∈ D, |, nt,d 0 > 0}|

La rareté de t est donc mesurée par :

|D|
|{d 0 ∈ D | nt,d 0 > 0}|

Ajustement. La valeur obtenu par la formule ci-dessus croît très vite avec la
taille de la collection. On ajuste en prenant le logarithme et on obtient la
fréquence inverse ds docuements (inverse document frequency, idf)

|D|
idf(t) = log  0 .
d ∈ D | nt,d 0 > 0
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Pondération des termes

Pondération par TF-IDF

Le poids d’un terme dans un document est représenté par l’indicateur Term
Frequency—Inverse Document Frequency (tf-idf)
nt,d |D|
tfidf(t, d ) = · log  0
∑t 0 nt 0 ,d d ∈ D | nt,d 0 > 0

nt,d nombre d’occurrences de t dans d


D ensemble de tous les documents

le tf-idf décroît quand un terme est présent dans beaucoup de documents ;


il décroît également quand il est peu présent dans un document ;
il est maximal pour les termes peu fréquents apparaissant beaucoup dans
un document particulier.
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Similarité basée sur le tf-idf

Calcul de la similarité : le modèle vecteur

À ce stade, on peut décrire un document par un vecteur composé des poids de


tous ses termes.

Descr(d) = [’jaguar’ : 0.04, ’new’ : 5, ’world’ : 1.]

Le poids est à 0 pour les termes qui n’apparaissent pas dans le document. On
peut donc prendre un espace multi-dimensionnel où chaque axe est un des
termes du dictionnaire.

[’car’ : 0, ..., ’jaguar’ : 0.04, ..., ’kidney’ : 0, ..., ’new’ : 5, ...., ’world’ : 1.]

Remarque
L’espace a beaucoup de dimensions (des millions d’axes). Chaque vecteur est
principalement constitué de 0.
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Similarité basée sur le tf-idf

Une matrice avec les tf-idf dans chaque cellule

Chaque colonne est un vecteur représentant le document dans l’espace E |T | .

Il reste à mesurer la distance entre deux vecteurs pour obtenir une notion de
similarité.
Remarque
La requête (ensemble de mots) peut elle-même être vue comme un vecteur
dans cet espace, avec pondération uniforme.
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Similarité basée sur le tf-idf

Pourquoi pas la distance Euclidienne ?

Repose la question de la normalisation : attention aux vecteurs de normes très


différentes.

Ici, d2 et q semblent très proches : comment “capturer cette intuition ?


NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Similarité basée sur le tf-idf

Classement par cosinus

L’intuition
Plus deux documents sont “proches” l’un de l’autre, plus l’angle de leurs
vecteurs descripteurs est petit.

⇒ on utilise comme mesure de distance le cosinus de l’angle entre les deux


vecteurs.

Rappel : le cosinus est une fonction décroisante sur l’intervalle [0, 90].

Classement par similarité


On calcule le cos de l’angle entre la requête q et tous les documents, et on trie
par ordre décroissant.

Comment ?
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Similarité basée sur le tf-idf

Calcul du cosinus de deux vecteurs

Première étape : on normalise les vecteurs pour qu’ils soient de norme 1.


Norme du vecteur ~x :
q
||~x|| = Σi xi2

Seconde étape : pour deux vecteurs normalisés ~x and ~y , le cosinus est obtenu
˙ .
par le produit scalaire ~x~y

||~x|| = Σi xi yi

En pratique
On multiplie deux à deux les tf-idf des termes communs aux deux vecteurs et
on les cumule.
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Similarité basée sur le tf-idf

Illustration de la similarité cosinus

Tous les vecteurs sont normalisés (y compris la requête q).


NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Similarité basée sur le tf-idf

Variantes du tf-idf

Beaucoup de variantes ont été proposées (et sont implantées – sans doute –
dans les moteurs de recherche).
Variante de la fréquence des termes.
On peut prendre le nombre de termes (standard), le log du nombre de
termes, multiplier par une constante, etc.
Variante de la fréquence des documents.
On peut l’ignorer (tous les termes sont égaux), prendre ou non le log et
varier sa base, etc.
Variante de la normalisation
On peut ne pas normaliser, normaliser par le nombre de mots du
document, par la norme du vecteur, etc.
⇒ les systèmes Open Source comme Lucene vous permettent de définir votre
propre fonction de classement en fonction des tf , idf , etc.
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Calcul avec index inversés

En pratique, on fait comment ?

Calculer tous les cosinus pour chaque requête : très peu souhaitable....

On se sert de l’index inversé en intégrant, pour chaque entrée, le poids du


terme dans le document (tf-idf).
family d1 /11/.13, d3 /10/.13, d6 /4/.08, d5 /16/.07
football d4 /8/.47
jaguar d1 /2/.04, d2 /1/.04, d3 /2/.04, d4 /3/.04, d6 /8 + 13/.04,
d5 /4/.02
new d2 /5/.24, d1 /5/.20, d5 /15/.10
rule d6 /3/.28
us d4 /7/.30, d5 /11/.15
world d1 /6/.47
...
De plus les documents sont maintenant stockés en ordre décroissant des poids.

Les documents en tête de liste sont les plus pertinents pour le terme.
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Calcul avec index inversés

Exercice

Prenons les documents suivants :


1 d1 = I like to watch the sun set with my friend.
2 d2 = The Best Places To Watch The Sunset.
3 d3 = My friend watches the sun come up.
Construisez un index inversé intégrant les poids des termes ’Best’ and ’sun’.
Pour simplifier, normaliser par la taille du document, et n’appliquez pas le log.
Quel est le résultat classé de la requête ’[best, sun]’ ?
NFE204 - Bases documentaires et NoSQL
Requêtes avec classement
Calcul avec index inversés

Algorithme de base

On veut les k documents les plus pertinents pour une requête

t1 , . . . , tn

. On suppose pour commencer que les listes sont triées sur le docId.
1 On prend la première entrée de chaque liste et on obtient un tuple
T = [e1 , . . . en ] ;
2 Soit d1 le plus petit docId dans les entrées de T : on calcule le socre de d1
(cos(q, d1 )) et on stocke dans une mémoire tampon.
3 Pour chaque entrée ei contenant d1 , on avance sur la liste Li .
Quand toutes les listes sont parcourues, on trie la mémoire tampon sur le score,
et on prend les k premiers.

Pas très efficace car il faut avoir parcouru toutes les listes. Beaucoup
d’optimisations possibles...
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Plan du cours

1 Requêtes avec classement

2 Classement par mesures d’importance


NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

PageRank : importance déduite du graphe des documents

Dans le cas du Web (et quelques autres systèmes), les documents sont liés par
des hyperliens.

La structure de la collection est donc celle d’un graphe orienté.

Intuition
Un document vers lequel convergent beaucoup de chemins est un document
important.

En combinant avec des mesures de pertinence (tf/idf), on obtient un moyen


d’améliorer le classement.
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

PageRank : définition et exemples

Définition
L’indicateur PageRank (PR) d’une page pi est la probabilité qu’un utilisateur
suivant les liens de manière aléatoire arrive sur Pi .

À gauche : la probabilité d’arriver en A en une étape est


PR(A) = PR(B) + PR(C ) + PR(D)
À droite ?
Au départ, chaque page a un PR de 0,25. Quel est le PR après une itération ?
Et après deux ?
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Un exemple plus complet

3
9

2
1

6
5

10
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

On construit une matrice de transition

(
gij = 0 s’il n’y a pas de lien entre les pages i et j ;
gij = n1i sinon, ni étant le nombre de liens sortant de la page i.
 
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 1 1 0 1 0
 4 4 4 4 
0 0 0 1 1 0 0 0 0 0
 2 2 
0 1 0 0 0 0 0 0 0 0
 
 0 0 0 0 0 12 0 0 0 12 
 
G = 1 1 1
 3 3 0 3 0 0 0 0 0 0

 0 0 0 0 0 13 0 13 0 13 
 
 0 31 0 0 0 0 0 0 13 13 
 
1 1
 
0 0 0 0 0 0 0 0
2 2
0 0 0 0 1 0 0 0 0 0
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Calcul du PageRank

On construit par itérations un vecteur contenant l’indicateur PR de chaque


page du graphe.
Appelons-le v ; il contient autant de coordonnées que de pages du Web...
1
v est initialisé avec une distribution uniforme (v [i] = |v | ).
Sur notre exemple, la valeur initiale est 1/10.
À chaque itération, on ajuste v on calculant la probabilité qu’un
déplacement amène sur chaque page.
Regarder par exemple comment on calcule la probablité d’arriver en 2 à la
première itération.
On peut montrer qu’il y a convergence du vecteur v vers une limite.
 
pr(i) = lim (G T )k v
k→+∞ i
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.100
0.100

0.100

0.100
0.100

0.100
0.100

0.100

0.100

0.100
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.075
0.058

0.083

0.317
0.033

0.108
0.150

0.033

0.025

0.117
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.108
0.090

0.074

0.193
0.036

0.163
0.154

0.008

0.079

0.094
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.093
0.051

0.108

0.212
0.054

0.152
0.149

0.026

0.048

0.106
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.078
0.062

0.097

0.247
0.051

0.143
0.153

0.016

0.053

0.099
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.093
0.067

0.087

0.232
0.048

0.156
0.138

0.018

0.062

0.099
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.092
0.064

0.098

0.226
0.052

0.148
0.146

0.021

0.058

0.096
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.088
0.063

0.095

0.238
0.049

0.149
0.141

0.019

0.057

0.099
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.091
0.066

0.094

0.232
0.050

0.149
0.143

0.019

0.060

0.096
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.091
0.064

0.095

0.233
0.050

0.150
0.142

0.020

0.058

0.098
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.090
0.065

0.095

0.234
0.050

0.148
0.143

0.019

0.058

0.097
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.091
0.065

0.095

0.233
0.049

0.149
0.142

0.019

0.058

0.098
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.091
0.065

0.095

0.233
0.050

0.149
0.143

0.019

0.058

0.097
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Queques itérations PageRank

0.091
0.065

0.095

0.234
0.050

0.149
0.142

0.019

0.058

0.097
NFE204 - Bases documentaires et NoSQL
Classement par mesures d’importance

Petite extension pratique

Pour mieux modéliser le comportement d’un utilisateur, on s’autorise des sauts


d’une page à une autre, sans qu’il y ait nécessairement de lien.

À chaque étape, on prend en compte la possibilité d’un tel saut avec une
probabilité d (1 − d : damping factor). Ce qui donne :
 
pr(i) = lim ((1 − d )G T + dU)k v
k→+∞ i
1
où U est une matrice contenant N dans chaque cellule.

Vous aimerez peut-être aussi