Vous êtes sur la page 1sur 93

Introduction à la recherche d’information

(Information Retrieval)

Khaled Jouini
j.khaled@gmail.com

Institut Supérieur d’Informatique et des Technologies de Communication

2017-2018

1 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 1 / 82


Vue d’ensemble
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?

Qu’est ce que la RI? (Information retrieval, IR)


Information Retrieval, définition

Une définition
La Recherche d’Information (Information Retrieval, IR) consiste à trouver des
document peu ou faiblement structurés, dans une grande collection, en
fonction d’un besoin d’information.

Prend peu à peu la prédominance sur les techniques de bases de données.


Recherche sur le Web. Utilisée quotidiennement par des milliards
d’utilisateurs.
Recherche dans votre boîte mail.
Recherche sur votre ordinateur (Spotlight).
Recherche dans une base documentaire, publique ou privée.
À bien distinguer d’un recherche type “base de données” : requête structurée,
données structurées, réponse « exacte ».

2 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 2 / 82


Recherche d’information
Vue d’ensemble

Qu’est-ce
Recherche que lavs.
exacte RI?recherche
(Information Retrieval,
par similaritéIR)
Déf.: “étant donnée une grande collection de documents, la recherche
d’information consiste à identifier et classer ceux coorespondant à un besoin
donné”.

La recherche peut se faire :


sur les méta-données (annotations des documents);
sur le texte lui-même (full text search)

Différence essentielle avec SQL :


SQL renvoie une réponse exacte constituée des objets qui satisfont des
critères.
En RI, on renvoie une liste classée des objets les plus pertinents (ou les
plus proches) de la requête.

WebDam (CNAM) NFE204 – Bases de données avancées October 8, 2013 35 / 42

3 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 3 / 82


Vue d’ensemble

Recherche d’information

Principes généraux de la RI
Recherche d’information, principes généraux

L’utilisateur soumet une requête. Ce peut être


des mots-clés ou un document complet (recherche texte),
une image, un son, tout objet (recherche multimédia)
Le système
produit une description synthétique de la requête, dq .
compare cette description avec les descriptions des documents de la
base.
Le résultat est donné par ordre décroissant de proximité avec dq

WebDam (CNAM) NFE204 – Bases de données avancées October 8, 2013 36 / 42

4 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 4 / 82


Vue d’ensemble
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?

Qualité de la recherche
Spécificités

Recherche plus ou moins précise, documents peu structurés, résultats très


nombreux.
Problem
Comment évaluer la pertinence du résultat ?

Deux critères essentiels :


Précision : fraction des documents trouvés qui sont pertinents pour
l’utilisateur.
Rappel : fraction des documents pertinents qui sont trouvés par le
système.

Réfléchissez-y !
Un système de recherche documentaire parfait fournira des réponses dont la
1 quel est le rappel si la recherche ramène tous les documents ?
précision et le rappel sont égaux à 1
2 quelle est la précision si la recherche ne ramène aucun document ?
Précision : aucun document non pertinent (FAR = 0)
3 et inversement...
Rappel : totalité des documents pertinents (FMR =0)

5 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 5 / 82


Vue d’ensemble

Qualité de la recherche

Exercice : soit un système qui affiche systématiquement 20 documents, ni plus ni moins,


pour toutes les recherches. Indiquez quel est la précision et le rappel dans les cas
suivants :
1 Je cherche un document unique, il est affiché parmi les 20.
2 Ma base contient 100 documents, je veux tous les obtenir, le système m’en renvoie
20.
3 Je fais une recherche dont je sais qu’elle devrait me ramener 30 documents. Parmi
les 20 que renvoie le système, je n’en retrouve que 10 parmi ceux attendus.

6 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 6 / 82


Vue d’ensemble

Indexation
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?
Présentation informelle

Un outil pour faire mieux et plus vite


Indexation : Comment trouver rapidement (i.e. sans recourir à un balayage
séquentiel) les documents pertinents? Comment comparer rapidement 2
documents?
Une matrice d’incidence.
Un premier outil : la matrice d’incidence, appelée également index bitmap

Parfois utilisée dans les bases de données sous le nom d’index bitmap.

7 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 7 / 82


Vue d’ensemble

Bases de données documentaires et distribuées Cours NFE04


Indexation
Qu’est-ce que la recherche d’information (Information Retrieval) ?
Présentation informelle

Répondons à la recherche
Requête : pièces contenant "Brutus" et "César", mais pas "Calpurnia"

On prend les vecteurs d’incidence de chaque terme.


Brutus : 110100
César : 110111
Calpurnia : 010000
On fait un AND sur les vecteurs de Brutus et César.

Résultat : 110100

On fait un AND du résultat avec le complément du vecteur de Calpurnia


(101111).

Résultat : 100100
8 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 8 / 82
Vue d’ensemble
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?
Présentation informelle
Indexation
Passons à grande échelle

Quelques hypothèses :
Un million de documents, mille mots chacun en moyenne.
Disons 6 octets par mot, soit 6 GO (pas très gros en fait !)
Disons 500 000 termes distincts
⇒ la matrice a 500 × 109 bits, soit 62 GO.

Ne tient pas en mémoire, ce qui va beaucoup compliquer les choses....

Comment faire mieux ?

9 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 9 / 82


Vue d’ensemble
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?
Présentation informelle
Indexation
La matrice d’incidence est creuse

Mais oui
Dans l’ensemble de la matrice, il n’y a que 109 positions avec des 1, soit un sur
500.

Il faut une meilleure structure, appelée index inversé.

Brutus 1 2 3 4 11 31 45 173 175

César 1 2 4 5 6 16 57 132

Calpurnia 2 31 54 101

On ne peut plus se baser sur la position, donc on place dans les cellules
l’identifiant du document (docId ).
10 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 10 / 82
Vue d’ensemble
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?
Présentation informelle
Indexation
Index inversé

La structure utilisée dans tous les moteurs de recherche.


Un répertoire contient tous les termes.
Une liste (inversée) est associée à chaque terme, triée par docId.
Chaque élément de la liste est appelé une entrée.

