cours 2 recherche d'informations espace vectoriel des sacs de mots
TRANSCRIPT
Cours 2
Recherche d'informations
Espace vectoriel des sacs de mots
Recherche d'informations
Moteurs de recherche sur le web
Recherche dans d'autres ensembles de documents :
- les documents d'un utilisateur ou d'une entreprise
- la documentation technique d'un gros projet
Méthode de base
On suppose que le sens des textes contenus dans les documents se ramène aux tokens-mots, sans tenir compte de l'ordre : modèle du sac de mots (bag of words) ou modèle vectoriel
Recherche d'informations
Document
la plus petite quantité de texte indexée et renvoyée par un système de recherche d'informations
Ex. : page web, site web, article de journal, paragraphe...
Requête
La demande de l'utilisateur
Le modèle vectorielPrincipe
Imaginons que les tokens-mots des documents sont seulement
cinéma football rugby
On représente chaque document et la requête par un vecteur dans un espace à trois dimensions
Les coordonnées du vecteur sont 0 ou 1 suivant que le document contient le mot correspondant ou pas
Document1 Document2 Document3
cinéma 0 1 0
football 1 1 0
rugby 0 0 1
Le modèle vectorielVisualisation
Chaque dimension correspond à un des mots du vocabulaire
Chaque document correspond à un point dans l'espace, la requête aussi
cinémafootball
rugby
d1
d2
d3
Le modèle vectorielBeaucoup plus que 3 tokens-mots dans le vocabulaire
C'est un espace vectoriel à plus de 3 dimensions (N = plusieurs dizaines de milliers)
Vocabulaire
les tokens-mots de tous les documents indexés par le système
Vecteurs
d1 = (m1,1, m2,1, ... , mN,1) d2 = (m1,2, m2,2, ... , mN,2)
Similarité entre deux vecteurs
sim(d1, d2) = Σ1iN mi,1mi,2
C'est le nombre de coordonnées que les 2 vecteurs ont en commun
C'est le produit scalaire : 0 si vecteurs orthogonaux, N si égaux
Exempled1 : football football football football
d2 : football cinema football cinema cinema cinema football football cinema
d3 : rugby rugby rugby
Similarités entre vecteurs
sim(d1, d2) = 1
sim(d2, d3) = 0
sim(d1, d3) = 0
Le modèle vectorielOn prend le document qui a la similarité la plus élevée avec la
requête
L'ensemble des documents peut être représenté par une matrice
Lignes : les mots
Colonnes : les documents et la requête
d1 d2 d3 ...
cinéma 0 1 0 ...
football 1 1 0 ...
rugby 0 0 1 ...
... ... ... ... ...
ExempleRequête : cinéma rugby
d1 d2 d3 r
cinéma 0 1 0 1
football 1 1 0 0
rugby 0 0 1 1
... ... ... ... ...
Similarités 0 1 1
Meilleures réponses : d2 et d3
Le modèle vectorielLes coordonnées des vecteurs représentent les poids des
mots dans les documents
Au lieu d'utiliser des poids binaires (0 ou 1), on peut utiliser le nombre d'occurrences du mot dans le document
Exempled1 : football football football football
d2 : football cinema football cinema cinema cinema football football cinema
d3 : rugby rugby rugby
Similarités entre vecteurs
sim(d1, d2) = 16
sim(d2, d3) = 0
sim(d1, d3) = 0
ExempleRequête : cinéma rugby
d1 d2 d3 r
cinéma 0 5 0 1
football 4 4 0 0
rugby 0 0 3 1
... ... ... ... ...
Similarités 0 5 3
Meilleure réponse : d2
Le modèle vectorielLe produit scalaire sim(d1, d2) = Σ1iN mi,1mi,2 augmente avec la
taille des documents
Les documents longs ne sont pas plus intéressants que les courts
Donc on normalise la norme (longueur) de tous les vecteurs à 1
mi,k/Σ1jN mj,k2
(documents = points sur une sphère de rayon 1)
Similarité normalisée:
sim(d1, d2) = Σ1iN mi,1mi,2 /Σ1iN mi,12Σ1iN mi,2
2
C'est le cosinus de l'angle entre les deux vecteurs
Il ne dépend pas de la taille des documents (0 si vecteurs orthogonaux, 1 si égaux)
Exempled1 : football football football football
d2 : football cinema football cinema cinema cinema football football cinema
d3 : rugby rugby rugby
Similarités entre vecteurs
sim(d1, d2) = 0,62
sim(d2, d3) = 0
sim(d1, d3) = 0
ExempleRequête : cinéma rugby
d1 d2 d3 rcinéma 0 5 0 1football 4 4 0 0rugby 0 0 3 1... ... ... ... ...
Similarités 0 0,55 0,71Meilleure réponse : d3d2 n'est plus avantagé par sa longueurIl est désavantagé par le fait qu'il concerne aussi le football
Classement par pertinenceClassement des documents par ordre décroissant de similarité avec
la requête
Seuils
- nombre maximum de documents
- similarité minimale
En fonction des seuils, le système retient un ensemble de documents et les présente dans l'ordre de pertinence décroissante
Pondération par pertinence
Un défaut de la méthode précédente
Certains tokens-mots apparaissent souvent mais ne sont pas pertinents : de, le, à, un...
On les reconnaît parce qu'ils sont fréquents dans tous les documents
Pondération par pertinenceCoordonnées avec pondération par pertinenceOn utilise D documentsd(i) = le nombre de documents qui contiennent le mot iD/d(i) mesure la pertinence de i
1 D/d(i) D
mi,j = le nombre d'occurrences de i dans le document dj
On prend comme coordonnées de dj :
mi,j log D/d(i)(formule "TF IDF")
term frequency, inverse document frequency
On normalise la similarité avec ces nouvelles valeurs des coordonnées
Exempled1 : football football football football
d2 : football cinema football cinema cinema cinema football football cinema
d3 : rugby rugby rugby
d(i) log D/d(i)
football 2 0,41
cinema 1 1,10
rugby 1 1,10
Exempled1 : football football football football
d2 : football cinema football cinema cinema cinema football football cinema
d3 : rugby rugby rugby
Similarités entre vecteurs
sim(d1, d2) = 0,28
sim(d2, d3) = 0
sim(d1, d3) = 0
ExempleRequête : cinéma rugby
d1 d2 d3 r
cinéma 0 5 0 1
football 4 4 0 0
rugby 0 0 3 1
... ... ... ... ...
Similarités 0 0,68 0,71
Meilleure réponse : d3
ÉvaluationObjectif : évaluer un système de recherche d'informations
Documents pertinents : d'après un jugement humain
Documents retenus : par le système
Rappel
Proportion de documents pertinents retenus (PR) parmi tous les documents pertinents (P)
rappel = PR/P Le rappel est compris entre 0 et 1
silence = 1 - rappel
Précision
Proportion de documents pertinents retenus parmi tous les documents retenus (R)
précision = PR/RLa précision est comprise entre 0 et 1
bruit = 1 - précision
Quelques astucesUtilisation d’un index
Il est coûteux de calculer la similarité d’une requête avec tous les documents d’une collection (ex. s’il y en a des milliards)
On utilise un index pour faire un préfiltrage des documents selon la requête
Un index: à chaque token-mot, on associe l’ensemble des documents dans lesquels il apparaît
On ne garde que les documents qui contiennent au moins un token-mot de la requête
Filtrage de mots non pertinents
Certains mots ne sont pas pertinents pour un document: ex. de, la, les, quelques, plusieurs, nos, votre
Les fréquences ne sont pas un critère totalement fiable (nos n’est pas forcément très fréquent dans les textes)
On utilise une liste de mots non pertinents pour filtrer ces mots des textes et donc des vecteurs et de l’index
Diminution de la taille mémoire nécessaire
Pondération des zones de documents
Certaines parties de documents concentrent le plus d’informations pertinentes
Dans des documents structurés ou semi-structurés (XML, HTML), on peut considérer que les mots de certaines parties sont plus importants que les mots qui se trouvent dans les autres
Exemple: pour les pages Web, les mots du titre (balise <title>) et les mots-clés (balise META keywords) comportent beaucoup d’informations pertinentes
Prise en compte de la qualité d’un document
Dans une collection de documents, tous les documents n’ont pas la même qualité
Un exemple : internet
Une solution : tenir compte de la qualité des documents pour répondre à une requête donnée
Le cas de Google : algorithme PageRank
Principe de PageRank
Marque déposéePage : l'auteur de l'algorithmeAlgorithme PageRank : classement de l’ensemble des
pages Web selon leur « qualité »C’est un processus off-line (réalisé durant la phase
d’indexation)Principe : la qualité d’une page Web dépend du
nombre de documents qui citent cette page et de leur qualité=> La « qualité » d’une page est donc en fait sa popularité
Algorithme PageRank très simplifié
Un vecteur U : chaque composante est une mesure de la popularité d’un document
Une matrice M : représente le graphe de dépendance entre les pages
Calcul du PageRank par produit matriciel itératif
U[i+1] = M .U[i] avec U[0] fixé arbitrairement
U[i] = M i U[0]
On s’arrête lorsque l’on obtient un point fixe :
| U[i+1] - U[i] | < ε donné
autres critères
Distance entre les mots-clés dans le texte
Ordre des mots-clés