Académique Documents
Professionnel Documents
Culture Documents
(Information Retrieval)
Khaled Jouini
j.khaled@gmail.com
2017-2018
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.
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é”.
Recherche d’information
Principes généraux de la RI
Recherche d’information, principes généraux
Qualité de la recherche
Spécificités
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)
Qualité de la recherche
Indexation
Bases de données documentaires et distribuées Cours NFE04
Qu’est-ce que la recherche d’information (Information Retrieval) ?
Présentation informelle
Parfois utilisée dans les bases de données sous le nom d’index bitmap.
Répondons à la recherche
Requête : pièces contenant "Brutus" et "César", mais pas "Calpurnia"
Résultat : 110100
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.
Mais oui
Dans l’ensemble de la matrice, il n’y a que 109 positions avec des 1, soit un sur
500.
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é
Vocabulaire : le répertoire est parfois appelé dictionnaire ; les listes sont des
posting list en anglais ; les entrées sont des postings.
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
Notions de base
Poids des termes
Calcul de la similarité et similarité Cosinus
Exercices
L’algorithme PageRank
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
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.
En pratique, le calcul du score pour tous les documents n’est bien sûr pas faisable
(ni souhaitable d’ailleurs)
Quantification de la similarité
Approche simplifiée
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
Exercices
Exercices
Exercices
Notions de base
Poids des termes
Calcul de la similarité et similarité Cosinus
Exercices
L’algorithme PageRank
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 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
Donc tf (cochon, d) = 4
Deuxièmeindicateur
Deuxième indicateur :: fréquence inverse
la fréquence des documents
inverse des documents
|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
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
L
e tf.idf remplace l’indicateur 0/1 dans la matrice d’incidence.
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.
Notions de base
Poids des termes
Calcul de la similarité et similarité Cosinus
Calcul de la similarité
Similarité Cosinus
Exercices
L’algorithme PageRank
Calcul de
Features la similarité
Vector (descripteur)
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.
Distance Euclidienne ?
Potentiellement très coûteuse à calculer, et introduit un biais lié à la longueur
des documents.
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)
La similarité
Calcul cosinus
du cosinus de 2 vecteurs
En pratique
Calcul efficace car nécessite seulement les coordonnées non nulles.
Donc :
Normalisation
La division par la norme revient à éliminer le biais lié à la longueur des
documents.
Calcul
Calcul duducosinus
cosinus, de
en pratique
2 vecteurs en pratique
Algo, en bref
On multiplie deux à deux les tf.idf des termes communs aux deux vecteurs et
on les cumule.
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
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.
Autres aspects
Les phases de l’analyse
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
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.
Intuition
Un document vers lequel convergent beaucoup de chemins est un document
important.
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 .
Calcul du
Un PageRank, pas à pas
exemple plus complet
3
9
2
1
6
5
10
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
Calcul
Calcul duduPageRank,
PageRank, pas à pas
généralisé
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 :
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Petite
Petite extensionpratique
extension pratique
À 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.
Exercices
Exercices
Exercices
Chapitre 3 - SolR
SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
SolrCloud
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
Introduction
Introduction
Chapitre 3 - SolR
SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
SolrCloud
Installation
Chapitre 3 - SolR
SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
SolrCloud
Interface REST
curl http://localhost:8983/solr/moviesCore/update/json?commit=true
-data-binary @/moviesSolr.json
-H "Content-type:application/json"
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
Recherche
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
Schéma
Nombreuses options
{
"_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"]
}
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
Éléments clés :
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
Schema
Schema API
utiliser un managed-schema; et
le manipuler avec l’API Schema (et non en éditant manuellement le fichier comme
avec schema.xml)
Chapitre 3 - SolR
SolR, quésaco?
Installation
Insertion/recherche
Schéma SolR
SolrCloud
ZooKeeper
SolR et ZooKeeper
SolrCloud
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.
SolrCloud
ZooKeeper
ZooKeeper
Si vous avez déjà un core à distribuer, commencez par uploader sa config dans
zookeeper.
2 Dézippez l’archive de solr dans un autre répertoire <solr2>. Ceci va constituer notre
deuxième shard
2 ou
solr create -c shardedMovies2 -n moviesCoreConf -s 4 -rf 2
2 ou (API v2)
http://localhost:8983/api/c/moviesCore -H ’Content-type:application/json’ -d
’ ´
{ modify: { replicationFactor: "3", autoAddReplicas: false } }´