Académique Documents
Professionnel Documents
Culture Documents
Cours TM4
Cours TM4
Julien Lemoine
3 juin 2008
1 Classification
2 Classification supervisée
4 Classification semi-supervisée
5 Recherche d’informations
Moteur de recherche
Latent Semantic Indexing
1 Classification
2 Classification supervisée
4 Classification semi-supervisée
5 Recherche d’informations
Moteur de recherche
Latent Semantic Indexing
Classification supervisée
Classification supervisée (classification) ou
catégorisation(categorization)
Séparer un ensemble de documents dans des catégories préétablies
Nécessite une base d’apprentissage ou les catégories sont déjà
affectées au document
Technique dite “d’apprentissage” (machine learning)
Problèmes communs
Les problématiques de traitement du langage naturel (TLN/NLP)
sont communes aux deux applications
Il faut transformer un document en un ensemble de descripteurs
1 Classification
2 Classification supervisée
4 Classification semi-supervisée
5 Recherche d’informations
Moteur de recherche
Latent Semantic Indexing
Objectif
Affecter des documents (ou des parties de documents) dans des catégories
prédéfinies en fonction de leurs contenus
Types de documents
Document (classique),
Paragraphe ou phrase,
Site internet,
...
Type de catégories
classement par sujet,
classement par auteur,
classement par style,
...
Julien Lemoine () Applications 3 juin 2008 12 / 109
Classification supervisée
Exemple
Le groupe de télécoms britannique Vodafone annonce la conclusion d’un
accord en vue de l’acquisition de ZYB, société danoise non cotée. ZYB
apporte ainsi au groupe son outil de gestion de réseaux sociaux,
permettant aux abonnés mobiles de sauvegarder et partager leurs contacts
et leur agenda en ligne. Le prix sur lequel les parties se sont entendues
s’élève à 31,5 Millions d’Euros, en numéraire.
Objectif
Déterminer si le document ci-dessus fait partie de la catégorie “acquisition
de société” ou pas.
Applications
Support: Trouver l’expert le plus approprié pour traiter ce problème
Alerte sur l’actualité: étiqueter les articles intéressants pour une
personne particulière
Gestion de la connaissance: organiser une base de documents par
catégories ayant un sens pour l’utilisateur
Crawl spécifique: récupérer toutes les pages sur un thème particulier
Détection de spam: est ce qu’un nouveau mail est un spam ou pas
...
Technologies
Règles ou requêtes manuelles
Apprentissage
Apprentissage
Étapes
Générateur: générer des descripteurs pour chaque document de la
base
Apprentissage: Donner une valeur/poids à chaque descripteur en
utilisant la probabilité P(Y | X ), X est l’ensemble de documents de la
base d’apprentissage et Y l’ensemble des catégories
Base d’apprentissage
Objectif
Trouver une règle de classification h avec une faible erreur de prédiction
Erreur de prédiction
Aussi appelée “Taux d’erreur”
Probabilité de faire une erreur sur un document de la base de
validation
Z
Errp (h) = P(h(~x ) 6= y ) = ∆(h(~x ), y )P(~x , y )dxdy
Fonction de coût
Ajouter une “pénalité” à chaque erreur de classification
Zero-One loss:
0 Si h(~x ) = y
∆(h(~x ), y ) =
1 Sinon
Apprentissage discriminatif
Proposer un modèle pour P(Y | X ).
Les paramètres (ou les coefficients dans le cas des méthodes
non-paramétriques) de ce modèle sont estimés par minimisation du
coût de classification
Exemples : arbres décisionnels, régression logistique (linéaire,
quadratique, SVM, ...), ...
Apprentissage génératif
Classification bayesienne
Cherche une structure pour la distribution jointe des entrées X et
sorties Y .
Exemples: Analyse Discrimante Linéaire (LDA), classifieurs Bayes
Naı̈fs (NB), ...
Classification Bayesienne
Si on connaı̂t P(Y = 1 | X ) et P(Y = −1 | X ), la classification
optimal est :
1 Si P(Y = 1 | X = ~x ) > P(Y = −1 | X = ~x )
h(~x ) ==
−1 Sinon
Théorème de Bayes
P(X | Y )P(Y )
P(Y | X ) =
P(X )
Et aussi
X
P(X ) = P(X | Y = y )P(Y = y )
y ∈Y
P(Y = 1 | X = ~x ) = 1 − P(Y = −1 | X = ~x )
On applique le théorème de Bayes :
P(X = ~x | Y = 1)P(Y = 1)
P(Y = 1 | X = ~x ) =
P(X = ~x )
est équivalent à :
|~x |
Y
P(X = ~x | Y = −1) = P(W = wi | Y = −1)
i=1
Règle de classification:
On prédit la classe +1 Si :
|~
x|
Y
P(Y = 1) P(W = wi | Y = +1) >
i=1
|~
x|
Y
P(Y = −1) P(W = wi | Y = −1)
i=1
TF (w , y ) + 1
P(W = w | Y = y ) =
ly + 2
Méthodes classiques
On dispose pour chaque catégorie de la liste des descripteurs (avec
leurs poids)
Quand un nouveau document arrive:
Parcourir toutes les catégories
Calculer le score pour chacune d’elles
Prendre la meilleur catégorie
Coûteux car il faut balayer pour chaque catégorie l’ensemble des
descripteurs : O(C × M) (C nombre de catégories et M le nombre de
descripteurs)
Espace dual
Pour chaque mot, on conserve la liste des catégories pour lesquelles le
poids de ce mot est non nul
Quand un nouveau document arrive, on recherche les mots qu’il
contient et on calcule la similarité avec les catégories qui ont au
moins un mot en commun avec le document
Peu coûteux : O(|D| × C ) dans le pire des cas (|D| = nombre de
mots dans le document), mais en pratique O(|D|) car il y a peu de
descripteurs en commun entre les catégories
1 Classification
2 Classification supervisée
4 Classification semi-supervisée
5 Recherche d’informations
Moteur de recherche
Latent Semantic Indexing
Principe
Le principe de la classification non supervisée (clustering) est le même
en Data-Mining et Text-Mining : séparer un ensemble d’éléments
(une entrée d’une base de données ou un document) en classes
Une classe doit contenir des documents similaires (homogènes) et
deux documents similaires ne devraient pas être dans deux classes
différentes
On appelle partition les classes obtenues si chaque document est dans
une classe
Problème extrêmement combinatoire: nombre de partitions d’un
ensemble de n objets = Bn (nombre de Bell, ex B6 = 203,
B20 = 5.1724 × 1013 , B71 = 4.0811 × 1074 )
Applications (1/3)
Détection de nouveaux événements dans un flux de dépêches (TDT: topic
detection and tracking), défit TREC sur ce sujet depuis la fin des années
90. Exemple de résultat sur le corpus TDT1 (CNN & Reuters, Jan-Fev
1995) :
Taille de la classe Meilleurs descripteurs de la classe
330 republ, clinton, congress, hous, amend,
217 simpson, presecut, trial, jury
98 israel, palestin, gaza, peac, aragat
97 japan, kobe, earthquake, quak, toky
93 russian, chhech, chechny, grozn, yeltsin
Applications (2/3)
Synthétiser les résultats d’une recherche (clusty.com).
Exemple sur la requête orange :
Taille de la classe Meilleurs descripteurs de la classe
89 Orange County
19 UK
13 Mobile
9 France, Telecom
9 Video
7 City of Orange
5 Citrus
6 Forecast, Conditions
7 History
6 Orange Box
Applications (3/3)
Classifier les documents d’une collection (vue synthétique d’un
corpus) : objectif découvrir l’information cachée dans un ensemble de
documents (par exemple analyse de mails de clients). Logiciels: SAS
Text Miner, Temis Insight Discoverer, ALCESTE, ...
Aide à la constitution de ressources. Par exemple taxonomie, création
de listes, ...
Les étapes
Définir le besoin et surtout les descripteurs (c.f. Cours1 sur les
techniques pour obtenir les descripteurs d’un document)
Choisir la mesure de similarité entre les documents (et surtout bien la
comprendre !)
Choisir l’algorithme/méthode pour obtenir les classes en fonction du
besoin (fixation du nombre de classes, fixation d’un seuil, complexité,
modèle mathématique, ...)
Exemple: maximiser la fonction objectif ci-dessous
X X X
Sim(Di , Dj )
Ci ∈P Di ∈Ci Dj ∈Ci ,i>j
Mesure de similarité
Distance euclidienne (norme L2 ) :
p
2
X
L2 (~x , x~0 ) = (xi − x 0 i )
i=1
norme L1
p
X
L1 (~x , x~0 ) = (| xi − x 0 i |)
i=1
similarité cosinus:
< ~x , x~0 >
cos(~x , x~0 ) =
| ~x | × | x~0 |
Une mesure de similarité a souvent tendance à favoriser soit les petits
documents soit les grands documents
Difficile de comparer des documents de tailles différentes
Julien Lemoine () Applications 3 juin 2008 37 / 109
Classification non supervisée
Définition du problème
Soit le problème de classification suivant :
Document Mot1 Mot2 Mot3 Mot4 Mot5
D1 1 0 1 1 0
D2 0 1 1 0 1
D3 1 0 0 0 1
D4 0 1 0 1 1
D5 1 0 0 1 0
D6 0 0 1 0 1
Trouver Les classes de documents homogènes (parallèle avec théorie
des votes)
A ne pas confondre avec le bi-clustering/sériation (permuter les
lignes/colonnes de cette matrice pour trouver une forme
blocks/diagonale)
Modélisation
d la matrice à classifier, dij = 1 si le descripteur j est dans le
document Di , 0 sinon
Soit l’accord entre deux documents, le nombre de descripteurs en
commun entre deux documents Aii 0 = < D ~ i , D~i 0 >
Soit l’accord maximum entre deux documents donnés par
AMii 0 = Min(Aii , Ai 0 i 0 ) (favorise les grands documents) ou
AMii 0 = Max(Aii , Ai 0 i 0 ) (favorise les petits documents)
Soit la matrice à trouver X , tel que Xii 0 = 1 si i et i 0 sont dans la
même classe, 0 sinon
Modélisation
On maximise le critère suivant :
n X
X n
C (X ) = (Aii 0 − αAMii 0 )Xii 0
i=0 i=0
1
Que penser du seuil α ? que représente α = 2 ? Que penser de la
matrice X ?
Modélisation
X est une relation d’équivalence, on cherche donc à chercher
l’optimum :
X n Xn
C (X ) = (Aii 0 − αAMii 0 )Xii 0
i=0 i=0
r éflexivité : Xii = 1
symétrie : Xii 0 = Xi 0 i
transitivité : Xii 0 + Xi 0 i 00 − Xii 00 ≤ 1
Programme linéaire
Modélisation proposée par J.F. Marcotorchino and P. Michaud (IBM,
1981 pour les données numériques, fin des années 90 pour le texte)
Le problème d’optimisation linéaire est tellement contraint qu’en
pratique un solveur sur nombres flottants suffit, il est très rarement
nécessaire d’utiliser un solveur sur nombres entiers
en pratique on utilise une heuristique pour le modèle mathématique
(il existe des heuristiques en O(N) pour ce problème)
Matrice de similarité
D1 D2 D3 D4 D5 D6
D1 3 1 1 1 2 1
D2 1 3 1 2 0 2
D3 1 1 2 1 1 1
D4 1 2 1 3 1 1
D5 2 0 1 1 2 0
D6 1 2 1 1 0 2
Conclusion
Bien choisir les descripteurs (les plus adaptés au domaine), ne pas
négliger les aspects TLN dans la classification de documents
Bien choisir sa mesure de similarité et connaı̂tre les conséquences de
ce choix
Le choix de l’algorithme/heuristique est moins important, il faut
surtout connaı̂tre les limites de la technologie (impossible de revenir
sur une erreur pour une classification hiérarchique ascendante,
problème de fixation de classe pour un K-means, ...)
1 Classification
2 Classification supervisée
4 Classification semi-supervisée
5 Recherche d’informations
Moteur de recherche
Latent Semantic Indexing
Principe
Les réglages des algorithmes de classification supervisée sont
complexes : comment extraire les descripteurs des documents, définir
la similarité entre documents, choisir le bon algorithme, ...
Idée: on pourrait donner un ensemble de documents déjà classifiés
pour apprendre comment classifier de manière automatique (mais
sans faire de la catégorisation) : “supervised clustering”
Par exemple prendre une journée de dépêches qu’on classifie pour
déterminer le meilleur modèle de classification à donner à un
algorithme de classification non supervisée
Principe
on suppose qu’on a une séquence de n exemples :
Pourquoi la similarité ?
Le choix des descripteurs est un domaine métier, il reste assez facile à
déterminer en fonction du domaine
La qualité/pertinence de la classification non supervisée dépend plus
de la similarité que de l’algorithme en lui même
Même avec un algorithme loin de l’état de l’art, une bonne mesure de
similarité donnera des résultats corrects (l’inverse est totalement faux
!)
Similarité
Pour chaque paire de documents xi et xj , nous avons un vecteur la
représentant. Par exemple le produit scalaire : φ~ij =< x~i , x~j >
Chaque dimension du vecteur φ~ij représente un descripteur qui reste
défini par l’utilisateur et doit être adapté au problème
La similarité entre les documents xi et xj est donnée par le produit
scalaire entre un vecteur de poids appris et le vecteur φ~ij
~ , φ~ij >
Sim(xi , xj ) =< w
Comment apprendre ?
Est-ce possible avec un classifieur binaire ?
A partir d’une base d’apprentissage (xi , yj ), i ∈ (0...n), j ∈ (0..k),
pour chaque paire de documents xi , xi 0 :
~ 0 est un exemple positif
Si xi et xi 0 sont dans la même classe, alors φii
~ 0
Sinon φii est un exemple négatif
Lancer un apprentissage et utiliser le résultat comme paramètre de
l’algorithme non supervisée
Exemple simple
Soit une base d’aprentissage constituée de 5 documents et 2 classes :
y1 = {x1 , x2 } et y2 = {x3 , x4 , x5 }
Exemples positifs : φ~12 , φ~34 , φ~35 , φ~45
Exemples négatifs : φ~13 , φ~14 , φ~15 , φ~23 , φ~24 , φ~25
En utilisant un SVM à deux catégories, on obtient un vecteur de
~ :
poids w
~ , φ~ij >
Sim(xi , xj ) =< w
Qualité d’apprentissage
Dans la plupart des problèmes de classification non supervisée, il y a
beaucoup plus d’exemples négatifs que positifs
L’aprentissage risque donc de sous-estimer les exemples positifs
On risque de trop modéliser les relations intra-classes sans modéliser
les relations inter-classes (qui doivent être le plus faible possible) et
les effets de transitivités inter-classes
Conclusion
Le modèle binaire ne suffit pas, il est préférable d’apprendre un
modèle plus complexe. Les deux solutions utilisées sont :
Utilisation de méta-heuristique (algorithmes génétiques notamment)
pour résoudre ce problème
Utilisation de SVM non linéaire, le plus aboutie étant SVM struct
(extension de SVM light) permettant d’apprendre exactement ce type
de fonction
Globalement cette technique permet d’améliorer les résultats des
algorithmes de classification non supervisée
1 Classification
2 Classification supervisée
4 Classification semi-supervisée
5 Recherche d’informations
Moteur de recherche
Latent Semantic Indexing
Crawler
Gérer un budget de X pages à indéxer de la manière la plus optimale
possible
Quelles pages télécharger ? Quelles sont les plus importantes ?
Il y a une infinité de pages (gestion des ids de session, des pages
accessibles via différents tags, ...)
Quelles pages rafraı̂chir ?
Éviter les spams
Quelle est la notion d’un site ? Comment gérer les sites avec plusieurs
serveurs (www1.orange.fr = www2.orange.fr),
http://perso.wanadoo.fr doit-il être considéré comme un site ?
Comment obtenir la vrai date d’une page ?
...
Le crawler est un sujet très complexe !
Julien Lemoine () Applications 3 juin 2008 60 / 109
Recherche d’informations
Batches de calculs
Comment déterminer si une page est un spam ou pas ? Il existe de
nombreux types de spam.
Comment trouver les pages les plus pertinentes pour un mot donné ?
Comment trouver les pages les plus populaires ? sur un domaine
précis ?
Comment classifier les pages en catégories ?
...
Les batches doivent gérer une quantité énorme de données et des
problèmes complexes
Indexation
Quelles transformations linguistiques appliquer à un document ?
Quelle score affecter à chaque descripteur d’un document ?
Comment transformer du texte en concepts sémantiques ?
...
Index
Comment stocker de la manière la plus efficace possible les listes
inversées ?
Comment répondre le plus rapidement possible aux requêtes
utilisateurs ?
...
Front
Comment prendre en compte la langue et la géolocalisation d’un
utilisateur (par exemple la requête “cinéma” en france et au “canada”
ne doivent pas donner les mêmes résultats...) ?
Comment corriger les requêtes mal orthographiées ?
...
Complexe
Globalement faire un moteur de recherche est une tâche complexe à tous
les niveaux
Recherche distribuée
Plusieurs corpus de documents
Plusieurs machines
Plusieurs paramètres de recherche/indexation
Complexité: fusionner les résultats des différents corpus
Évaluation
Les méthodes d’évaluations sont une partie importante de la
recherche d’informations depuis les années 60
Au début, le travail était de comparer l’indexation automatique et
manuelle (typiquement l’index d’un livre)
Type d’évaluation
Assistance à la formulation de requête
Temps de réponse
Temps processeur utilisé
Pertinence des résultats
En général, comparaison de deux systèmes
Pertinence
La pertinence est difficile à définir de façon satisfaisante
Un document pertinent est un document jugé utile dans le contexte
de la requête
Qui juge ?
Quelle est la définition d’utile ?
Les jugements différents en fonction de la personne
Le contexte de jugement est plus vaste que la requête et le document
Dans un vrai corpus, l’ensemble des documents pertinents est inconnu
Corpus de tests
Les performances d’un système de recherche sont comparées avec un
corpus de test : ensemble de documents, de requêtes et de résultats
jugés pertinents
Plusieurs techniques de comparaison :
Chaque technique est utilisée pour évaluer les résultats d’une requête
Les résultats sont comparés en utilisant une mesure
Mesures les plus connues: la précision, le rappel, les F-mesures
On utilise souvent plusieurs mesures pour évaluer les différents
aspects de la pertinence
On teste souvent avec plusieurs corpus car les mesures sont
dépendantes d’un corpus
Évaluation
Pour les petits corpus, il est possible d’évaluer tous les documents
d’une requête, ce n’est pas le cas pour les grands corpus
Juger les n premiers documents pour chaque système
Mesures
Rappel: pourcentage des documents pertinents qui sont dans les
résultats :
nb de docs pertinents dans les r ésultats
R=
nb de docs pertinents dans le corpus
Précision: Pourcentage des documents pertinents parmis les résultats:
nb de docs pertinents dans les r ésultats
P=
nb de docs dans les r ésultats
Loi de Zipf
La loi de Zipf relie la fréquence des mots à leur rang (si on les trie par
fréquence décroissante)
Il existe une constante k, telle que fr équence × rang = k
Si on tri les mots par ordre décroissant :
Soit fr la fréquence du mot à la position r
Soit N le nombre Pd’occurrences et M le nombre de mots
M
Soit pr = Nfr et r =1 pr = 1
On observe (empiriquement) pr = Ar avec A ≈ 0.1
Par conséquence: pr = Nfr = Ar → r × fr = AN
N
k ≈ 10 en anglais
Loi de Zipf
Mot Fréquence r × pr Mot Fréquence r × pr
the 1,130,021 0.059 by 118,863 0.081
of 547,311 0.058 as 109,135 0.080
to 516,635 0.082 at 101,779 0.080
a 464,736 0.098 mr 101,679 0.086
in 390,819 0.103 with 101,210 0.091
and 387,703 0.122 form 96,900 0.092
that 204,351 0.075 he 94,585 0.095
for 199,340 0.084 million 93,515 0.098
is 152,483 0.072 year 90,104 0.100
said 148,302 0.078 its 86,774 0.100
it 134,323 0.078 be 85,588 0.104
on 121,173 0.077 was 83,398 0.105
Comment indexer ?
Les base de données utilisent des clés primaires et secondaires pour
l’indexation
La base de données permet un accès rapide à un sous ensemble
d’éléments qui sont ensuite analysés pour trouver les éléments
répondant à la requête.
Utiliser un id, le titre, l’auteur, la date... comme clé primaire ?
Bonne idée, mais aucune de ces informations n’est utilisée dans la
requête
Quelles sont les clés utilisées en recherche d’informations ?
N’importe quel mot d’un document est un candidat pour un terme de
requête
Il faut donc indexer tous les mots des documents (indexation full-text)
Utiliser un index
Un index associe un document à de nombreuses “clés”
Obtenir le document quand on demande une de ses “clés”
Pratique pour les “grandes” bases de documents
De nombreuses optimisations sont possibles !
Indexation
Indexation full-text
Chaque atome de l’index correspond à un mot
Langage de requête
Requêtes sous forme de ET : W1 &W2 &...&Wn
Une requête est une suite de mots
Modèle de recherche
Renvoyer les documents qui satisfont la requête
Un document satisfait la requête si il contient tous les mots de la
requête
Index inversé
Source: ensembles de documents
Listes inversées: ensemble de documents organisés par mots :
Une entrée par mot donnant tous les documents qui possèdent ce mot
Les listes inversées sont la manière la plus répandu d’indexer du
contenu aujourd’hui
Exemple
Mot DocIDs
DocID Contenu computer 6
1 machine learning database 4
2 human learning human 2
3 learning systems learning 1, 2, 3
4 database theory machine 1
5 operating systems operating 5
6 computer systems systems 3, 5, 6
theory 4
Contenu de l’index
Informations sur la présence/absence d’un document dans une liste:
Stocke le Did dans la liste inversée du mot (booléen)
Quelques statistiques (tf, df, doclen, maxtf)
Représente 10% de la taille des documents sources
Information sur la position des mots dans le document d’origine
Doit garder la position de toutes les occurrences du mot dans le
document
Information de scores sur les occurrences
Représente 20-30% de la taille des documents sources
Exemple
Mot DocIDs
Opérateurs: computer 6
ET: intersection des database 4
listes inversées human 2
OU: union des listes learning 1, 2, 3
inversées machine 1
NON: complément operating 5
d’une liste inversée systems 3, 5, 6
theory 4
Exemple
Mot DocIDs
DocID Contenu computer 6:1
1 machine learning database 4:1
2 human learning human 2:1
3 learning systems learning 1:2, 2:2, 3:1
4 database theory machine 1:1
5 operating systems operating 5:1
6 computer systems systems 3:2, 5:2, 6:2
theory 4:2
Requête “...”: rechercher les mots adjacents
NEAR: rechercher les mots avec une distance ≤ X
Vecteurs creux
Les vecteurs en recherche d’informations ont de nombreuses
dimensions, mais sont très creux: on stocke uniquement les éléments
présents sous forme de liste triée :
(0, 0, 0, 0, 4, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0) ⇒ 5 : 4, 8 : 3, 11 : 1
Construction de l’index
Première étape: construction partielle en mémoire
Lecture séquentielle des documents
Construction des “postings” pour chaque document
Tri en RAM pour créer les listes inversées
Deuxiéme étape: fusion des constructions partielles
Union des listes inversées
O(log(n) x Taille) n = nombre de constructions partielles
Compression de l’index
Les listes inversées sont compressées en général
Les listes inversées non compressées avec les positions des mots sont
de taille équivalente aux documents sources
Les listes inversées compressées sans les positions des mots sont
environ 10x plus petites que les documents sources
Les listes inversées compressées avec les positions des mots sont
environ 4-5x plus petites que les documents sources
La plupart des nombres stockés dans les listes sont petits (positions
des mots, fréquences des mots, ...)
On utilise des techniques de compressions simples afin de réduire les
coûts disques sans trop augmenter les coûts CPU
Techniques de compression
Principe: on stocke toujours des offset et non pas les ID, ainsi la liste
inversée : 5 : (1, 3, 10), 8 : (2, 8), 15 : (1, 5) devient
5 : (1, 2, 8), 3 : (2, 6), 7 : (1, 4)
On a beaucoup de petits entiers (mais > 0) qu’on va stocker de
manière efficace : on va utiliser sur un modèle bit à bit
Code unaire: stocke la valeur x sur x bits (x − 1 bits à 1 et 1 bit à 0)
Ex: 1 = 0, 10 = 1111111110
Code γ : stocke x avec un préfixe en code unaire représentant
1 + blog (x)c et un suffixe de blog (x)c bits correspondant à la valeur
x − 2blog (x)c .
Ex: 10 = 1110 010 (préfixe = 4, suffixe = 2), x = 23 + 2
Techniques de compression
Code δ : stocke le préfixe avec un Code γ au lieu d’un code unaire.
Ex: 10 = 11000 010 (préfixe = (3, 0), suffixe = 2) (préfixe = 22 + 0
et suffixe = 2), x = 23 + 2
Code paramétrique de Golomb (basé sur un modèle de Bernouilli) :
idée prendre en compte la probabilité d’apparition du mot pour avoir
la meilleur compression possible (paramètre b): préfixe q + 1 en
unaire et le préfixe en binaire (x − q × b − 1) avec q = b x−1
b c
Techniques de compression
Quand b est une puissance de 2 c’est un code de Rice
La partie binaire du code de Golomb est optimisée. Par exemple
quand b = 6 alors 0 ≤ r ≤ 5
r binaire code
0 000 00
1 001 01
2 010 100
3 011 101
4 100 110
5 101 111
Ex (b = 6): 10 = 10 101 (préfixe = 2, suffixe = 3),
q = 1etr = 3 ⇒ x = b × q + r + 1 = 6 × 1 + 3 + 1 = 10
Exemples de compression
Gap Code unaire Code γ Code δ Golomb Golomb
b=3 b=6
1 0 0 0 00 0 00
2 10 10 0 100 0 0 10 0 01
3 110 10 1 100 1 0 11 0 100
4 1110 110 00 101 00 10 0 0 101
5 11110 110 01 101 01 10 10 0 110
6 111110 110 10 101 10 10 11 0 111
7 1111110 110 11 101 11 110 0 10 00
8 11111110 1110 000 11000 000 110 10 10 01
9 111111110 1110 001 11000 001 110 11 10 100
10 1111111110 1110 010 11000 010 1110 0 10 101
Listes inversées
En pratique toutes les informations des listes inversées sont stockées
sous forme de code à tailles variables (choix du code en fonction du
type d’information)
Ces codes sont très rapides (masques de bits...) et permettent d’avoir
des taux de compression importants
Un simple accès disque permet de ramener une quantité importante
d’informations
1 Classification
2 Classification supervisée
4 Classification semi-supervisée
5 Recherche d’informations
Moteur de recherche
Latent Semantic Indexing
Objectif
Autoriser des documents à être similaires même si ils ne partagent
aucun mots
Ne pas utiliser les mots comme descripteurs mais construire des
nouveaux discripteurs (en petit nombres)
Trouver les dimensions “latent semantic”
Hypothèse
La co-occurrence de mots contient de l’informations sémantiques
Méthode
Début: matrice documents/mots
Effectuer une décomposition en valeurs singulières (SVD)
Utiliser les k(≈ 300) meilleurs vecteurs propres comme dimensions
Décrire les documents dans ce nouvel espace
Julien Lemoine () Applications 3 juin 2008 102 / 109
Latent Semantic Analysis
Matrice de départ
Descripteur D1 D2 D3 D4 D5 D6
Astronaut 1 0 1 0 0 0
Cosmonaut 0 1 0 0 0 0
Moon 1 1 0 0 0 0
Car 1 0 0 1 1 0
Truck 0 0 0 1 0 1
A = T × S × D0
Ak = T × Sk × D 0
A0 × A = (D × S) × (D × S)0
Ak 0 × Ak = (D × Sk ) × (D × Sk )
= (Tk 0 × A)0 × (Tk 0 × A)
Avantages
Peut améliorer la recherche et dépasser le problème de “vocabulaire”
Obtient des vecteurs avec peu de dimensions :
Idéal pour les algorithmes d’apprentissage qui ne peuvent pas supporter
un grand nombre de descripteurs
Chaque dimension représente un concept (discutable !)
Inconvénients
Perturbant pour les utilisateurs habitués aux requêtes classiques
Explication du résultat difficile
Les nouveaux vecteurs sont très denses (pas forcement de gain en
stockage car les listes inversées sont efficaces pour stocker des
vecteurs creux)
La polysémie introduit un biais
Coûteux en temps de calcul (à l’indexation)
Aussi utilisé pour trouver des synonymes (Latent Semantic Analysis)
Résumé du cours
Traitements des langues (TLN)
Extraction d’informations (Linguistique/statistiques)
Structures de données utilisées
Classification supervisée/non supervisée/semi supervisée
Recherche d’informations
Moteurs de recherche
Les moteurs de recherche utilisent toutes ces technologies !