Concept : la notion de terme (token en anglais) est différente de celle de


“mot”, voir plus loin.

Vocabulaire : le répertoire est parfois appelé dictionnaire ; les listes sont des
posting list en anglais ; les entrées sont des postings.

Efficacité : le répertoire devrait toujours être en mémoire ; les listes, autant


que possible en mémoire, sinon fichiers contigus sur le disque.

11 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 11 / 82


Vue d’ensemble
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?
Présentation informelle
Indexation
Traitement d’une recherche par fusion de listes triées

Recherchons les documents contenant Brutus et César.

On parcourt séquentiellement les deux listes.


On compare à chaque étape les docId ; s’ils sont égaux : trouvé !
On avance sur la liste du plus petit docId.

Curseur
1
2 1 2 3 4 11 31 45 173 175 Brutus
4

1 2 4 5 6 16 57 132 César

Curseur

Un seul parcours suffit : recherche linéaire, parcours séquentiel. Pas mieux.

C’est une recherche dite Booléenne : pas de classement, résultat exact.


12 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 12 / 82
Vue d’ensemble
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?
Présentation informelle
Que reste t-il à faire?
Que reste-t-il à faire ?

C’est juste la base. Voici quelques problématiques importantes pour la


recherche d’information, nécessitant des extensions / adaptations de l’index
inversé de base
Quels termes ? Quels termes indexe-t-on ? Beaucoup moins facile que ça n’en
a l’air...
Quelles requêtes ? De la plus simple (“sac de mots”) à plus structurée (index
struturé, requêtes Boolénnes, recherche de phrases).
Performance. Construction, compression, distribution, optimisation des accès,
mises à jour, etc.
Classement ? Si j’ai des millions de documents dans le résultat, je veux les
classer. Comment ?
On reprend pas à pas.

13 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 13 / 82


Recherche (full text) avec classement Notions de base

Chapitre 2 - Recherche (full text) avec classement

Notions de base
Poids des termes
Calcul de la similarité et similarité Cosinus
Exercices
L’algorithme PageRank

14 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 14 / 82


Recherche (full text) avec classement Notions de base

Espace métrique, distance et similarité

Définition
Soit E un ensemble (non vide). On appelle distance sur E une application m :
E × E → R+ vérifiant les trois propriétés suivantes :
1 Séparation : m(x, y ) = 0 ⇔ x = y, ∀x, y ∈ E
2 Symétrie : m(x, y ) = m(y, x ), ∀x, y ∈ E
3 Inégalité triangulaire : m(x, y ) ≤ m(x, z ) + m(z, y ), x, y, z ∈ E

Définition
Un ensemble E muni d’une fonction de distance est appelé espace métrique, ses
éléments sont habituellement appelés des points

14 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 14 / 82


Recherche (full text) avec classement Notions de base

Principes généraux de la RI

Recherche d’Information :

Une requête q est interprétée comme un besoin et on cherche à trouver les objets
(e.g les documents), les plus "pertinents" ou "proches" du besoin.

Il faut être capable de quantifier la "ressemblance" : donner une mesure du degrés


de similarité

Approche beaucoup plus riche qu’une recherche booléenne (tout au rien)

La contrepartie de cette flexibilité est l’abondance des candidats potentiels et la


nécessité de les classer en fonction de leur pertinence/score.

En pratique, le calcul du score pour tous les documents n’est bien sûr pas faisable
(ni souhaitable d’ailleurs)

Le moteur de recherche dispose de structures de données lui permettant de


déterminer rapidement les documents ayant le meilleur score. Ces documents sont
présentés à l’utilisateur, et le reste de la liste est calculé à la demande si besoin est.

15 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 15 / 82


Recherche (full text) avec classement Notions de base

Quantification de la similarité

La formalisation de la notion de pertinence ou de similarité, consiste à lui donner


une expression quantitative.

L’approche classique consiste à :


définir un espace métrique E doté d’une fonction de distance mE ;
définir une fonction f de l’espace des documents vers E;
f produit pour chaque document un objet de l’espace métrique, appelé descripteur,
qui le plus souvent prend la forme d’un vecteur appelé features vector
E est donc (le plus souvent) un espace vectoriel
f s’applique à la requête q vue comme un document;
Enfin, on mesure la pertinence ou similarité entre d et q comme l’inverse de la
1
distance entre f (d ) et f (q ) : sim(d, q ) =
mE (f (d ),f (q ))

La similarité est également appelé score

16 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 16 / 82


Recherche (full text) avec classement Notions de base

Approche simplifiée

Première approche (illustrative)


Soit le vocabulaire V = {t1 , t2 , ..., tn } composé de l’ensemble de tous les termes
apparaissant dans les différents documents
La fonction f (d ) = v produit pour chaque document d un descripteur v. v est une
sequence (un vecteur) de 1 et de 0. La coordonné i du vecteur est égale à 1, si le
terme ti est présent dans d et à 0 sinon.
on définit E comme l’espace (vectoriel) de tous les vecteurs constitués de n
coordonnées valant soit 0, soit 1 E = {0, 1}n
Distance Euclidienne entre 2 vecteurs v1 et v2 :

