Les algorithmes que l’on va étudier portent sur la recherche d'informations dans des bases de textes. Cette recherche repose essentiellement sur l'utilisation de mots-clés.
Notation : q={t1,t2,…} ← liste de termes
Exemples :
La réponse du serveur est une liste ordonnée de références vers des documents de la base par ordre décroissant de pertinence.
Un algorithme de recherche d'informations est constitué de trois étapes:
Soit q une requête constituée de k termes : t1, …, tk.
On note Dt⊂B l'ensemble des documents contenant t.
L'ensemble de documents sélectionnés par la requête est Dt1∩...∩Dtk
On appelle fichier inverse la structure de données qui, à tout terme t, associe l’ensemble D(t) des références vers les documents contenant le terme t.
t→D(t)
On parle de multi-indexation (par opposition à l'indexation simple qui associe une clé à une référence)
La structure de données implémentant les fichiers inverse est un tableau bidimensionnel binaire T (appelé "bitmap")
Soit q une requête constituée de plusieurs termes i1,i2,...ik.
Cette requête s'interprète comme la recherche des documents contenant à la fois les termes i1 et i2,... et ik.
L'ensemble des documents sélectionnés par la requête est donnée par l'opérateur booléen "and": T[i1,:] and T[i2,:] and ... and T[ik,:]
On note {j1,j2,...} la liste des références des documents sélectionnés par la requête q.
Pour réduire les temps de réponse,il est nécessaire de paralléliser les calculs en répartissant la requête sur différents serveurs.
Algorithme de référence pour la parallélisation: MAP-REDUCE .
Pour chaque document d (indexé par j) sélectionné par fichier inverse, on calcule un score de similarité :sim(j,q)
Les documents sont ensuite classés par ordre décroissant de score. La réponse est une liste ordonnée de documents : (j′1,j′2,...) avec sim(j′1,q)≥sim(j′2,q)≥...
sim(j,q)=x.q||x⊕q||
sim(j,q)=x.q||x||×||q||
Les algorithmes d'indexation utilisés par les principaux moteurs de recherche prennent en compte la popularité des différentes pages~; les pages les plus "populaires" reçoivent un score plus élevé qui a tendance à les faire apparaître en premier dans la liste des réponses, selon:
Le calcul du Page Rank repose sur un modèle de parcours aléatoire de graphes. On considère un internaute se déplaçant sur le Web de manière aléatoire. A chaque page visitée, il suit un lien au hasard et répète cette opération un nombre indéfini de fois. Le résultat est un chemin aléatoire sur le graphe. Au cours de ce parcours, certains sites seront visités plus souvent que d'autres car il y a en moyenne plus de chemins qui y conduisent.
Modélisation statistique d’un parcours aléatoire du graphe du web
Soit un agent qui surfe sur le web au hasard
q est appelé le terme d'amortissement, fixé en pratique à 0.85.
Le graphe du web est constitué de n nœuds où chaque nœud est une page web. On considère que chaque page est indexée par un indice i∈1..n.
G=(1111111111111111111111111111) (La valeur 0 n'est pas représentée)
Le calcul du page Rank est fondé sur une estimation de la proportion de temps passée sur chaque site en suivant ce principe.
Il correspond à la mesure stationnaire de la chaîne de Markov associée, définie comme le vecteur x positif et de somme 1 vérifiant~: x=xQT avec~ Q=qP+(1−q)n1 avec 1 matrice de taille n×n ne contenant que des 1.
En pratique :
La mise à jour du graphe et du PageRank se fait de manière itérative à l'aide d'un "robot" qui parcourt le web de manière aléatoire et actualise le score de chaque page qu'il visite.
Certaines entreprises se sont spécialisées dans l'optimisation des scores de popularité (car valeur économique) à l'aide de "fermes à liens" –> séries de sites virtuels envoyant des liens vers les sites ciblés. (technique devenue obsolète avec les dernières versions de l'algorithme de Google…)
Conclusion : Des algorithmes de recherche facilement parallélisables : plus il y a de serveurs en parallèle, plus le temps de réponse est court… Une efficacité qui explique leur grand succès économique.