q
mE (v1 , v2 ) = (v11 − v21 )2 + (v12 − v22 )2 + ...(v1n − v2n )2
(
∞ si v1i = v2i ∀i
sim(v1 , v2 ) = 1
mE (v1 ,v2 )
sinon

17 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 17 / 82


Recherche (full text) avec classement Notions de base

Exercices

Soit les documents :


d1 : Le loup est dans la bergerie.
d2 : Les moutons sont dans la bergerie.
d3 : Un loup a mangé un mouton, les autres loups sont
restés dans la bergerie.
d4 : Il y a trois moutons dans le pré, et un mouton dans la
gueule du loup.
Le vocabulaire considéré est : "loup", "mouton", "bergerie", "pré", "gueule". L’espace
vectoriel est donc E = {0, 1}5
1. Construisez la fonction qui associe chaque document à un vecteur dans {0, 1}5 .
Vous pouvez représenter cette fonction sous forme d’une matrice d’incidence.
2. Calculez le score de chaque document pour les recherches suivantes, et en
déduire le classement :
q1 : "loup et pré"
q2 : "loup et mouton"
q3 : "Bergerie"
q4 : "gueule du loup"
18 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 18 / 82
Recherche (full text) avec classement Notions de base

Exercices

Critiques de l’approche simplifiée et de la distance Euclidienne


1 Supposons que l’on prenne comme distance non pas la distance Euclidienne mais le
carré de cette distance. Est-ce que cela change le classement ? Qu’est-ce que cela
vous inspire ?
2 Supposons maintenant que le vocabulaire a une taille très grande. On fait une
recherche avec 1 mot-clé.
1 quel est le score pour un document qui ne contient 99 termes et pas ce mot-clé?
2 quel est le score pour un document qui contient 101 termes et le mot-clé?
3 Conclusion? Le classement obtenu sera-t-il satisfaisant ? Trouvez un cas où un document
est bien classé même s’il ne contient pas le mot-clé!

3 Calculez le classement pour q5 : "bergerie et gueule" et tentez d’expliquer le résultat.


Est-il satisfaisant ? Quel est le biais (pensez au raisonnement sur la longueur du
document dans l’exercice précédent).
Cette première approche a mis en évidence plusieurs dysfonctionnement : les
mots n’ont pas tous la même importance. La distance euclidienne n’est pas
appropriée, etc. Ces différents points sont discutés dans la suite
19 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 19 / 82
Recherche (full text) avec classement Notions de base

Exercices

Critiques de l’approche simplifiée et de la distance Euclidienne


1 Supposons que l’on prenne comme distance non pas la distance Euclidienne mais le
carré de cette distance. Est-ce que cela change le classement ? Qu’est-ce que cela
vous inspire ?
2 Supposons maintenant que le vocabulaire a une taille très grande. On fait une
recherche avec 1 mot-clé.
1 quel est le score pour un document qui ne contient 99 termes et pas ce mot-clé?
2 quel est le score pour un document qui contient 101 termes et le mot-clé?
3 Conclusion? Le classement obtenu sera-t-il satisfaisant ? Trouvez un cas où un document
est bien classé même s’il ne contient pas le mot-clé!

3 Calculez le classement pour q5 : "bergerie et gueule" et tentez d’expliquer le résultat.


Est-il satisfaisant ? Quel est le biais (pensez au raisonnement sur la longueur du
document dans l’exercice précédent).
Cette première approche a mis en évidence plusieurs dysfonctionnement : les
mots n’ont pas tous la même importance. La distance euclidienne n’est pas
appropriée, etc. Ces différents points sont discutés dans la suite
19 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 19 / 82
Recherche (full text) avec classement Poids des termes

Chapitre 2 - Recherche (full text) avec classement

Notions de base
Poids des termes
Calcul de la similarité et similarité Cosinus
Exercices
L’algorithme PageRank

20 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 20 / 82


Bases de données documentaires et distribuées
Recherche Cours
(full text) NFE04
avec classement Poids des termes
Le poids des mots

Pondération
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”.
20 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 20 / 82
Bases de données documentaires et distribuées
Recherche Cours
(full text) NFE04
avec classement Poids des termes
Le poids des mots

Premier indicateur : la fréquence du terme


Premier indicateur : la fréquence du terme

Soit un document d , t un terme.

La fréquence du terme t dans d , noté nt,d , est simplement le nombre


d’occurrences de t dans d .
O
n parle bien de termes, résultats de la normalisation lexicale (racinisation,
élimination des mots inutiles, etc.)

Exemple : soit d le document suivant :


Spider Cochon Spider Cochon, il peut marcher au plafond,
Est ce qu’il peut faire une toile ? Bien sûr que non,
c’est un cochon. Prends garde ! Spider Cochon est là !

Donc tf (cochon, d) = 4

21 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 21 / 82


Le poids des mots Recherche (full text) avec classement Poids des termes

Deuxièmeindicateur
Deuxième indicateur :: fréquence inverse
la fréquence des documents
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 des documents (inverse document frequency, idf)

|D|
idf(t) = log  0 .
d ∈ D | nt,d 0 > 0

22 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 22 / 82


Le poids des mots Recherche (full text) avec classement Poids des termes

Pondération parTF-IDF
La pondération TF-IDF

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

L
e tf.idf remplace l’indicateur 0/1 dans la matrice d’incidence.

23 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 23 / 82


Le poids des mots Recherche (full text) avec classement Poids des termes

Pondérons nos cochons


La pondération TF-IDF

Voici des documents A, B et C.


Spider Cochon Spider Cochon, il peut marcher au plafond,
Est ce qu’il peut faire une toile ? Bien sûr que non,
c’est un cochon. Prends garde ! Spider Cochon est là !

Un petit cochon, pendu au plafond

Les Trois Petits Cochons est un conte traditionnel européen


mettant en scène trois jeunes cochons et un loup.

Test
Calculer le tf et l’idf pour les termes "cochon", "loup" et "plafond" et pour
chaque document. En déduire la matrice d’incidence.

24 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 24 / 82


Recherche (full text) avec classement Calcul de la similarité et similarité Cosinus

Chapitre 2 - Recherche (full text) avec classement

Notions de base
Poids des termes
Calcul de la similarité et similarité Cosinus
Calcul de la similarité
Similarité Cosinus
Exercices
L’algorithme PageRank

25 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 25 / 82


Similarité basée sur le tf-idf Recherche (full text) avec classement Calcul de la similarité et similarité Cosinus

Calcul de
Features la similarité
Vector (descripteur)

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


tous ses termes.

Descr(C) = [’cochon’ : 2, ’plafond’ : 0, ’loup’ : 4]

Le poids est à 0 pour les termes qui n’apparaissent pas dans le document. On a
un espace vectoriel E = N|V | , V étant le vocabulaire.

[’cochon’ : 0, ..., ’jaguar’ : 4, ..., ’loup’ : 0, ..., ’python’ : 2, ...., ’mouton’ : 0]

L’espace a beaucoup de dimensions (des millions d’axes / termes).


Chaque vecteur est principalement constitué de 0.

Distance Euclidienne ?
Potentiellement très coûteuse à calculer, et introduit un biais lié à la longueur
des documents.

25 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 25 / 82


Recherche (full text) avec classement Calcul de la similarité et similarité Cosinus

Classement par Cosinus

Les documents (B) et (D) contiennent respectivement une occurrence de "bergerie" et une
de "loup" : ils sont alignés avec les axes respectifs : le cosinus de cet angle (90 degrés), égal
à 0, représente la similarité entre (B) et (D).
Le documentBases de(A) contient
données documentairesune occurrence
et distribuées Cours NFE04 de "loup" et une de "bergerie" et fait donc un

Similarité basée sur le tf-idf
angle de 45 degrés avec l’abscisse : le cosinus de cet angle, égal à 2/2, représente la
similarité entreClassement
A et B. par cosinus
Plus deux documents
Nous nous intéressons sont “proches”
à la direction l’un de l’autre,
des vecteurs et nousplus ne
l’angle de leurspas tenir compte de la
voulons
vecteurs descripteurs est petit.
longueur (qui introduit un biais), d’où la normalisation (traits pleins/traits discontinus)

26 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 26 / 82


Similarité basée sur le tf-idf Recherche (full text) avec classement Calcul de la similarité et similarité Cosinus

La similarité
Calcul cosinus
du cosinus de 2 vecteurs

La similarité cosinus est un bon candidat pour mesurer la proximité des


vecteurs dans E N|V |

Indifférent la la longueur (norme) des vecteurs.


Maximal si même direction (angle = 0, cosinus = 1)
Minimal si directions "orthogonales" (pas de terme en commun)
Varie continuement entre 0 et 1.

En pratique
Calcul efficace car nécessite seulement les coordonnées non nulles.

27 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 27 / 82


Recherche (full text) avec classement Calcul de la similarité et similarité Cosinus
Calcul du cosinus de deux vecteurs
Calcul du cosinus de 2 vecteurs
Produit scalaire de deux vecteurs (niveau 3ème !)
Rappel : Produit scalaire de 2 vecteurs
n
v1 .v2 = ||v1 || × ||v2 || × cosθ = ∑ v1 [i] × v2 [i]
i=1
où θ désigne l’angle entre les deux vecteurs et ||v || la norme d’un vecteur.

Donc :

∑ni=1 v1 [i] × v2 [i]


cosθ =
||v1 || × ||v2 ||

Normalisation
La division par la norme revient à éliminer le biais lié à la longueur des
documents.

28 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 28 / 82


Similarité basée sur le tf-idf Recherche (full text) avec classement Calcul de la similarité et similarité Cosinus

Calcul
Calcul duducosinus
cosinus, de
en pratique
2 vecteurs en pratique

Première étape : on calcule la norme du vecteur représentant chaque


document, on la stocke.
Norme du vecteur ~d :
q
||~d || = Σi di2

Seconde étape : d le document, q la requête ; on prend les vecteurs ~q (calculé


à la volée) et ~d (stocké dans un index).
1 1
× × Σi d i q i
~
||d || ||~
q||

Algo, en bref
On multiplie deux à deux les tf.idf des termes communs aux deux vecteurs et
on les cumule.

29 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 29 / 82


Recherche (full text) avec classement Exercices

Chapitre 2 - Recherche (full text) avec classement

Notions de base
Poids des termes
Calcul de la similarité et similarité Cosinus
Exercices
Exercice 1 : calculons des tf / idf et des classements
Exercice 2 : interrogeons et classons
L’algorithme PageRank

30 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 30 / 82


Recherche (full text) avec classement Exercices

Exercice 1 : calculons des tf / idf et des classements

La table ci-dessous montre une matrice d’incidence avec une ligne par terme,
une colonne par document, l’idf de chaque terme et le tf dans chaque cellule.

Normaliser les vecteurs des tf pour chaque document.


Normaliser les vecteurs des tf pour chaque document, mais sur le sous-espace
(voiture, baleine).
Normaliser les vecteurs des tf.idf pour chaque document.
Calculer la norme des vecteurs tf
Calculer le classement des requêtes suivantes, sans tenir compte de l’idf (donc,
seul le tf entre en compte). Interprétez le résultat.
q1 voiture
q2 baleine
q3 voiture et baleine.
q4 voiture et baleine et marais et serpent
30 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 30 / 82
Recherche (full text) avec classement Exercices

Exercice 2 : interrogeons et classons

Reprenons les documents :


d1 : Le loup est dans la bergerie.
d2 : Les moutons sont dans la bergerie.
d3 : Un loup a mangé un mouton, les autres loups sont restés dans la bergerie.
d4 : Il y a trois moutons dans le pré, et un mouton dans la gueule du loup.
1. Donnez, pour chaque document, le tf de chaque terme.
2. Donnez les idf des termes (ne pas prendre le logarithme, pour simplifier)
3. En déduire la matrice d’incidence montrant l’idf pour chaque terme, le nombre
de termes pour chaque document, et le tf pour chaque cellule.
4. Reprenez les requêtes ci-après et calculez la similarité Cosinus en ne tenant
compte que des vecteurs des tf.
q1 : "loup et pré"
q2 : "loup et mouton"
q3 : "Bergerie"
q4 : "gueule du loup"
classez les documents B, C, D par similarité cosinus décroissante avec A;
calculez la similarité cosinus entre chaque paire de document ; peut-on identifier 2
31 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 31 / 82
Bases de données documentaires et distribuées
Recherche Cours
(full text) NFE04
avec classement Exercices

Autres aspects
Les phases de l’analyse

Avant d’insérer dans l’index, plusieurs phases.

Important : identification de quelques méta-données (la langue), prise en


compte du contexte (quels documents pour quelle application). Puis, de
manière générale :
Tokenization : découpage du texte en “mots”
Normalisation : majuscules ? acronymes ? apostrophes ? accents ?
Exemple : Windows et window, U.S.A vs USA, l’auditeur vs les auditeurs.
Stemming (“racinisation”), lemmatization
Prendre la racine des mots pour éviter le biais des variations (auditer,
auditeur, audition, etc.)
Stop words, quels mots garder ?
Mots très courants peu informatifs (le, un à, de).
C’est de l’art et du réglage... Dans ce qui suit : introduction / sensibilisation
aux problèmes.

32 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 32 / 82


Recherche (full text) avec classement L’algorithme PageRank

Chapitre 2 - Recherche (full text) avec classement

Notions de base
Poids des termes
Calcul de la similarité et similarité Cosinus
Exercices
L’algorithme PageRank
Idée de base
Définition et exemples
Calcul du PageRank, pas à pas
Calcul du PageRank, généralisé
Exercices

33 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 33 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

PageRank
Idée de : importance
base : importance déduite dudéduite dudocuments
graphe des 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.

33 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 33 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

PageRank
Définition et :exemples
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 ?
34 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 34 / 82
Bases de données documentaires
Recherche et
(fulldistribuées Cours NFE04
text) avec classement L’algorithme PageRank
Classement par mesure d’importance

Calcul du
Un PageRank, pas à pas
exemple plus complet

3
9

2
1

6
5

10

35 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 35 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

On construit
Calcul une matrice
du PageRank, de transition
généralisé

(
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
 1 1 1 
0 0 0 0 0 3 0 3 0 3 
 
 0 31 0 0 0 0 0 0 13 13 
 
0 1 1 0 0 0 0 0 0 0
2 2
0 0 0 0 1 0 0 0 0 0

36 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 36 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Calcul
Calcul duduPageRank,
PageRank, pas à pas
généralisé

Je veux calculer la probablité d’être en N2 à l’étape e. J’ai besoin :


de la probabilité d’être sur chaque nœud Ni à l’étape e − 1
⇒ c’est le vecteur des PageRank, appelons-le v .
de la probabilité d’arriver au nœud N2 venant du nœud Ni
⇒ c’est la seconde colonne de la matrice.
Allons-y. Au départ, le vecteur des PageRank est uniforme

v = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
La seconde colonne de la matrice, transposée est :

C2 = [1, 0, 0, 1, 0, 1/3, 0, 1/3, 1/2, 0]


Ce qui donne la probabilité d’arriver en N2 à la première itération

0.1 × 1 + 0.1 × 1 + 0.1 × 1/3 + 0.1 × 1/3 + 0.1 × 1/2 = 0.317


Interprétation : j’ai 10% de chances d’être en N1 , 100% de chances, étant en
N1 , d’aller en N2 , etc.
37 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 37 / 82
Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Calcul
Calcul duduPageRank,
PageRank, généralisé
généralisé

On effectue le calcul précédent pour tous les nœuds, et autant de fois que
nécessaire.
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 nœud.
On multiplie le vecteur v par la transposée de G (les colonnes donnent la
probabilité d’arriver sur un nœud).
On peut montrer qu’il y a convergence du vecteur v vers une limite.
 
pr(i) = lim (G T )k v
k→+∞ i

38 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 38 / 82


Recherche (full text) avec classement L’algorithme PageRank
Bases de données documentaires et distribuées Cours NFE04
Classement par mesure d’importance
documentaires et distribuées Cours NFE04
Quelques itérations PageRank
mesure d’importance
Queques itérations PageRank
emple plus complet

3 0.100
9 0.100

4 0.100

2 0.100
1 0.100

6 0.100
5 0.100

8
0.100

7
0.100
10
0.100

39 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 39 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.075
0.058

0.083

0.317
0.033

0.108
0.150

0.033

0.025

0.117

40 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 40 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.108
0.090

0.074

0.193
0.036

0.163
0.154

0.008

0.079

0.094

41 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 41 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.093
0.051

0.108

0.212
0.054

0.152
0.149

0.026

0.048

0.106

42 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 42 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.078
0.062

0.097

0.247
0.051

0.143
0.153

0.016

0.053

0.099

43 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 43 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.093
0.067

0.087

0.232
0.048

0.156
0.138

0.018

0.062

0.099

44 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 44 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.092
0.064

0.098

0.226
0.052

0.148
0.146

0.021

0.058

0.096

45 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 45 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.088
0.063

0.095

0.238
0.049

0.149
0.141

0.019

0.057

0.099

46 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 46 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.091
0.066

0.094

0.232
0.050

0.149
0.143

0.019

0.060

0.096

47 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 47 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.091
0.064

0.095

0.233
0.050

0.150
0.142

0.020

0.058

0.098

48 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 48 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.090
0.065

0.095

0.234
0.050

0.148
0.143

0.019

0.058

0.097

49 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 49 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.091
0.065

0.095

0.233
0.049

0.149
0.142

0.019

0.058

0.098

50 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 50 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.091
0.065

0.095

0.233
0.050

0.149
0.143

0.019

0.058

0.097

51 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 51 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Quequesitérations
Quelques itérations PageRank
PageRank

0.091
0.065

0.095

0.234
0.050

0.149
0.142

0.019

0.058

0.097

52 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 52 / 82


Classement par mesure d’importance
Recherche (full text) avec classement L’algorithme PageRank

Petite
Petite extensionpratique
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.

53 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 53 / 82


Recherche (full text) avec classement L’algorithme PageRank

Exercices

1 Nous supposons que l’on ne connaît que 3 pages du Web : A, B et C. A référence


uniquement B. B référence A et C. C référence A et B. Trouvez le pageRank de
ces pages après 4 itérations.
2 On suppose que l’on ne connait que 3 pages du Web : A, B et C. A et B se
référencent l’une l’autre, et C référence A. Quel est le pageRank de ces pages ?
3 Maintenant on suppose que le graphe contient 2 composants A et B. A contient n
pages, B contient k pages. Chaque page de A a des liens vers toutes les pages de
B, et aucun autre lien. Chaque page de B a des liens vers toutes les pages de A, et
aucun autre lien. Quel est le pageRank de ces pages ? (Vous noterez que le
pageRank est le même pour toutes les pages de A, pour des raisons de symétrie ;
même remarque pour les pages de B).
4 On prend un graphe avec deux pages A1 et A2 , et n pages {B1 , B2 , ..., Bn }.
Les deux premières se référencent l’une l’autre, chaque page Bi référence A1 .
Même question!

54 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 54 / 82


Recherche (full text) avec classement L’algorithme PageRank

Exercices

1 Répondez aux questions :


1 On exprime une requête avec un seul terme. Est-ce que l’idf du terme a une
importance pour le classement ?
2 Quel est l’idf d’un terme qui apparaît dans chaque document de la collection?
3 Je soumets une requête t1 , t2 , ..., tn . Quel est le poids de chaque terme dans le
vecteur représentant cette requête ? La normalisation de ce vecteur est elle
importante pour le classement (justifier) ?
4 Je soumets une requête composée de deux termes : "tératologie" et "document".
Lequel a le plus d’importance pour le classement, et comment est-ce pris en compte
par le moteur de recherche ?

55 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 55 / 82


Recherche (full text) avec classement L’algorithme PageRank

Exercices

1 Répondez aux questions :


1 Dans la figure ci-après, qu’obtient-on en projetant un vecteur sur chaque axe ?

2 Je soumets une requête composée de deux termes : t1 et t2 . Chaque document


contient soit t1 , soit t2 mais jamais les deux ensemble. De plus il y a autant de
documents avec t1 que de documents avec t2 . Quels sont les valeurs possibles des
poids calculés par le moteur de recherche ? Même question si la requête est
simplement t1 .
3 Un document peut-il obtenir un classement élevé même s’il ne contient pas tous les
termes de la requête ? Donner un exemple ou un contre-exemple (le plus simple
possible).
56 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 56 / 82
SolR SolR, quésaco?

Chapitre 3 - SolR

SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
SolrCloud

57 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 57 / 82


SolR SolR, quésaco?

Introduction
Introduction

Systèmes d’indexation :
Solr
Open Source
Fondation Apache
Sphinx
ElasticSearch

♠ Dans ce qui suit nous allons parler des documents Solr pour désigner la
liste des champs transmise à l’index, et les distinguer des documents
applicatifs de notre base de données documentaire

♠ Solr peut être vu comme une base de données spécialisée dans la


recherche d’information : on y insère des documents (Solr), conformes à
un schéma, et on peut rechercher des documents (Solr).

57 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 57 / 82


SolR SolR, quésaco?

À quoi sert Solr ?


Introduction

Solr est une application spécialisée dans la recherche


Repose sur l’index Lucene (Apache, auparavant projet distinct)

Efficacité très élevée pour la recherche


Moins pour les autres tâches de base de données (stockage, mise à jour
fréquentes)
Souvent c’est donc un complément d’un serveur de BDD (relationnelle ou
documentaire)
Spécialisé dans les recherches non structurées
ex. : recherche par mot-clef dans un site Web
Documents gérés par MySQL
Extraction des textes et construction de l’index avec Solr
Le champ “Recherche” interroge Solr, qui répond

58 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 58 / 82


SolR SolR, quésaco?

Architecture d’une application avec moteur de recherche


Introduction

59 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 59 / 82


SolR SolR, quésaco?

Introduction

60 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 60 / 82


SolR SolR, quésaco?

Introduction

61 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 61 / 82


SolR Installation

Chapitre 3 - SolR

SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
SolrCloud

62 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 62 / 82


SolR Installation

Installation

Installation très simple


pré requis : version récente de Java
télécharger la dernière version stable (7.2.1 au moment de la rédaction de ce
support) :
http://www.apache.org/dyn/closer.lua/lucene/solr/7.2.1
Décompresser quelque part ("soldir")
Ajouter soldir/bin à la variable système path
Démarrage
Standalone (Single node) : solr start
Cluster : solr -c start
lancer l’interface d’administration et de recherche : http://localhost:8983/solr
Terminonologie
Collection : index réparti
Core : index sur un seul noeud
solr create -c nomCore
Arrêt : solr stop -all
62 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 62 / 82
SolR Insertion/recherche

Chapitre 3 - SolR

SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
SolrCloud

63 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 63 / 82


SolR Insertion/recherche

Interface REST

Quatres possibilités pour insérer les documents à indexer


Utilitaire java fournis par Solr (sous soldir/example/exampledocs, pour documents
json ou xml)
java -Dc=nomCore -jar post.jar *.json
A travers la console d’administration (il faut obligatoirement mettre un champ
version)
Interface REST (HTTP) de Solr (nécessite l’installation du client curl)

curl http://localhost:8983/solr/moviesCore/update/json?commit=true
-data-binary @/moviesSolr.json
-H "Content-type:application/json"

DataImportHandler pour les sources de données externes


Formats acceptés : json, xml, csv, pdf/word/ppt (via Tika), Bases de données (via
DatImportHandler), BigData (connecteurs et intégration dans Hadoop, Hortonworks,
etc.)

63 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 63 / 82


SolR Insertion/recherche

Recherche

Solr dispose d’une interface REST pour rechercher des documents, dans le
navigateur ou avec curl
http://localhost:8983/solr/nomCore/select?q=summary:police
Avec la console d’administration

64 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 64 / 82


SolR Insertion/recherche

Recherche

Très utile, demander l’explication du résultat avec l’option debugQuery


http://localhost:8983/solr/loups/select?debugQuery=on&indent=on&q=

65 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 65 / 82


SolR Schéma SolR

Chapitre 3 - SolR

SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
Schéma SolR, à quoi ça sert?
Schéma SolR, exemple
Schéma SolR, éléments clé
Schema API
SolrCloud

66 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 66 / 82


SolR Schéma SolR

Schéma, à quoi ça sert?

Schéma

Donne à SolR des indications sur les champs du document à indexer

Dicte la manière avec laquelle il doit analyser et traiter ces champs.

Nombreuses options

type (numérique, entier, chaîne de caractères, texte)

possibilité de calcul de la valeur d’un champ à partir d’un autre

traitements divers sur les valeurs des champs

66 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 66 / 82


SolR Schéma SolR

Construisons notre moteur de recherche 16 / 36


Schéma, à quoi ça sert?
frametitle
Le schéma des documents indexés est soit
défini par l’utilisateur via un fichier <soldir>/nomCore/schema.xml
inféré (déduit par SolR). On parle alors de managed-schema

{
"_id": "movie:57",
"title": "Jackie Brown",
"year": "1997",
"genre": "crime",
"summary": "Jackie Brown, hôtesse de l'air, arrondit ses fins de mois ()",
"country": "USA",
"director": "Quentin Tarantino",
"actors": ["Robert De Niro", "Pam Grier", "Bridget Fonda","Michael Keaton","Samuel Jackson"]
}

67 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 67 / 82


SolR Schéma SolR

Schéma, exemple
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.5">
<uniqueKey>_id</uniqueKey>
<fieldType name="int" class="solr.TrieIntField"/>
<fieldType name="long" class="solr.TrieLongField"/>
<fieldType name="string" class="solr.StrField"/>
<fieldType name="text_fr" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords _f
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="tru
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ElisionFilterFactory" articles="lang/contractions_fr.txt"/>
<filter class="solr.FrenchLightStemFilterFactory"/>
</analyzer>
</fieldType>
<!- Un champ "technique" requis par Solr/Lucene ->
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="_id" type="string" indexed="true" required="true" stored="true"/>
<field name="country" type="string" indexed="true" required="true" stored="true"/>
<field name="filmInfo" type="text_fr" multiValued="true" indexed="true" stored="tru
<field name="genre" type="string" indexed="true" required="true" stored="true"/>
<field name="summary" type="text_fr" indexed="true" required="false" stored="false"
<field name="title" type="string" indexed="true" required="true" stored="true"/>
<field name="year" type="long" indexed="true" stored="true"/>
<copyField source="summary" dest="filmInfo"/>
<copyField source="title" dest="filmInfo"/>
</schema>
68 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 68 / 82
SolR Schéma SolR

Schéma, éléments clés

Éléments clés :

Fields : champs des documents à indexer

Field Types : types des champs. On peut en définir de nouveaux sur la base de
ceux fournis par SolR. Types prédéfinis :
Int, float, date, String (chaînes non analysées), etc.
Text : type des champs sur lesquels on peut appliquer des analyses comme les filtres
(lowercase/uppercase, les synonymes, tockenisation, etc.
Intérêt : on peut définir différents types d’analyse pour le type texte

Analyzer
S’applique sur les champs de type TEXT ou des types qui en dérivent
Indique à SolR comment il doit indexer le champ
Chaîne de traitement (pipeline) constituée de tokeniseurs et de filtres.
Tokenizer : comment les mots sont découpés
Filtres : examinent les tokens un par un et décident de les conserver, de les remplacer
par un ou plusieurs autres (lowerCase/uppercas, synonymes) etc.
69 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 69 / 82
SolR Schéma SolR
Construisons notre moteur de recherche 21 / 36

Définition des champs


Schéma

<field name="_id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

Les attributs de l’élement XML caractérisent le champ


Le nom et le type sont les informations de base
Ensuite, toute sorte d’attributs, souvent optionnels
“indexed” indique simplement que le champ pet être utilisé dans une recherche;
“stored” indique que la valeur du champ est stockée dans l’index, et qu’il est donc
possible de récupérer cette valeur comme résultat d’une recherche, sans avoir besoin
de retourner à la base principale; en d’autres termes, “stored“ permet de traiter
l’index aussi comme une base de données;
“required” indique que le champ est obligatoire;
enfin, “multivalued“ vaut “true“ pour les champs ayant plusieurs valeurs, soit,
concrètement, un tableau en JSON; c’est le cas par exemple pour le nom des acteurs.
Importance de des champs “indexed” et “stored” dont toutes les combinaisons sont
possibles.
“indexed=’true”’, “stored=’false”’: on pourra interroger le champ, mais il faudra
accéder au document principal dans la base documentaire si on veut sa valeur;
“indexed=’true’“, “stored=’true’“: on pourra interroger le champ, et accéder à sa
valeur dans l’index;
“indexed=’false’“, “stored=’true’“: on ne peut pas interroger le champ, mais on peut
récupérer sa valeur dans l’index;
“indexed=’false’“, “stored=’false’“: n’a pas de sens à priori; le seul intérêt est
d’ignorer le champ s’il est fourni dans le document Solr.

70 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 70 / 82


SolR Schéma SolR

Schema

Le squelette de schéma comprend également un champ "calculé", le champ “text“.


Les instructions “copyField“ indiquent qu’au moment de l’insertion d’un document,
on va "copier" certains champs dans celui-ci.
le type du champ "destination" correspond à un mode particulier d’indexation,
éventuellement différent et complémentaire de celui du champ "origine"; par exemple
le contenu d’un titre est indexé comme une chaîne de caractères dans le champ
“title“, et comme un texte "tokenisé" quand on le copie dans le champ “text“;
si toutes les occurrences de chaînes de caractères sont placées dans un même champ,
on obtient, en prenant ce champ pour cible, une recherche plein-texte globale, une
fonctionnalité souvent utile.

71 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 71 / 82


SolR Schéma SolR

Schema API

Modification manuelle du fichier schema.xml : peut conduire à des erreurs.

Dans les versions récentes, il est recommandé de

utiliser un managed-schema; et

le manipuler avec l’API Schema (et non en éditant manuellement le fichier comme
avec schema.xml)

Exemple : ajout d’un nouveau champ "f" au schéma


curl -X POST -H "Content-type:application/json"
-data-binary "{add-field:{name:f,type:text_fr,stored:true}}"
http://localhost:8983/solr/moviesCore/schema

72 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 72 / 82


SolR SolrCloud

Chapitre 3 - SolR

SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
SolrCloud
ZooKeeper
SolR et ZooKeeper

73 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 73 / 82


SolR SolrCloud

SolrCloud

Solr : pas conçu initialement comme un système distribué

Cet aspect n’est véritablement apparu qu’avec la version 4. Cela se ressent dans
la conception, un peu moins simple et intégrée que celle de MongoDB.

Une grappe de noeuds Solr (SolrCloud) est constituée de :


serveurs Solr individuels, tout à fait conforme à ce que nous avons déjà vu; et
d’un serveur ZooKeeper souvent répliqué (typiquement 3), prenant en charge les
tâches liées à la distribution.

Il est possible d’utiliser la version embedded de ZooKeeper ou de distribuer solr


avec une grappe zookeeper externe.

Cette deuxième option est à privilégier dans un environnement de production.

73 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 73 / 82


SolR SolrCloud

SolrCloud

Zookeeper : système maintenu par la fondation Apache (initialement sous projet


de Hadoop)

Objectif : fournir des services génériques dans un système distribué.

Ces services sont, pour l’essentiel, celles d’un noeud-maître assurant la


coordination des noeuds-esclaves, soit, concrètement :
gestion centralisée de la configuration (e.g. schéma SolR) ;
gestion des échanges de messages (avec des files d’attente) ;

contrôle de la disponibilité des serveurs ;


gestion de la reprise sur panne, et notamment élection d’un nouveau maître ;
distribution des tâches (load balancing).

74 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 74 / 82


SolR SolrCloud

ZooKeeper

Grappe gérée par ZooKeeper : 2 types de noeuds , le leader et les followers


Leader Node (Master)
Les écritures se font uniquement sur le noeud Leader.
Choisi par élection (PAXOS). Il est préférable que le nombre de noeuds soit impair
(Pourquoi?)
Follower Nodes (slaves)
répondent aux read requests mais transfèrent les write requests au leader
reçoivent et appliquent les messages de synchronisation envoyés par le Leader

75 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 75 / 82


SolR SolrCloud

ZooKeeper

76 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 76 / 82


SolR SolrCloud

Installation et lancement de ZooKeeper

1. Lancement d’un serveur zookeeper.


1 Téléchargez zookeeper
http://zookeeper.apache.org/releases.html.
2 Décompréssez zookeeper dans un répertoire que nous appelons dans la suite
<zooDir>.
3 Ajoutez une variable d’environnement ZOOKEEPER_HOME pointant vers
<zooDir>
4 Ajoutez <zooDir>/bin à la variable d’environnement PATH
5 Editez le fichier <zooDir>/conf/zoo_samples.cfg. Dans la ligne dataDir, mettez le
chemin vers le répertoire où vous souhaitez que zookeeper écrive ses données,
e.g. dataDir=/usr/zookeeper/ (le répertoire doit être créé au préalable)
6 Enregistrez le fichier sous le nom <zooDir>/conf/zoo.cfg. Puis, lancez zookeeper
avec la commande zKserver.cmd
7 Dans une autre fenêtre, vérifiez que zookeeper s’est bien lancé en lançant un
client zkCli.cmd. Si tout se passe bien vous devez avoir
[zk: localhost:2181<CONNECTED> 0].
77 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 77 / 82
SolR SolrCloud

Upload de la configuration d’un core existant

2. Upload d’une configuration existante

Si vous avez déjà un core à distribuer, commencez par uploader sa config dans
zookeeper.

Zookeeper se charge de distribuer la config au reste des noeuds solr.


solr zk -z localhost:2181 upconfig -n moviesCoreConf
-d C:\<SolrDir>\server\solr\moviesCore\conf

-n : le nom que nous donnons à la config dans zk.


-d : le répertoire contenant la configuration de l’index existant.

78 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 78 / 82


SolR SolrCloud

Lancement des instances SolR

3. Lancement des serveurs SolR et connexions à Zookeeper

Première méthode (2 instances indépendantes dans des répertoires différents)

1 Lancez le premier serveur :


solr start -c -z localhost:2181

2 Dézippez l’archive de solr dans un autre répertoire <solr2>. Ceci va constituer notre
deuxième shard

3 Sous <solr2> \bin, lancez le deuxième serveur (avec un port différent) :


solr2\bin>solr start -c -z localhost:2181 -p 8984

79 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 79 / 82


SolR SolrCloud

Lancement des instances SolR

3. Lancement des serveurs SolR et connexions à Zookeeper


Deuxième méthode : faire tourner les 2 instances sur la même machine
1 Sous le répertoire racine de SolR, créez 2 répertoires, noeud1 et noeud2.
2 Chacun de ces répertoires doit au minimum contenir un fichier solr.xml. Vous pouvez
copier ce fichier à la main à partir de server/solr ou alors le copier dans zookeeper
qui se chargera de le distribuer aux noeuds. e.g.
solr zk cp C:\<solDir>\server\solr\solr.xml zk:/solr.xml
-z localhost:2181
3 Lancez le premier serveur, puis le second (avec des ports différents)
solr start -cloud -s C:\..\solr-7.1.0\noeud1 -p 8983 -z
localhost:2181
solr start -cloud -s C:\<solDir>\noeud2 -p 8984 -z
localhost:2181

80 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 80 / 82


SolR SolrCloud

Création d’une collection partitionnée et répliquée

4. Création d’une collection partitionnée et répliquées


1 Avec curl
curl http://localhost:8983/solr/admin/collections?
action=CREATE&name=shardedMovies&
numShards=4&replicationFactor=2&
maxShardsPerNode=10&collection.configName=moviesCoreConf

2 ou
solr create -c shardedMovies2 -n moviesCoreConf -s 4 -rf 2

81 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 81 / 82


SolR SolrCloud

Création d’une collection partitionnée et répliquée

5. Vous pouvez si vous le souhaitez modifier une collection existante


1 avec curl
http://localhost:8983/solr/admin/collections?action=MODIFYCOLL
name=moviesCore&numShards=4&replicationFactor=2&maxShardsPerN
collection.configName=moviesCoreConf

2 ou (API v2)
http://localhost:8983/api/c/moviesCore -H ’Content-type:application/json’ -d
’ ´
{ modify: { replicationFactor: "3", autoAddReplicas: false } }´

82 / 82 Khaled Jouini c (IsitCom) Introduction à la recherche d’information 2017-2018 82 / 82

Vous aimerez peut-être aussi