Poly
Poly
I. Tellier
Table des matières
1 Introduction 1
4 La Classification 64
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2 Classification par programme ”manuel” . . . . . . . . . . . . . . . . . 65
3 Généralités sur l’apprentissage automatique . . . . . . . . . . . . . . 66
3.1 Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2 Qu’est-ce qu’apprendre (pour une machine) ? . . . . . . . . . . 68
4 Classification par apprentissage supervisé . . . . . . . . . . . . . . . . 71
4.1 Classe majoritaire . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.2 k-plus proches voisins . . . . . . . . . . . . . . . . . . . . . . . 73
4.3 Arbres de décision . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4 Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.5 SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.6 Réseaux de neurones . . . . . . . . . . . . . . . . . . . . . . . 90
5 Classification par apprentissage non supervisé . . . . . . . . . . . . . 90
5.1 Spécificités de la tâche . . . . . . . . . . . . . . . . . . . . . . 90
5.2 Clustering hiérarchique . . . . . . . . . . . . . . . . . . . . . . 90
5.3 K-moyennes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.4 EM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5 L’Annotation 91
7 Conclusion 93
8 Bibliographie 94
9 Annexes 95
Chapitre 1
Introduction
1 Introduction
Une tâche, au sens informatique, est la spécification d’un programme qui mime
une compétence précise d’un être humain. Cette unité de découpage est traditionnelle
en intelligence artificielle, qui se scinde en sous-domaines très spécialisés, visant par
exemple à écrire des programmes capables de jouer aux échecs, ou de conduire une
voiture, ou encore de reconnaı̂tre le contenu d’une image... La particularité d’une
tâche de fouille de textes est de faire intervenir des données textuelles, généralement
en grandes quantités. Tenir une conversation écrite ou traduire un texte d’une langue
dans une autre pourraient être des exemples de telles tâches, mais elle sont encore
trop complexes. Le terme de fouille de textes sera plutôt réservé à des programmes
ayant des objectifs plus simples. Pourtant, aussi ”élémentaires” que soient les tâches
évoquées dans ce document, elles restent difficiles pour les ordinateurs, qui sont
encore loin d’avoir atteint le niveau de compétence linguistique d’un enfant de cinq
ans. Aussi, la notion d’évaluation quantitative joue-t-il un rôle fondamental dans le
domaine. En fouille de textes comme en fouille de données, tout est quantifiable, les
différentes solutions envisagées peuvent être évaluées et comparées. Comme nous le
verrons, la qualité d’un programme se mesurera à sa capacité à s’approcher le plus
possible d’une solution de référence validée par un humain.
Mettre en avant la notion de tâche permet de distinguer la fouille de textes
de disciplines comme la lexicométrie ou la textométrie, qui sont l’application de
méthodes issues de la statistique descriptive à des données textuelles, et font aussi
appel à des évaluations quantitatives. La fouille de textes peut, parfois, exploiter les
statistiques, mais la caractérisation des propriétés d’un texte ou d’un corpus n’est
pas sa finalité dernière. Elle a toujours en vue un autre but, formulé dans cette
notion de tâche. Certaines tâches élémentaires joueront en outre le rôle d’unités de
base en fouille de textes, ce sont celles sur lesquelles nous nous attarderons le plus.
Chaque tâche a une visée applicative précise et autonome et peut être spécifiée
par ses entrées, ses sorties et les ressources externes auxquelles elle peut éventuellement
faire appel. Adopter un tel point de vue, pour lequel les tâches sont des ”boı̂tes
noires”, permet d’éviter dans un premier temps de préciser les niveaux d’analyse
linguistique requis pour leur réalisation : la fouille de textes est en quelque sorte
”linguistiquement agnostique”, au sens où tout y est bon du moment que ça marche
(Whatever Works) ! Le défi qui intéresse les chercheurs consiste, bien sûr, à traduire
en programmes efficaces ces spécifications. Mais, dans ce chapitre préliminaire, on
se contentera d’une description externe des tâches considérées ; les techniques uti-
lisées pour les implémenter dans des programmes ne seront explicitées que dans les
chapitres suivants.
Dans celui-ci, on commencera donc par analyser les composantes qui rentrent
dans la définition d’une tâche de fouille de textes quelconque à l’aide d’un schéma
général. On passera ensuite en revue les principales tâches ”élémentaires” qui seront
détaillées par la suite, en montrant comment elles rentrent dans ce schéma général.
On montrera aussi que, via recodage de leurs données ou reformulation de leur
objectif, ces tâches élémentaires sont en fait très liées les unes aux autres, par exemple
que certaines d’entre elles permettent d’en simuler certaines autres. On expliquera
aussi comment, en en combinant plusieurs, on peut parvenir à en réaliser d’autres
plus complexes. Enfin, on s’attardera sur un pré-traitement des textes qui s’avère
indispensable pour plusieurs des tâches élémentaires abordées ici, qui consiste à les
transformer en un tableau de nombres. Cette étape préliminaire permet d’appliquer
sur les textes les techniques directement issues de la fouille de données, qui s’est
spécialisée dans la manipulation de tels tableaux.
programme
entrée réalisant résultat
la tâche
ressources
Dans ce schéma, les données figurent dans des ovales tandis que le programme
réalisant la tâche est matérialisé par un rectangle. C’est bien sûr dans les différentes
données que la spécificité de la fouille de textes se manifestera : tout ou parties
d’entre elles seront de nature textuelle, ou en découleront après un pré-traitement.
Ce schéma est très simple, mais nous verrons qu’il oblige tout de même à se poser
quelques bonnes questions. Par exemple, il n’est pas toujours facile de distinguer ce
qui joue le rôle de données d’entrée ou de ressources dans la définition d’une tâche.
Un bon critère serait le suivant : une ressource est une donnée stable, qui n’est pas
modifiée d’une exécution du programme à une autre, alors que la donnée d’entrée,
elle, change chaque fois. Certaines ressources sont obligatoires dans la définition de
certaines tâches, d’autres facultatives. C’est souvent par ce biais que des connais-
sances externes et générales peuvent être intégrées au processus de réalisation de la
tâche. Les ressources sont donc un des principaux leviers pour faire rentrer un peu
de linguistique dans le domaine de la fouille de textes. C’est le cheval de Troie des
linguistes... Nous détaillons dans la suite de cette partie chacun des composants de
ce schéma.
Données tabulaires
Commençons donc par les tableaux exploités en fouille de données. Comme
évoqué en introduction, cette discipline est née notamment dans les milieux des
banques, des assurances et de la médecine, domaines qui ont intégré depuis long-
temps l’usage des bases de données informatiques. Une ”donnée” peut, dans ce
contexte, correspondre à un client ou à un patient mais aussi à un produit, un
procédé, un médicament... Dans un tableau de données, chaque instance est décrite
par un certain nombre d’attributs typés (ou de champs, dans le vocabulaire des bases
données). Les différents types possibles des attributs sont les types élémentaires tra-
ditionnels de l’informatique : booléen, caractère, nombre (entier ou réel), chaı̂ne de
caractères, valeur prise dans une liste finie (on parlera alors d’attribut ”nominal”)...
La valeur prise par un attribut peut être obligatoire (par exemple une date de nais-
sance) ou facultative (par exemple une date de mort...). Les algorithmes ne sont pas
tous égaux devant les données : certains requièrent des tableaux entièrement remplis,
d’autres s’arrangent très bien de valeurs manquantes. Certains -et ce sont en général
les plus efficaces- ne savent manipuler que des tableaux complets de nombres. Une
donnée uniquement décrite par une liste de nombres peut en effet facilement être as-
similée à un point dans un espace vectoriel ou, ce qui revient au même, à un vecteur
dont on fournit les coordonnées. Cette reformulation change tout, car elle permet
de bénéficier de l’arsenal mathématique développé dans le cadre de ce type d’espace
(nous y reviendrons, bien sûr...). Traditionnellement, les données sont disposées en
lignes (une donnée par ligne), les attributs en colonnes. L’ordre des lignes et des co-
lonnes n’a aucune importance, au sens où en changer ne modifiera en rien le résultat
des algorithmes de fouille qui y seront appliqués. Seule la dernière colonne joue, pour
certaines tâches, un rôle particulier (nous y reviendrons aussi). La figure 2.2 montre
Figure 2.2 – Copie d’écran d’un tableau de données du logiciel Weka
un tableau issu du logiciel libre et gratuit Weka 1 , qui implémente les principaux
algorithmes de fouille de données. Chaque donnée est la description d’une situation
météorologique (caractérisée par des attributs de différents types) associée au fait
qu’elle permet ou non (dernière colonne) de jouer au tennis. Cet exemple illustre
que la fouille de données peut s’appliquer aussi aux sujets les plus futiles...
Textes bruts
Les textes, même numérisés, ne présentent pas du tout les mêmes propriétés que
les tableaux de données. En termes de structures, ils semblent même situés à l’op-
posé du ”spectre” : autant les tableaux ont un haut degré d’organisation, autant les
textes sont apparemment faiblement structurés. Et ceci d’autant plus qu’en fouille de
textes, on ne s’intéressera principalement qu’à des textes bruts, c’est-à-dire de simples
séquences de caractères d’où toute mise en formes est absente. Tout ce qui ne vise
qu’à la visualisation (police et taille des caractères, mises en gras ou en italique,
alignement de la page, sauts de lignes, etc.) ou à la structuration d’un document (en
parties, sous-parties et paragraphes, en listes et énumérations etc.) et constitue la rai-
son d’être des traitements de textes est en effet dans ce cas complètement ignoré. Un
texte brut est un simple fichier au format ”.txt”, uniquement constitué de caractères
pris parmi un ensemble fini, codés suivant une certaine norme. Les caractères sont
les atomes indivisibles du fichier ; ils sont dits alphanumériques car ils intègrent aussi
bien les lettres de l’alphabet (de n’importe quel alphabet, en préservant tout de même
la distinction majuscule/minuscule car les codes associés diffèrent) et les symboles
numériques et mathématiques que tous les ceux pouvant être tapés sur un clavier
d’ordinateur (ponctuations, symboles monétaires, etc.). Toutes les unités d’écriture
des langues non alphabétiques (idéogrammes par exemple) sont aussi considérées
1. http ://www.cs.waikato.ac.nz/ml/weka/
comme des caractères indivisibles, si le codage adopté les accepte comme tels. Ainsi,
dans un texte brut, la seule structure présente est l’ordre linéaire dans lequel les ca-
ractères apparaissent. En revanche, les notions de mots, de phrases, de paragraphe...
n’y ont a priori pas de sens, sauf à réaliser un pré-traitement qui les identifie. Nous
en reparlerons plus tard.
Documents semi-structurés
Le troisième format possible pour les données d’entrée d’un programme de fouille
de textes est intermédiaire entre les précédents : il est plus structuré qu’un texte
brut, mais moins qu’un tableau, et on l’appelle parfois pour cela ”semi-structuré” :
c’est celui des documents XML. Nous n’allons pas faire ici un cours complet sur
XML, juste mettre en avant ce qui distingue ce format des deux précédents. En
fait, rien n’empêche de traiter un document en XML exactement de la même façon
qu’un texte brut : il suffit pour cela d’admettre que les éléments propres au langage
utilisé (principalement les balises ouvrantes et fermantes) soient considérés comme
des ”caractères” indivisibles supplémentaires, qui s’ajoutent aux autres. La figure 2.3
montre un morceau de code HTML (qui peut être considéré comme un cas particulier
de langage XML) tel qu’il apparaı̂t dans un éditeur de texte. Le pré-traitement
consistant à identifier les balises est trivial ; ce code peut ainsi être considéré comme
un ”texte brut” écrit dans un nouvel alphabet : celui contenant tous les caractères
alphanumériques ainsi que les balises ¡table¿, ¡/table¿, ¡tr¿, ¡/tr¿, ¡th¿, ¡/th¿, ¡td¿ et
¡/td¿, considérées comme des unités indivisibles.
<table>
<tr><th>produit</th><th>marque</th><th>prix en euros</th></tr>
<tr><td>ordinateur portable</td><td>truc</td><td>800</td></tr>
<tr><td>tablette</td><td>machin</td><td>200</td></tr>
</table>
Mais ce n’est pas tout. La particularité d’un document XML est qu’il autorise
d’autres lectures possibles. Les balises, en effet, respectent une syntaxe qui décrit
une structure, visualisable dans un arbre. La figure 2.4 montre l’arbre associé au code
HTML précédent : les balises jouent le rôle de nœuds internes de l’arbre, tandis que
le reste du texte se trouve disposé dans ses ”feuilles”.
Un arbre est un objet à deux dimensions, alors qu’un ”texte brut” n’en a en
quelque sorte qu’une seule. Deux relations d’ordre distinctes peuvent en effet être
définies entre les éléments qui constituent un arbre : la relation verticale de ”des-
cendance”, qui relie entre eux les noeuds appartenant à un même chemin qui mène
de la racine à une feuille (on parle de ”nœuds père”/”nœuds fils”...) et la relation
horizontale de ”précédence”, qui ordonne les fils successifs d’un même père. Ces deux
relations d’ordre sont partielles, au sens où si on prend au hasard deux nœuds dans
un même arbre, ils peuvent très bien n’entretenir aucune de ces relations entre eux.
Au contraire, la relation d’ordre linéaire présente dans un texte brut était totale :
on peut toujours dire de deux caractères quelconques lequel précède l’autre. Nous
¡table¿
prix ordinateur
produit marque truc 800 tablette machin 200
en euro portable
Figure 2.4 – Arbre correspondant au code HTML précédent
verrons que ces propriétés auront des incidences sur les programmes de fouille qui
auront à manipuler l’un ou l’autre de ces formats. Remarquons pour finir que, dans
certains cas, les documents semi-structurés peuvent faire l’objet d’une représentation
supplémentaire C’est le cas des pages HTML, destinées à être interprétées et visua-
lisées par un navigateur Web. La figure 2.5 montre le résultat de l’interprétation
du code HTML de la figure 2.3 par un navigateur : c’était en fait le code d’un
tableau, et on pourrait donc stocker toutes les données tabulaires par des données
semi-structurées de ce type. Mais un texte brut ou un document XML constitue
une donnée unique, alors que les différentes lignes d’un tableau sont en général des
données distinctes, il faudra donc préciser dans ce cas la granularité de la donnée
considérée.
Apprentissage automatique
L’alternative à l’écriture manuelle de programmes est venue d’un sous-domaine de
l’intelligence artificielle qui a connu un très fort développement à partir des années
1990 : l’apprentissage automatique (ou artificiel). L’essor de la fouille de données
lui est contemporain et ce n’est pas un hasard. On peut définir l’apprentissage
automatique comme ”la branche de l’informatique qui étudie les programmes ca-
pables de s’améliorer par expérience” (traduction d’une citation de Tom Mitchell,
un des pionniers du domaine). Plus simplement, on peut aussi dire que c’est ”l’art
de transformer des exemples en programme”. Concrètement, un programme d’ap-
prentissage automatique est entraı̂né grâce à des exemples de la tâche envisagée.
Par différentes techniques que nous présenterons dans les chapitres suivants, ces
exemples permettent de fixer la valeur de certains paramètres, et de construire ce
que l’on appelle généralement un modèle. A son tour, le modèle spécifie (ou définit)
un programme capable de réaliser la tâche initiale pour de nouvelles données. Ce
processus en deux temps est synthétisé dans le schéma de la figure 2.6. C’est le même
programme qui s’instancie dans les deux ”rectangles” de cette figure, en deux phases
successives : la phase d’apprentissage précède la phase d’utilisation de ce qui a été
appris sur de nouvelles données.
La nature des exemples fournis au programme d’apprentissage permet de distin-
guer entre deux familles de méthodes :
– si les exemples sont des couples (entrée, résultat) corrects du programme
réalisant la tâche, on dit que l’apprentissage est supervisé : il est guidé, dirigé
vers l’acquisition d’un programme dont le fonctionnement idéal sur certaines
données est fourni explicitement ;
– si les exemples sont simplement des données d’entrées (et éventuellement quelques
paramètres supplémentaires) mais sans leur associer un résultat souhaité, on
dit que l’apprentissage est non supervisé.
Evidemment, l’apprentissage non supervisé est plus difficile et donne généralement
de moins bons résultats que l’apprentissage supervisé, mais les données qu’il re-
quiert sont moins couteuses à obtenir. Il existe aussi des situations intermédiaires :
programme
entrée d’apprentissage résultat
paramétré
programme
exemples modèle
d’apprentissage
1ère expérience
(en blanc : ensemble d’apprentissage, en gris : ensemble de test)
2ème expérience
3ème expérience
...
Ce protocole, dont les étapes pour n = 10 sont visualisées en figure 2.7, remédie
bien à nos problèmes : en effet, en réalisant un apprentissage sur 9/10 des exemples,
on se prive de peu de données tout en s’assurant de fournir une évaluation peu
”biaisée” car elle est en fait une moyenne de plusieurs expériences. Mais réaliser
une ”validation croisée” demande plus de travail que lorsqu’il suffisait de répartir
les exemples en deux sous-ensembles. La variante la plus extrême de la validation
croisée, appelée en anglais ”leave one out”, consiste même à utiliser en entrainement
toutes les données sauf une, qui servira en test, et donc à répéter cet apprentissage
autant de fois qu’il y a de données dans l’ensemble d’apprentissage. Notons pour
finir que les différentes variantes de ces protocoles sont implémentées dans le logiciel
Weka, déjà évoqué.
programme
requête résultat
de RI
corpus
par le tableau de la figure 3.1. Dans ce tableau, nous avons utilisé à la fois les
notations mathématiques ensemblistes qui font référence à la figure précédente et
les termes usuels de la fouille de données :
– le symbole mathématique ∩ (respectivement ∪) désigne l’usuelle intersec-
tion (respectivement union) ensembliste, tandis que l’opérateur ”−” est la
différence entre deux ensembles.
– la terminologie ”positifs/négatifs” provient de la fouille de données : dans notre
cas, un document est dit ”positif” s’il est pertinent, ”négatif” sinon. C’est
un ”vrai positif” s’il a été reconnu à juste titre comme tel par le moteur de
recherche”, un ”faux positif” si le moteur s’est trompé en le désignant comme
pertinent (et similairement pour les ”vrais négatifs/faux positifs”).
Evidemment, dans une situation idéale (c’est-à-dire avec un moteur parfait), les
ensembles P et R devraient coı̈ncider (on aurait alors P ∩ R = P = R = P ∪ R),
mais c’est rarement le cas. Les mesures d’évaluation du système visent, précisément,
à quantifier cet écart entre P et R. Elles prennent la forme suivante :
– la précision p mesure la proportion de documents pertinents parmi ceux qui
sont retournés (où nb désigne le nombre d’éléments d’un ensemble, VP le
nombre de ”vrais positifs” et FP le nombre de ”faux positifs”, FN celui de
”faux négatifs”) :
∩R)
p = nb(P
nb(R)
= V PV+F
P
P
– le rappel r mesure la proportion de documents pertinents retournés parmi ceux
figurant dans le corpus (mêmes notations que précédemment) :
∩R)
r = nb(P
nb(P )
= V PV+FP
N
p.r
– la F-mesure F est la moyenne harmonique de p et r : F = 2. p+r
On définit parfois une F-mesure plus générale Fβ qui pondère différemment p
2 ).p.r
et r avec un paramètre β ∈ [0, 1] : Fβ = (1+β β 2 .p+r
. La F-mesure (parfois aussi
appelée pour cela F1 -mesure) correspond à la valeur β = 1.
– pour compléter ces mesures, on peut aussi signaler le silence s et le bruit b,
−R) )
qui se calculent comme suit : s = nb(P nb(P )
= V PF+F N
N
, b = nb(R−P
nb(R)
= V PF+F
P
P
.
On a les relations élémentaires suivantes : p + b = 1 et r + s = 1.
Plusieurs remarques s’imposent pour bien comprendre l’intérêt de ces différentes
mesures :
– elles sont toutes comprises entre 0 et 1. La moyenne harmonique a l’avantage
de mettre la F-mesure à 0 dès que soit la précision soit le rappel s’annule,
obligeant ainsi à ne négliger aucune de ces deux mesures. Pour que la F-mesure
2
soit égale à 1, il faut que p = r = 1. Si p = r, la formule devient 2. p2p = p : la
moyenne harmonique de deux valeurs identiques se confond avec cette valeur.
– face au résultat d’un moteur de recherche, un utilisateur n’a accès qu’à l’en-
semble R et ne peut donc évaluer que la précision du moteur. En effet, pour
calculer le rappel, il faudrait connaı̂tre l’existence dans le corpus des documents
pertinents oubliés par le moteur, ce qui est en général difficile...
– En fait, il n’est pas difficile de construire un moteur de recherche qui se focalise-
rait uniquement sur la précision ou sur le rappel, en négligeant l’autre mesure.
Le vrai challenge consiste donc à obtenir une bonne performance pour ces deux
mesures simultanément, ce qui revient à se concentrer sur la F-mesure.
Nous nous restreignons ici à supposer que, pour une requête donnée, chaque
document est soit pertinent soit non pertinent. En réalité, la notion de pertinence
est graduelle et on attend plus d’un moteur de recherche qu’il ordonne du plus
au moins pertinent les documents plutôt qu’il les classe suivant un simple critère
binaire. C’est particulièrement sensible pour les corpus volumineux (notamment le
Web !), où seuls les premiers résultats proposés sont réellement consultés par les
utilisateurs. Dans ce cas, le résultat attendu d’un système de recherche d’information
est un classement, qui doit être comparé à un classement de référence. Des mesures
d’évaluation spécifiques sont alors requises, que nous ne détaillerons pas ici. Cela
pose de nouveaux problèmes difficiles, car un classement de référence est évidemment
difficile à constituer. De manière générale, l’évaluation de ces systèmes reste un thème
de recherche actif.
3.2 La Classification
La tâche
La classification est la tâche phare de la fouille de données, pour laquelle une
multitude de programmes sont implémentés dans le logiciel Weka. Elle consiste à
associer une ”classe” à chaque donnée d’entrée, comme l’illustre la figure 2.11.
Détaillons encore ces composantes :
– la donnée à classer est en principe de type ”texte brut” ou ”document semi-
structuré”. Toutefois, comme nous le verrons lors de la présentation des pro-
programme
donnée classe
de Classification
grammes existants, cette tâche a été abondamment étudiée pour les données
tabulaires de la fouille de données, et la démarche employée pour la résoudre
consistera presque systématiquement à transformer les données textuelles en
tableaux. Cette transformation fera l’objet de la partie 5.
– l’ensemble des classes possibles est fini et connu au moment où le programme
de classification est sollicité, c’est pourquoi nous le faisons figurer en tant que
ressource. Toutefois, si le programme en question est issu d’un apprentissage
automatique (cf. schéma de la figure 2.6), plusieurs situations sont possibles
suivant que les classes sont définies à l’avance et présentes (ou non) dans les
exemples d’apprentissage. Nous y reviendrons...
– la classe résultat permet de caractériser la donnée à laquelle elle est associée,
à la ranger dans un ensemble existant. Cette classe est en général unique, le
programme effectue donc une partition de l’ensemble des données possibles.
Dans le cas où seules deux classes sont possibles, on parle d’une classification
binaire.
Comme la recherche d’information, la classification peut s’appliquer à toutes sortes
de données, et pas seulement aux textes : la classification des images, des vidéos, des
musiques... de toute donnée, de manière générale, qu’il est possible de décrire à l’aide
d’attributs, donne lieu à de multiples et florissantes applications. Nous avons évoqué
en introduction que la fouille de données était née dans les domaines des banques, des
assurances, du marketing et de la médecine, pour aider à déterminer automatique-
ment la solvabilité d’un client, l’adéquation d’un produit ou encore l’efficacité d’un
médicament... Tous ces objectifs peuvent être reformulés comme des tâches de clas-
sification. Le tableau de la figure 2.2 illustre aussi une telle tâche : les cinq premières
colonnes servent à décrire une situation météorologique, la dernière (”play”, qui vaut
”yes” ou ”no”) est l’étiquette (la classe) à prédire par le programme.
classé en a b c
\
vraie classe
a 16 0 0
b 0 19 1
c 0 2 15
On lit dans ce tableau que l’expérience a porté sur 53 données en tout (somme
des valeurs de toutes les cases), parmi lesquelles 16 étaient de la classe a (somme des
valeurs de la première ligne), 20 de la classe b (somme des valeurs de la deuxième
2. DEFT : http ://deft.limsi.fr
ligne)et 17 de la classe c (somme des valeurs de la troisième ligne). Le programme,
lui, a classé 16 données en a (somme des valeurs de la première colonne), 21 en
b (somme des valeurs de la deuxième colonne) et 16 en c (somme des valeurs de
la troisième colonne). Les cases sur la diagonale allant d’en haut à gauche au bas
à droite comptabilisent le nombre de fois où la vraie classe coı̈ncide avec la sortie
du programme, les cases hors diagonale sont des erreurs. Dans notre exemple, le
programme n’a fait aucune erreur sur la classe a, mais a parfois confondu les classes
b et c. Les couleurs du tableau montrent comment retrouver les mesures de précision
p et rappel r (et donc F-mesure) introduites en partie 3.1 pour cette classe a :
– les ”vrais positifs” VP pour a sont comptés dans la case verte ;
– les ”vrais négatifs” VN pour a sont comptés dans les cases bleues ;
– les ”faux négatifs” FN pour a sont comptés dans les cases jaunes ;
– les ”faux positifs” FP pour a sont comptés dans les cases orange.
Les formules p = V PV+F P
P
et r = V PV+F P
N
s’appliquent alors identiquement, et leur
moyenne harmonique F-mesure également. On appelle aussi parfois le rappel le ”taux
de vrais positifs” ou la sensibilité, et symétriquement on introduit le ”taux de faux
positifs” f p = F PF+VP
N
. La spécificité s est s = F PV+VN
N
= 1 − f p. Enfin, on appelle
”exactitude” e (ou ”accuracy”, en gardant le terme anglais) la proportion de bons
P +V N
classements relativement à a : e = V P +VV N +F P +F N
. Bien sûr, les définitions des
ensembles VP, VN, FN et FP intervenant dans ces mesures doivent être adaptées
pour chaque classe, dont la précision, le rappel (donc la F-mesure) et l’exactitude se
calculent indépendamment.
On peut aussi définir des mesures globales d’évaluation. Ainsi, l’exactitude glo-
bale du programme est la proportion de données bien classées, qui se calcule en
divisant la somme des contenus de la diagonale par le nombre total de données.
Pour moyenner les précision, rappel et F-mesure des différentes classes, il y a deux
façons de procéder :
– soit on calcule la moyenne simple des différentes classes, sans pondération
particulière : on obtient ainsi la macro-average ;
– soit on pondère les évaluations de chaque classe par la proportion de données
qui appartiennent à cette classe : on obtient alors la micro-average.
La micro-average tient compte de la répartition des données, alors que la macro-
average donne autant d’importance à chaque classe, indépendamment de ses effectifs.
3.3 L’Annotation
La tâche
L’annotation (ou l’étiquetage), telle qu’elle sera définie ici, est une tâche plus
spécifiquement linguistique que les précédentes, au sens où elle ne s’applique pas
aux données tabulaires et ne relève donc pas de la fouille de données. La figure 2.13
la présente globalement.
Pour bien comprendre en quoi elle se distingue de la tâche de classification, il
convient de préciser les points suivants :
– la donnée est exclusivement un texte brut ou un document semi-structuré non
transformé en tableau : elle est donc composée d’unités respectant au moins
une relation d’ordre.
programme
donnée donnée annotée
d’Annotation
– l’ensemble des étiquettes possibles est fini et connu à l’avance au moment où
le programme est appelé.
– le résultat est la donnée initiale dans laquelle chaque unité est associée à
une étiquette prise dans l’ensemble des étiquettes possibles (et non une seule
étiquette pour l’ensemble de la donnée comme en classification). La relation
d’ordre entre les unités d’origine se propage donc en quelque sorte sur les
étiquettes figurant dans le résultat du programme (nous en verrons plusieurs
exemples ci-dessous).
L’annotation peut aussi s’appliquer à d’autres données structurées que les textes :
on peut ainsi annoter des séquences audio ou vidéo, ou des bases de données XML
par exemple. On parlera d’annotation quand la structure de la donnée d’origine se
trouve ”reproduite” sur les étiquettes ajoutées par le programme.
J’ aime le chocolat
I X
like X
chocolate X
Une autre application intéressante est la division d’un texte long en zones thématiques.
Dans ce cas, les unités du texte sont non plus ses tokens mais ses phrases. On suppose
que chaque phrase ne peut appartenir qu’à une certaine classe parmi un ensemble
pré-défini (par exemple : introduction, paragraphe, conclusion...) et on cherche à an-
noter la séquence des phrases par une séquence de telles étiquettes. Le même genre
de traitement peut s’appliquer à une page HTML considérée elle aussi comme une
séquence d’unités, soit zones de textes soit balises. L’annotation de la page Web peut
être destinée par exemple à distinguer ce qui, dans cette page, donne lieu à un titre,
un menu de navigation, un en-tête, un pied-de-page, une image, une zone de texte,
etc. pour en extraire le vrai contenu informationnel tout en écartant ses éléments
parasites (publicités, etc.).
L’annotation d’un document HTML ou XML peut aussi s’appuyer sur sa struc-
ture arborescente : dans ce cas, le résultat du processus est également un arbre. La
figure 3.3 montre un arbre d’analyse syntaxique qui a été enrichi par l’annotation
des fonctions de ses constituants (PRED pour ”prédicat”, SUJ pour ”sujet”, OBJ
pour ”objet”, MOD pour ”modifieur”). A condition d’ajouter une étiquette ”neutre”
aux nœuds non annotés, les étiquettes en rouge constituent un arbre de même forme
que l’arbre initial.
SENT
NP VN VP .
SUJ PRED OBJ
VN NP PP
Sligos va
PRED OBJ MOD
prendre pied au NP
Royaume-Uni
Figure 2.15 – Etiquetage fonctionnel (en rouge) d’un arbre d’analyse syntaxique
classé en a b c
\
vraie classe
a aa ab ac
b ba bb bc
c ca cb cc
Figure 2.16 – Une matrice de confusion pour une annotation à trois étiquettes
programme
donnée champs remplis
d’EI
programme
RI
requête de Classification docs. pertinents
corpus
ken suivant”) et l’étiquette précédente l’est aussi puisque, en suivant le sens de par-
cours, on vient juste avant d’y appliquer le classifieur. Son résultat sur un token est
donc immédiatement intégré dans la donnée d’entrée pour la recherche de l’étiquette
du token suivant. On pourrait d’ailleurs aussi prendre en compte l’étiquette ”deux
positions avant” celle à trouver, ou n’importe quelle valeur d’étiquette, du moment
qu’elle est associée à un token qui précède celui en train d’être traité. En revanche,
on ne peut pas avoir de colonne ”étiquette suivante” car elle n’a pas encore été
trouvée par le classifieur. Cette stratégie du ”sens de parcours” permet de réaliser
une annotation en général plus fiable que celle consistant à classer chaque token
indépendamment les uns des autres, mais elle prend aussi le risque, en cas de mau-
vais diagnostic à une certaine étape, de propager des erreurs d’étiquetage de token
en token.
corpus
corpus
– la question posée en LN est traitée doublement : d’une part, elle est soumise
à un programme de terminologie (Term. dans la figure) qui en extrait les
mots clés pertinents (”Mozart” serait le principal dans notre exemple), d’autre
part elle est envoyée à un programme de classification chargé de déterminer
le ”type” de sa réponse attendue, relativement à une taxonomie spécifique de
chaque système (on peut imaginer un système qui disposerait d’un type ”date
de naissance”) ;
– le (ou les) mot(s) clé(s) extrait(s) de la question sont transmis à un moteur
de recherche standard, qui a lui-même accès au corpus du système : il fournit
donc en sortie un ensemble de documents pertinents pour ce (ou ces) mot(s)
clé(s) (une collection de textes parlant de Mozart, dans notre cas) ;
– chaque classe (ou type) possible du programme de classification est associée
à un programme d’extraction d’information spécialisé dans la recherche de la
réponse à ce type de question (la classe ”date de naissance” correspond bien à
un champ possible de formulaire). Les documents sélectionnés précédemment
dans le corpus sont utilisés comme données d’entrée à ce programme : la (ou
les) réponse(s) sélectionnée(s) est celle de l’ensemble du système.
Trad. LF R en LF Interr. LF
question réponse
Extr. Inf. BC
corpus
Dans ce cas, les étapes essentielles du système (parmi lesquelles figure une phase
d’EI, en gras) sont les suivantes :
– la question en langue naturelle est traduite (Trad. LF) en une requête en
langage formel (R en LF), elle-même soumise à un système d’interrogation en
LF (Interr. en LF) ;
– ce système doit avoir accès à une base de connaissances (BC) formalisée, inter-
rogeable dans le LF choisi. Cette étape requiert d’avoir préalablement trans-
formé le corpus en une telle base de connaissances : c’est le rôle de l’EI dans
cette stratégie.
Longtemps, seule la première de ces deux stratégies a été possible à grande
échelle, faute de disposer de bases de connaissances suffisamment complètes et
fiables, ou de manières efficaces de les construire. Avec l’émergence progressive du
Web sémantique et de l’EI, de telles bases commencent maintenant à exister et à
être disponibles (c’est le cas par exemple de DBPedia 6 , la traduction en RDF des
informations factuelles de Wikipedia) et les systèmes Q/R fondés sur cette deuxième
stratégie arrivent, dans certains cas, à être compétitifs.
En France, plusieurs équipes travaillent sur ces systèmes, en se rattachant à
l’une de ces deux approches : par exemple, l’équipe ILES du LIMSI 7 a adopté
la première, tandis que le portail d’Orange 8 fonctionne en suivant la deuxième.
Le système question/réponse en ligne le plus avancé s’intitule Wolframaplpha 9 :
il permet le traitement de questions en anglais sur de nombreux sujets (voir les
exemples fournis).
sont donc également utiles. Mais sélectionner ces types de mots requiert bien sûr de
disposer d’un étiqueteur morpho-syntaxique.
Pour diminuer encore le nombre de colonnes, on peut faire appel à d’autres
ressources linguistiques qui permettent de regrouper certains tokens entre eux :
– si on dispose d’un lemmatiseur, c’est-à-dire d’un programme qui associe à
chaque token la forme canonique qui le représente dans un dictionnaire (l’infi-
nitif pour les verbes, la forme masculin singulier pour les noms et les adjectifs,
etc.), alors on peut s’en servir pour ramener l’ensemble des tokens distincts à
l’ensemble des lemmes distincts.
– à défaut de lemmatiseur, qui est une ressource complexe, il existe des ra-
ciniseurs plus rudimentaires : un tel programme se contente de supprimer
les lettres habituellement porteuses des flexions dans une langue donnée (en
français, ce sont au maximum les 2 ou 3 dernières lettres d’un mot), afin de ra-
mener les tokens à leur ”racine”. Il y a évidemment moins de racines distinctes
que de tokens distincts.
Pour chacune de ces unités (tokens, lemmes, racines), il est évidemment possible
de définir les attributs de notre tableau non pas à partir de leur seule présence, mais
en considérant des n-grammes (de mots, lemmes, racines, ou d’un mélange entre
eux...). Cette solution a du sens quand elle vise à capturer des unités poly-lexicales
ou (multi-mots) comme ”pomme de terre” qui sont constituées de plusieurs tokens
successifs. Mais en procédant aveuglément, on prend le risque de définir un très
grand nombre d’attributs différents, pas toujours pertinents. La solution idéale est
de disposer de segmenteurs en unités multi-mots, c’est-à-dire de programmes ca-
pables de découper un texte en de telles unités. Là encore, la linguistique est mise
à contribution. Certains auteurs ont aussi proposé des attributs prenant la forme
de sous-séquences (c’est-à-dire de suites de mots extraits du texte, dans l’ordre où
ils y apparaissent) pas nécessairement continues (c’est-à-dire en laissant la possibi-
lité de ”sauter” certains mots). Par exemple, l’attribut ”ne aime pas”, en tant que
sous-séquence (présente par exemple dans ”ce film, je ne l’aime absolument pas”)
peut être intéressant, notamment en classification d’opinion où la prise en compte
des négations est une problématique importante, car elles changent la polarité des
mots qu’elles qualifient. Mais l’ensemble de toutes les sous-séquences possibles d’une
phrase est volumineux, et toutes ne présentent pas le même intérêt.
attributs a1 a2
\
textes
t1 3 1
t2 1 2
Figure 2.27 – Coordonnées de deux ”textes” dans un espace à deux dimensions
Cette représentation est bien sûr une simplification extrême (il est rare de n’avoir
que deux attributs !) mais elle permettra de se faire une intuition de la signification
des formules. On peut en particulier visualiser les vecteurs sur un plan, comme
dans la figure 2.28. Dans le cas général on note, comme dans la partie précédente
a1 , a2 , ..., an les attributs et t1 = (v1,1 , v1,2 , ..., v1,n ) et t2 = (v2,1 , v2,2 , ..., v2,n ) les textes
à comparer (vi,j est la valeur de l’attribut aj pour la donnée ti ). Suivant les cas, on va
calculer une distance ou une similarité entre deux textes : la similarité est d’autant
plus grande que les textes sont proches, tandis que la distance, à l’inverse, diminue
avec la proximité. Quand la similarité est comprise entre 0 et 1 (si ce n’est pas le
cas, on normalise pour que ça le devienne), il suffit de prendre 1-similarité comme
mesure de distance.
Commençons par les mesures de distance !vectorielles :
– la distance de Manhattan : |t1 − t2 | = nk=1 |v1,k − v2,k |. Avec les vecteurs de la
figure 2.28, on obtient : |t1 − t2 | = |3 − 1| + |1 − 2| = 2 + 1 = 3. Cette distance
s’interprète comme l’espace minimum à parcourir pour rejoindre l’extrémité
d’un vecteur à un autre (quand ils ont tous les deux la même origine) en ne
s’autorisant que des déplacements horizontaux et verticaux (c’est-à-dire, de
manière générale, parallèles aux axes) ;
Figure 2.28 – Deux vecteurs dans un espace à deux dimensions
"!n
– la distance euclidienne : ||t1 − t2 || = 2
k=1 (v1,k − v2,k ) . Par application du
théorème de Pythagore, cette distance coı̈ncide avec la mesure de l’écart entre
les deux extrémités des vecteurs t1 et t2 , (autrement dit à la distance mesurable
avec une règle entre les deux points de coordonnées les valeurs de t1 et t2 ). Dans
notre exemple, cela donne : √ √
n
"!
||t1 − t2 || = (3 − 1) 2 + (1 − 2)2 = 2 2 + 12 = 5
k=1
– la distance de Minkowski pour p > 2, qui généralise la formule précédente
(correspondant à p = 2) à d’autres
" !n valeurs de pla puissance p-ème et de la
racine p-ème : ||t1 − t2 ||p = p
k=1 |v1,k − v2,k | . Cette formule a pour effet
d’exagérer les écarts entre les valeurs d’un même attribut (s’ils sont déjà > 1),
de leur donner en quelque sorte encore plus d’importance. Par exemple, pour
p = 4, notre exemple
" !n devient4 : √ √
||t1 − t2 ||4 = 4
|3 − 1| + |1 − 2| 4 = 4 24 + 14 = 4 17
k=1
– la distance de Tchebychev : si on fait tendre p vers l’infini dans la distance de
Minkowski, c’est l’écart de valeurs (pour un même attribut) le plus important
qui sera prédominant et on peut se contenter "! de ne prendre que lui. C’est ce que
propose cette distance valant : limp→∞ p nk=1 |v1,k − v2,k |p = maxk |v1,k −v2,k |.
Dans notre cas, elle vaut max(2, 1) = 2.
Pour définir les mesures de similarité, d’autant plus grandes que les données sont
similaires ou proches,!n nous aurons besoin du produit scalaire entre deux vecteurs,
défini par t1 .t2 = k=1 (v1,k ∗ v2,k ). On peut montrer que ce produit scalaire #! corres-
n 2
pond également au calcul suivant : t1 .t2 = ||t1 ||∗||t2||∗cos(a), où ||t1 || = k=1 v1,k
est la norme de t1 , c’est-à-dire la distance euclidienne entre son point de départ (le
point de coordonnées (0, 0) ici) et son point d’arrivée (et similairement pour ||t2 ||),
et a est l’angle entre les deux vecteurs, comme dans la figure 2.28. Le produit sca-
laire entre les deux vecteurs de cette figure√ vaut : t1 .t√
2 = (3 ∗ 1) + (1√∗ 2) = 5, et√les
normes respectives des vecteurs : ||t1 || = 32 + 12 = 10 et ||t2 || = 12 + 22 = 5.
Nous pouvons maintenant donner les formules de différentes mesures de similarité
classiques :
5 √
– mesure de Dice : ||t1t||+||t
1 .t2
2 ||
. Pour nos vecteurs, cela donne : √10+ 5
. Quand les
suites de nombres sont en fait des booléens, on se ramène à une définition plus
simple qui prend la forme suivante : |t|t21|+|t ∩t2 |
2|
où |t1 | (respectivement |t2 |) compte
le nombre de 1 dans t1 (respectivement t2 ), c’est-à-dire le nombre d’attributs
présents au moins une fois dans t1 (ou t2 ), tandis que |t1 ∩ t2 | recense les
attributs communs à t1 et t2 .
– mesure de Jaccard : ||tt11+t.t2
2 ||
. Les coordonnées de la somme de deux vecteurs (qui
est elle-même un vecteur) s’obtiennent en additionnant les valeurs de chaque
5
coordonnée, ce qui mène pour notre exemple à √ 2 2
= √525 = 1.
(3+1) +(1+2)
Comme précédemment, cette mesure est plutôt utilisée dans le cas de valeurs
booléennes, sous la forme simplifiée suivante : |t[t11 ∩t2|
∪t2 |
où [t1 ∪ t2 | comptabilise
les attributs présents soit dans t1 soit dans t2 .
t1 .t2
– le coefficient ovelap est une légère variante des mesures précédentes : min(||t 1 ||,||t2 ||)
,
5 5
√
soit, pour nos exemples : min(√10,√5) = √5 = 5. La version booléenne s’écrit,
|t1 ∩t2 |
quant à elle : min(|t 1 |,|t2 |)
.
– enfin, une des mesures les plus populaires est le cosinus de l’angle entre t1 et
t2 qui, d’après la deuxième expression du produit scalaire, s’obtient √ facilement
par : ||t1t||∗||t
1 .t2
. Dans notre exemple, cela fait : √ 5√ = √1 = 2 . Cette mesure
2 || 5∗ 10 2 2
ne dépend que de l’orientation des facteurs (l’angle qu’ils font entre eux) et pas
du tout de leur taille. Dans ce cas, les variantes normalisées des vecteurs (la
différence entre les deux calculs possibles de TF, par exemple), qui ne modifient
précisément que leur dimension et pas leur direction dans l’espace, donnent
exactement les mêmes mesures de distances entre eux suivant le cosinus.
Pour les mesures de Dice, de Jaccard et d’overlap, seules les variantes booléennes
sont nécessairement dans [0, 1]. La valeur du cosinus est, elle aussi, pour des vecteurs
de coordonnées positives, nécessairement dans [0, 1]. Le cosinus est particulièrement
intéressant : plus l’angle est petit, plus celui-ci est proche de 1. Or, un petit angle
signifie que les différents vecteurs ont des proportions similaires des différents at-
tributs. Par exemple si, pour différents vecteurs, l’attribut a2 est toujours deux fois
plus grand que l’attribut a1 (quelles que soient les valeurs en question, donc quelle
que soit la taille des vecteurs), alors ils feront entre eux un angle nul et auront donc
une similarité maximale de 1.
Pour un locuteur du français, il est évident que les trois premiers textes évoquent
(plus ou moins) le cinéma, tandis que les trois suivants parlent (de manière cari-
caturale) de crise économique. Ils appartiendraient respectivement aux rubriques
”culture” et ”société” d’un journal généraliste. C’est en tout cas l’hypothèse que
nous ferons pour une tâche de classification. Voyons comment ces données vont être
transformées en tableaux de nombres.
Nous n’utiliserons pas ici de représentation fondée sur les seuls caractères, qui
sont trop rudimentaires. En l’absence de ressource capable de reconnaı̂tre les unités
poly-lexicales (il n’y en a pas vraiment dans les exemples, sauf peut-être ”critique
de cinéma”), nos unités de base, les tokens, coı̈ncident donc avec les mots des
textes. En guise de pré-traitements, les signes ponctuations sont supprimés et les
mots mis en minuscule. Pour obtenir le moins possible d’attributs, nous considérons
comme mots vides les déterminants (y compris les déterminants généralisés comme
”personne”), les prépositions, les conjonctions, les pronoms, les verbes auxiliaires
(”être”), modaux (”vouloir”) et support (”aller”), ainsi que les adverbes (”aussi”,
”ensuite”, ”tout”, ”quand”, ”mal”) et même certains adjectifs (”deuxième”). Ne
restent alors que 18 tokens distincts, qui constituent notre ensemble d’attributs, ou
espace de représentation : ”art”, ”cinéma”, ”crise”, critique”, ”économie”, ”ferme”,
”france”, ”hollywood”, ”industrie”, ”menacée”, ”métier”, ”monde”, ”mondialisa-
tion”, petit”, ”reconstruire”, ”rêves”, ”temps”, ”usine” (par ordre alphabétique).
La représentation en nombre d’occurrences de chacun des textes dans cet espace est
donnée par la Figure 2.29 (copie d’écran du logiciel Weka, dans lequel on a ajouté un
attribut de classe instancié par une valeur ”culture” ou ”société” suivant les textes).
Ils sont donc représentables par des points (ou des vecteurs) dans un espace
cartésien de dimension deux, comme le montre la Figure 2.31. Dans les chapitres
suivants (principalement ceux qui abordent la recherche d’information et la classifi-
cation), nous reviendrons sur cet exemple pour illustrer sur des données simples les
différents algorithmes que nous évoquerons.
Figure 2.31 – Vecteurs représentant les textes dans l’espace simplifié
6 Conclusion
Nous avons voulu montrer, dans ce chapitre introductif, que la fouille de textes
est un domaine à la fois vaste et homogène. Il est vaste parce qu’il couvre des
types d’applications -caractérisés par des tâches- variés et apparemment sans grands
rapports les uns avec les autres. Nous verrons aussi par la suite que les méthodes
employées pour réaliser les tâches en question sont elles-mêmes très diverses, que
certaines héritent de l’IA symbolique tandis que d’autres trouvent leurs fondements
dans les probabilités, les statistiques ou encore l’optimisation. Pourtant, derrière
cette apparente disparité, se cachent aussi beaucoup de points communs, qui rendent
le domaine beaucoup plus homogène qu’il n’y paraı̂t au départ. La nature textuelle
des données est le premier et le plus évident d’entre eux, mais ce n’est pas le seul. Les
protocoles d’acquisition et d’évaluation des programmes, la reformulation des tâches
les unes dans les autres et la représentation vectorielle de la plupart des informations
manipulées attestent tout autant d’un cadre commun largement partagé. Ce cadre,
pour l’essentiel, est l’héritier de la fouille de données. C’est à elle et à sa maturité que
l’on doit la prédominance, largement illustrée ici, de la tâche de classification et de
la représentation des données en ”sacs de mots”. La prise en compte des spécificités
linguistiques des textes est un souci plus récent qui tend à hybrider ces approches
et ces méthodes avec celles issues du TAL. Les défis à relever pour approfondir
cette hybridation sont encore nombreux, et les linguistes ont encore beaucoup à
dire dans cette aventure. Mais pour cela, il faut absolument qu’ils comprennent et
maitrisent les techniques à l’œuvre dans les programmes d’ors et déjà utilisés pour
les applications citées ici. C’est pourquoi les chapitres suivants vont s’attacher à
décrire ces techniques, en essayant d’insister plus sur les intuitions qui les motivent
que sur l’appareillage mathématique sur lesquelles elles s’appuient.
Chapitre 3
1 Introduction
On l’a déjà remarqué : la Recherche d’Information (ou RI) fait partie, via les
moteurs de recherche, du quotidien de tous les internautes, et est sans doute de ce
fait la tâche de fouille de textes la plus populaire. Elle n’a pourtant pas attendu
Internet pour exister, puisqu’elle trouve son origine dans les ”logiciels documen-
taires”, ces programmes de gestion de bibliothèques apparus dès les années 60. Le
terme lui-même de ”recherche d’information” est dû à l’américain Calvin Mooers
et remonte à 1950, aux tout débuts de l’informatique. Le domaine n’a depuis cessé
d’évoluer, et continue de faire l’objet de recherches actives. En France, la conférence
annuelle Coria, organisée par l’association ARIA 1 lui est entièrement consacrée, et
les compétitions et conférences internationales sur ce thème ne manquent pas.
Un système de RI, on l’a vu, a accès à un corpus stable, et se voit soumettre des
requêtes auxquelles il doit répondre en y sélectionnant des documents pertinents.
Pour ce faire, il doit nécessairement passer par trois étapes fondamentales :
– indexation du corpus (réalisée une seule fois, indépendamment des requêtes)
– traitement de la requête
– appariement requête/corpus
Pour chacune de ces étapes, différents choix sont possibles qui donnent lieu à différentes
approches. A l’heure actuelle, trois principaux modèles coexistent pour aborder une
tâche de RI : ils sont dits booléen, vectoriel et probabiliste. Nous consacrerons suc-
cessivement une partie aux deux premiers d’entre eux, en les illustrant sur le corpus
rudimentaire introduit dans le chapitre précédent, en section 5.5. Ces deux approches
présentent la particularité de ne pas faire appel à de l’apprentissage automatique.
Nous négligerons en revanche les modèles probabilistes, qui eux y ont recours, et
sont de ce fait plus complexes. Nous souhaitons en effet réserver dans ce document
la présentation de l’apprentissage automatique aux autres tâches (le lecteur intéressé
par les modèles probabilistes pourra se reporter au livre consacré entièrement à la
Recherche d’Information, cité en section bibliographie).
Mais nous ne nous en tiendrons pas pour autant à cette présentation ”classique”
et élémentaire de la RI. La structure d’Internet a en effet suscité des problématiques
1. www.asso-aria.org
nouvelles qui ont profondément renouvelé le domaine. L’algorithme du PageRank, en
particulier, à l’origine du succès de Google, mérite d’être connu et compris car il s’est
révélé pertinent bien au-delà de son domaine d’application initial. Une partie lui sera
donc consacrée. Nous évoquerons aussi rapidement pour finir d’autres extensions et
évolutions contemporaines de ce domaine de recherche en pleine évolution.
2 RI booléenne
La RI booléenne (parfois aussi appelée, nous verrons pourquoi, RI ensembliste)
est, historiquement, la première apparue. Elle est à la base de la plupart des ”logi-
ciels documentaires” encore en usage actuellement. Son utilisation efficace requiert
toutefois une relative expertise pour formuler des requêtes, qui reste la plupart du
temps de la seule compétence de bibliothécaires professionnels.
art : 1 , 5
cinéma : 1 , 2
crise : 4 , 5
critique : 2
économie : 4 , 6
ferme : 6
france : 2 , 4
hollywood : 3
industrie : 1 , 5
menacée : 4
métier : 2
monde : 2 , 3
mondialisation : 4
petit : 2
reconstruire : 5
r^eves : 3
temps : 5
usine : 6
A B A ET B A OU B A SAUF B
0 0 0 0 0
0 1 0 1 0
1 0 0 1 1
1 1 1 1 0
Figure 3.2 – Table de vérité des opérateurs booléens ET, OU et SAUF
Pour retrouver les mêmes résultats que précédemment sur nos exemples en uti-
lisant cette table, il suffit de se rapporter à une version booléenne (c’est-à-dire où la
valeur 2 est simplement remplacée par 1) du tableau de la figure 2.29 et de procéder
comme suit :
– chercher dans le tableau de la figure 2.29 les colonnes correspondant aux termes
d’indexation A et B ;
– en fonction des valeurs affectées à A et B pour chaque texte (c’est-à-dire chaque
ligne du tableau), sélectionner la ligne correspondante dans la table de vérité ;
– la valeur booléenne de l’opérateur dans la table de vérité indique si le texte en
question est sélectionné (si elle vaut 1) ou pas (si elle vaut 0).
Avec cette formulation booléenne, on peut même se passer de construire le fichier
inverse : le tableau initial suffit. Les formulations booléenne ou ensembliste de ce
système sont bien sûr équivalentes, c’est pourquoi on parle indifféremment de RI
ensembliste ou booléenne. Remarquons que, dans ce type de moteur de recherche, les
étapes de traitement de la requête et de son appariement avec le corpus indexé sont
en quelque sorte simultanées : la requête n’a pas vraiment à être ”traitée” car elle se
présente directement de façon structurée. Les formules booléennes se rapprochent en
ce sens des requêtes de type SQL ou SPAQL, encore plus syntaxiquement structurées.
3 RI vectorielle
Les systèmes de RI vectoriels sont actuellement les plus répandus. Leur principe
est de transformer le corpus et les requêtes en vecteurs dans un même espace, et
d’utiliser une mesure de proximité pour trouver les textes les plus ”proches” de celui
servant de question. Tous les outils techniques nécessaires à ce processus ont déjà
été présentés en partie 5 du chapitre précédent, nous nous contenterons donc ici de
l’illustrer sur quelques exemples.
3.1 Principe et illustration
Reprenons les étapes évoquées en introduction dans le cas des moteurs de re-
cherche vectoriels :
– indexation : le corpus, une fois pré-traité (segmentation, élimination des mots
vides ou inutiles, normalisation, éventuellement lemmatisation, etc.) permet
de définir un espace vectoriel (c’est-à-dire un ensemble d’attributs supposés
indépendants les uns des autres, chacun constituant une dimension de cet
espace). Chaque texte du corpus est représenté dans cet espace par un vecteur
(nous avons vu aussi les différents choix possibles pour cela : en booléens, en
nombre d’occurrences, en TF.IDF, etc.).
– traitement de la requête : chaque requête est ensuite pré-traitée de la même
façon que les textes du corpus, et elle est représentée suivant la même conven-
tion dans l’espace précédent. Cela signifie en particulier que si des mots (ou
tokens) absents des textes du corpus y figurent, ils ne sont pas pris en compte
dans sa représentation car aucune dimension de l’espace ne leur est consacrée.
Comme ces unités sont absentes du corpus initial, elles ne servent à rien pour
trouver les textes de ce corpus qui répondent à la requête.
– appariement requête/corpus : le vecteur représentant la requête est comparé
systématiquement à chacun des vecteurs représentant le corpus, selon une
des mesures de proximité/distance donnée précédemment : les textes les plus
”proches” suivant cette mesure sont proposés par le moteur de recherche.
Prenons comme exemple le corpus de la section 5.5 du chapitre précédent, et la
requête suivante : ”Pendant la crise, l’usine à rêves Hollywood critique le cynisme
de l’industrie.” Une fois pré-traitée, cette requête est ramenée à 1 occurrence de
chacun des termes suivants : ”crise”, ”critique”, ”hollywood”, ”industrie”, ”rêves”
et ”usine” (et aucune occurrence pour les autres attributs du corpus). Notons que
sans étiquetage POS, on ne peut distinguer le terme ”critique” en tant que nom
commun (dans le corpus) et en tant que verbe conjugué (dans la requête), ils ne
font qu’un seul et même attribut ambigu. En absence de répétition d’aucun terme
d’indexation dans la requête, sa représentation booléenne et sa représentation en
nombre d’occurrences sont identiques. La figure 3.3 donne les mesures de proximité
de cette requête avec chacun des vecteurs qui représentent le corpus, dans deux cas
différents.
Figure 3.4 – Vecteurs représentant les textes et la requête dans l’espace simplifié
4 L’algorithme PageRank
L’algorithme PageRank a fait la notoriété de Google. Les techniques spécifiques
utilisées par ce moteur de recherche ne se limitent plus depuis longtemps à ce seul
paramètre, mais le PageRank a trouvé de nombreux autres domaines d’applications,
et mérite donc pour cela d’être connu.
1 4
c1 c2 cn
= l1
+ l2
+ ... + ln
Tout se passe dans ce cas comme si chaque nœud contenant un lien vers notre
nœud initial répartissait équitablement sa propre crédibilité ci entre tous les nœuds
vers lesquels il pointe (il y en a li ), pour accorder à chacun d’eux un ”vote” valant
ci
li
. La crédibilité du nœud récepteur initial se calcule alors en sommant tous les
”morceaux de crédibilité” qu’il reçoit de ses liens rentrants. Dans notre exemple de
la Figure 3.5, on aurait donc la série d’équations donnée dans la Figure 3.6.
c1 = 12 c3
⎧
⎪
⎪
⎪
⎨ c2 = 12 c1
⎪
⎪
⎪
⎪ c3 = 12 c1 + c2 + c4
⎪
⎩ c4 = 12 c3
⎪
⎪
1 4 5
Figure 3.8 – graphe modélisant un petit morceau de Web avec une ”page piège”
⎪
⎪ P R(3) = 0, 0375 + 0, 85 ∗ 12 ∗ P R(1) + 0, 85 ∗ P R(2) + 0, 85 ∗ P R(4)
⎪
⎩ P R(4) = 0, 0375 + 0, 85 ∗ 12 ∗ P R(3)
⎪
⎪
5 Conclusion
La RI est une tâche clé aux très forts enjeux commerciaux. Tout site marchand
y est confronté, à la fois en tant que ”client”, référencé par les moteurs de recherche
généralistes du Web, et en tant que ”fournisseur”, pour la navigation dans ses pages à
l’aide d’un moteur interne. Elle est donc au cœur des préoccupations de nombreuses
sociétés. Quand Google modifie son algorithme de classement des sites (comme cela
arrive régulièrement), certaines d’entre elles, qui dépendent de leur visibilité sur le
Web pour prospérer, peuvent se retrouver en difficulté économique...
Nous n’avons présenté ici que les méthodes de base de la recherche d’information.
En plus des approches statistiques (évoquées mais pas développées dans ce docu-
ment), de nombreuses autres techniques sont couramment utilisées à l’heure actuelle
pour améliorer les résultats d’une requête. Par exemple :
– l’”expansion de requête” vise à augmenter le rappel en enrichissant une requête
avec des termes synonymes ou proches sémantiquement, susceptibles de se
trouver dans les textes pertinents. Elle fait en général appel à des ressources
linguistiques (dictionnaires, ontologies...) ;
– le ”relevance feedback” (parfois traduit ”retour de pertinence” en français)
s’appuie sur un retour de l’utilisateur chargé de désigner, parmi les résultats
présentés, lesquels sont vraiment pertinents pour lui. Ce ”retour” sert à affiner
la requête et à relancer une nouvelle recherche.
La problématique de l’évaluation des moteurs de recherche est également loin d’être
réglée : la simple distinction pertinent/non pertinent n’est en effet pas suffisante
pour qualifier un résultat. Des effets de degré (c’est l’ordre de classement qui compte
surtout) ou de contexte (certains résultats sont pertinents pour certains utilisateurs
et pas pour d’autres...) doivent aussi être pris en compte.
La recherche d’information, on le voit, est un domaine vaste et quasi autonome
par rapport à la fouille de textes. Elle ne concerne d’ailleurs pas que les textes : des
moteurs de recherche spécialisés dans les images ou les morceaux musicaux existent
aussi. Quand les données à explorer présentent de nouvelles propriétés, on a vu
que la RI gagne à être combinée à des techniques qui exploitent ces propriétés.
Ainsi, le PageRank, basé sur la structure en graphe du Web, est très efficace pour
quantifier l’importance relative des pages qui figurent dans le réseau. La RI s’applique
maintenant dans les réseaux sociaux, où elle gagne aussi à exploiter les relations
d’amitié déclarées présentes dans ces réseaux. Des problématiques nouvelles naissent
ainsi dès que les données à traiter s’enrichissent et se diversifient.
De nombreux auteurs associent aussi RI et classification : la classification de do-
cuments (que l’on traite dans le chapitre suivant) peut en effet souvent être utilisée
comme un préalable à leur indexation. La RI peut aussi interagir avec la traduc-
tion automatique, quand les documents qu’elle doit manipuler sont dans plusieurs
langues distinctes. Elle entretient également des liens forts avec les systèmes ques-
tion/réponse, qui peuvent apparaı̂tre comme des extensions des moteurs de recherche
(cf. section 4.2 du chapitre précédent), et aussi avec les systèmes de recommandation
(que nous n’aborderons pas ici), qui visent à suggérer des éléments d’informations à
un utilisateur sans même qu’il les ait demandés.
Pour toutes ces raisons, la recherche d’information est un domaine très actif
qui mobilise l’attention de nombreux chercheurs académiques ou industriels. Des
compétitions internationales (TREC, NTCIR, CLEF, INEX...) sont régulièrement
organisées pour comparer les performances de différents moteurs sur des données
communes. C’est un domaine encore certainement appelé à de grands développements
dans les années qui viennent.
Pages Web
Pour approfondir les sujets abordés ici (en plus des livres cités en section bibliogra-
phie), voici quelques pages Web pertinentes :
– le contenu du livre de référence sur la RI en anglais est disponible gratuitement
sur Internet : http ://www-nlp.stanford.edu/IR-book/
– des transparents présentés lors d’une ”école d’automne en RI” en 2012 :
http ://www.asso-aria.org/earia2012/programme
et en 2014 : http ://www.asso-aria.org/earia2014/programmeearia2014
– la partie sur PageRank est inspirée de sites disponibles sur Internet :
– un article sur un (excellent) site de vulgarisation de l’informatique :
https ://interstices.info/jcms/c 47076/comment-google-classe-les-pages-web
– un article sur un site plus commercial (orienté ”référencement”), mais assez
pédagogique et avec des exemples à reproduire :
http ://www.webmaster-hub.com/publication/L-algorithme-du-PageRank-explique.html
Chapitre 4
La Classification
1 Introduction
Comme on l’a vu, notamment en section 4.1, la tâche de classification est centrale
en fouille de textes, parce que toutes les autres tâches évoquées peuvent se ramener
à elle. Par sa simplicité (associer un résultat factuel unique à une donnée, à choisir
parmi un ensemble fini de réponses possibles), elle constitue en quelque sorte la pierre
angulaire de nombreux traitements, et donne lieu à de très nombreuses applications.
Rappelons les exemples des mails à classer en spam/non spam, la reconnaissance
du caractère positif/négatif d’un texte d’opinion ou encore l’identification de tout
ce qui peut correspondre à une méta-donnée associée à un document (son auteur,
sa date d’écriture, son domaine, son genre littéraire, sa variante linguistique...) du
moment que les valeurs possibles du résultat attendu soient en nombre fini.
Dans ces exemples, la donnée est toujours un texte complet. Mais la classification
peut aussi s’appliquer à des données tabulaires, comme dans le tableau de la figure
2.20 où il s’agit d’associer à chaque mot d’un texte son étiquette morpho-syntaxique,
en tenant compte de propriétés intrinsèques (le fait de commencer par une majus-
cule, de contenir des chiffres, etc.) ou contextuelles (sa position dans la phrase, les
mots précédents ou suivants, etc.). Dans tous les cas, nous verrons que, dès que de
l’apprentissage automatique -supervisé ou non- est utilisé, la tâche de classification
se ramène à trouver la valeur d’un champ symbolique dans un tableau de données :
typiquement, la dernière colonne d’un tableau dont les autres colonnes sont connues
(voir aussi le tableau extrait du logiciel Weka, Figure 2.2).
Comme les données tabulaires peuvent provenir de quantités de domaines divers,
la classification n’est en rien une tâche spécifiquement linguistique. Elle intéresse
aussi les banquiers, les médecins, les professionnels du marketing ou de l’assurance
(qui, tous, traitent des données numériques décrivant des individus), mais aussi les
spécialistes de l’analyse des images (qui cherchent à reconnaı̂tre le contenu d’images
pixellisées), par exemple. De ce fait, cette tâche est aussi celle qui, historiquement,
a suscité le plus de travaux en fouille de données, et pour laquelle existent donc un
très grand nombre d’algorithmes et de programmes. Ce sont les mêmes programmes
qui sont utilisés, quelle que soit la nature des données stockées dans les tableaux en
question. .
Terminons par un point de vocabulaire : suivant la communauté d’origine (infor-
matique, statistique...), le terme de ”classification” n’est pas toujours utilisé de la
même façon. Nous l’utilisons ici pour désigner une tâche générique, indépendamment
de la façon de l’implémenter dans un programme. Les statisticiens ont tendance à
assimiler ”classification” et ”clustering” (ce que nous nommerons ”classification par
apprentissage non supervisé”), tandis que les informaticiens la ramènent plutôt à
l’application de méthodes d’apprentissage automatique supervisé. Nous décrirons
l’ensemble de ces techniques dans la suite de ce document, ce qui contribuera à
mieux en faire comprendre les différences. Mais le début de ce chapitre sera tout
d’abord consacré à l’écriture ”manuelle” de programmes de classification.
des nombres quelconques (on dit aussi : fonctions affines ou polynômes de degré 1).
Apprendre la ”meilleure droite possible” a donc consisté à chercher les valeurs de a
et b de telle sorte que la droite s’approche le plus possible des points.
La deuxième, au milieu, est la ”meilleure parabole” possible. Les paraboles sont
les représentations graphiques des fonctions f de la forme : f (x) = y = ax2 + bx + c
(on dit aussi : polynômes de degré 2) pour des valeurs de a, b et c quelconques. Notez
que si a = 0, la parabole se transforme en droite : les droites sont des cas particuliers
de paraboles ! Cette courbe est donc la ”meilleure” (au sens de ”plus proche de tous
les points”) parmi l’ensemble de toutes les droites et de toutes les paraboles possibles.
Sa forme semble mieux rendre compte des légers infléchissements qui se produisent
pour les données extrêmes (pour les maisons les plus petites et pour les plus grandes),
mais peut-être les exagère-t-elle aussi. En tout cas, c’est cette solution qui apparaı̂t
comme la plus satisfaisante des trois.
La dernière, à droite, est la représentation graphique d’une fonction de la forme :
f (x) = y = ax6 + bx5 + cx4 + dx3 + ex2 + f x + g (on dit aussi un polynôme de
degré 6) avec des valeurs sélectionnées de a, b,..., g pour qu’elle soit la plus proche
possibles des points initiaux. Comme précédemment, l’ensemble de ces fonctions
inclut les précédents (l’ensemble des paraboles et celui des droites). L’espace de
recherche est donc plus vaste. De fait, la courbe obtenue passe exactement par les
points fixés initialement, elle devrait donc en théorie être très ”bonne”. Pourtant,
elle a l’air très irrégulière et pas très satisfaisante. Que s’est-il passé ? On appelle
ce phénomène le ”sur-apprentissage” (over-fitting) : à force de vouloir s’approcher
plus près des données du problème, on finit par trouver une solution aberrante. Pour
apprendre certaines lois, surtout dans le cas de problèmes issus de la ”vie réelle” (le
prix des maisons, par exemple !) qui ne suivent aucune loi parfaitement, il faut savoir
s’éloigner des valeurs précises.
Une solution ”approximative” pourrait donc être meilleure qu’une solution par-
faite ! Comment est-ce possible ? Quel critère adopter pour trouver la vraie ”meilleure”
solution ? Cet exemple nous montre que le vrai critère pour savoir si une solution
est bonne n’est pas qu’elle ”colle” bien aux données qui servent d’exemples pour ap-
prendre mais qu’elle généralise correctement sur des données nouvelles. Pour prédire
le prix de nouvelles maisons, quelle courbe vaut-il mieux suivre ? Sans doute la
xn , xo , ... Apprenant f (xn ), f (xo ), ...
deuxième ! C’est celle dont la forme montre mieux les ”tendances” que doit suivre
l’évolution des prix en fonction de la superficie. Repensons à l’exemple des textes
qu’il faut classer en ”spam”/”pas spam”. Evidemment, il n’existe aucun programme
idéal qui réalise cette opération, tant la notion de spam/pas spam est mouvante et
dépendante de chaque utilisateur. La seule façon de savoir si un détecteur de spams
est ”bon”, c’est de lui soumettre des textes nouveaux et de comparer son jugement
à celui d’un humain.
C’est pourquoi, lors d’expériences d’apprentissage automatique (en particulier
supervisé) il est absolument fondamental pour mesurer la qualité d’une solution
de l’évaluer sur des données nouvelles x qui n’ont pas servi lors de la phase d’ap-
prentissage. Le vrai critère de qualité est l’écart entre ce que le modèle issu de
l’apprentissage prédit sur ces données (la valeur f (x)) et la vraie valeur (y) associée
à x. D’où la nécessité de disposer d’exemples de référence réservés à l’évaluation
et d’où aussi l’importance des ”protocoles” évoqués en section 2.4 du chapitre 2.
La seule évaluation disponible en apprentissage automatique est empirique : c’est
uniquement en mettant à l’épreuve un programme appris sur des données inédites
que l’on évalue sa qualité.
Espace de recherche
La fonction recherchée dans le cadre de cette approche est très très simple : c’est
une fonction constante, c’est-à-dire qui fournit toujours la même valeur en résultat
quelle que soit la donnée d’entrée. Il y a donc exactement autant de fonctions dans
l’espace de recherche que de valeurs de résultat possibles, c’est-à-dire de classes
distinctes dans le problème : 2, pour nous !
Technique utilisée
Quelle fonction choisir ? Le choix est limité ! On a évidemment intérêt à prendre
celle qui est la plus représentée dans l’ensemble d’apprentissage, en espérant que c’est
parce qu’elle est la plus courante pour l’ensemble de toutes les autres données. En cas
d’égalité, on tire au sort... Dans notre exemple, comme on dispose de 4 exemples de
la classe ”culture” et de 3 exemples de la classe ”société”, c’est ”culture” qui gagne.
La fonction sélectionnée est donc celle qui, pour tout x, donne f (x) = ”culture”.
Pour cette sélection, on n’a même pas eu besoin de regarder le contenu des données
x, les deux représentations sont donc traitées de la même manière : peu importe x,
seule compte la classe.
Propriétés générales
Cet algorithme est très rapide, aussi bien en temps de calcul qu’en temps nécessaire
pour donner une valeur à une nouvelle donnée. Son résultat est aisément interprétable
et il est facile à mettre à jour en cas d’ajout de nouvelles données étiquetées. Mais,
évidemment, il n’est pas très efficace en termes de performance ! Tout ce qu’on peut
espérer, c’est qu’il fasse ”un peu mieux que le hasard” si les différentes classes du
problème sont effectivement déséquilibrées. Appliqué au problème de la reconnais-
sance des spams/pas spams, en supposant que les exemples fournis sont majoritai-
rement des spams, alors le programme ainsi appris classerait systématiquement tous
les nouveaux mails reçus en spams ! Sa robustesse et sa capacité d’adaptation à de
nouveaux domaines sont donc très mauvaises.
Espace de recherche
Exceptionnellement, il n’y a pas de phase d’apprentissage proprement dite pour
cette approche, c’est pourquoi elle est qualifiée de ”paresseuse”. Des calculs seront
nécessaires uniquement lors de l’attribution d’une classe à une nouvelle donnée. La
fonction f est complètement définie par les exemples (x, y) de l’ensemble d’appren-
tissage : le modèle coincide avec les données étiquetées ! L’”espace de recherche” est
en quelque sorte l’ensemble des fonctions définies par un certain nombre de données
x associées à une classe y.
Technique utilisée
Tout repose donc ici sur la façon d’associer une classe à une nouvelle donnée.
L’idée est de chercher, parmi les exemples disponibles (x, y), les k dont la valeur de x
est la plus ”proche” (au sens d’une distance prédéfinie) de cette nouvelle donnée et de
lui associer la classe y majoritaire au sein de ces k voisins. L’algorithme impose donc
de calculer la distance entre la nouvelle donnée et toutes celles fournies en exemples
et de mémoriser la classe des k plus proches. Les schémas de la figure 4.5 montrent
plusieurs cas possibles pour une nouvelle donnée (en vert) dans notre espace simplifié.
Comme notre exemple comporte 2 classes, il faut prendre une valeur de k impaire :
chaque donnée ne pouvant être que d’une classe parmi 2 possibles, une majorité
se dégagera nécessairement (il n’y aura pas d’ex-aequo). Ainsi, en choisissant dans
notre exemple k = 3 et la distance euclidienne, le premier point sera affecté à la
classe ”société” bleue (2 de ses 3 plus proches voisins sur le sont), tandis que les
deux suivants recevront l’étiquette ”culture” rouge. Notons que le résultat serait ici
le même avec k = 5. En revanche, avec k = 7, on retrouverait l’algorithme de la
classe majoritaire précédent qui, lui, associe toujours la valeur rouge !
Figure 4.5 – Trois configurations pour une nouvelle donnée dans l’espace simplifié
Propriétés générales
Les calculs requis par cette méthode sont raisonnables, similaires à ceux qu’ef-
fectue un moteur de recherche : la donnée à classer joue en quelque sorte le rôle
de requête, on évalue sa proximité avec toutes les autres données disponibles. Au-
cun traitement préliminaire n’est nécessaire, tout s’effectue lors de l’étiquetage d’une
nouvelle donnée. La mise à jour avec de nouveaux exemples est donc immédiate et le
résultat est interprétable (on peut demander à voir les données les plus proches qui
décident du résultat). Pourtant, cette approche est peu utilisée pour la classification
de textes. Cela tient sans doute à la très grande dimension des données dans ce cas
(plusieurs milliers de colonnes pour les ”vrais textes”). Or, les ”plus proches voisins”
ne sont efficaces que si les exemples disponibles ”couvrent” le territoire des valeurs
possibles dans chacune des dimensions de l’espace. Quand l’espace est très grand, il
faut donc disposer d’un très grand nombre d’exemples étiquetés pour espérer trou-
ver des voisins vraiment ”proches” pour n’importe quelle nouvelle donnée. Avec peu
d’exemples, d’autres méthodes sont plus efficaces.
En revanche, on peut signaler que cette approche est très utilisée dans un autre
domaine aux forts enjeux commerciaux, même s’il ne concerne pas directement les
textes : celui de la recommandation. Un système de recommandation a pour objectif
de prévoir les comportements d’individus vis-à-vis de certains produits de consom-
mation, en se fondant sur des comportements précédents. Ils sont particulièrement
utilisés pour recommander des produits culturels comme les livres, les films ou les
chansons (le fameux ”ceux qui ont commandé ce produit ont aussi apprécié...”
d’Amazon). Le point de départ d’un tel système est un tableau à double entrée
où sont référencés quels individus (en lignes) ont acheté/consulté/apprécié quels
produits (en colonnes). Beaucoup de cases sont vides, fautes d’appréciations expli-
cites connues. Pour prédire la valeur (en général : une note) d’une de ces cases vides,
des extrapolations fondées sur les plus proches individus et/ou produits voisins sont
calculées.
Espace de recherche
Un arbre de décision est un arbre qui se lit ”de la racine aux feuilles” pour toute
donnée x et se compose des éléments suivants :
– chacun de ses nœuds (y compris sa racine) contient un test portant sur la
valeur d’un unique attribut (une colonne) servant à décrire x. Les différentes
réponses possibles au test doivent couvrir toutes les valeurs possibles que peut
prendre cet attribut et chacune ”oriente” la lecture de l’arbre vers une unique
branche partant de ce nœud.
– chacune des feuilles de l’arbre contient la valeur de la classe y qui sera associée
à la donnée x aboutissant à cette feuille.
L’arbre de la Figure 4.6 est par exemple celui trouvé par Weka (algorithme J48)
quand on lui fournit en apprentissage les données de la Figure 2.2 qui, rappelons-le,
sont censées classer des conditions météorologiques en ”yes” si elles sont adaptées
pour jouer au tennis dehors et ”no” sinon.
Cet arbre est équivalent à une suite de tests emboités, et peut être paraphrasé
en Python de la façon suivante :
IF outlook == sunny:
IF humidity <= 75:
result = yes
ELSE :
result = no
ELSIF outlook == overcast:
result = yes
ELSIF outlook == rainy:
IF windy == TRUE:
result = no
ELSE:
result = yes
Figure 4.6 – Arbre de décision trouvé par Weka pour les données de la Figure 2.2
Les valeurs numériques qui figurent dans les feuilles de l’arbre produit par Weka
sont le nombre de données de l’ensemble d’apprentissage qui ”aboutissent” à ces
feuilles en partant de la racine (leur somme fait bien 14, qui était le nombre d’exemples
initiaux).
Pour les données de la Figure 4.3 issues de nos textes en exemple, Weka propose
l’arbre de la Figure 4.7. Cet arbre est extrêmement simple et ne rend pas parfaite-
ment compte des données d’apprentissage (appliqué sur ses propres données d’en-
trainement, il classe 5 textes en ”culture” dont 1 à tort, comme cela est signalé dans
la feuille correspondante). Nous verrons pourquoi en expliquant comment fonctionne
l’algorithme de recherche implémenté dans Weka. Cet algorithme (et ses variantes)
a pour espace de recherche l’ensemble de tous les arbres de décision possibles définis
à partir des attributs des données.
Technique utilisée
A partir de n’importe quel ensemble de données d’apprentissage, on peut toujours
construire très facilement un arbre de décision ”parfait” pour ces données : il suffit
pour cela d’énumérer les attributs les uns après les autres, de tester toutes les valeurs
possibles qu’ils prennent dans les exemples et de mettre finalement la bonne classe
dans les feuilles. Mais un arbre construit de la sorte serait beaucoup trop proche
des données initiales. Pour éviter le ”sur-apprentissage”, il faut privilégier les arbres
simples, petits, le moins profond possible : ce sont eux qui généralisent le mieux.
Trouver le plus petit arbre de décision possible compatible avec un ensemble de
données est un problème intrinsèquement difficile et les algorithmes employés se
contentent en général de solutions approximatives fondées sur des ”heuristiques”
(méthodes imparfaites mais faciles à appliquer).
Figure 4.7 – Arbre de décision trouvé par Weka pour les données de la Figure 4.3
Figure 4.8 – Courbes de Gini (en bas) et d’entropie H (en haut) en fonction p1 , la
proportion d’une des classes dans un ensemble de données à deux classes
Grâce à ces fonctions, on peut mesurer pour chaque attribut quel gain en ho-
mogénéité il est susceptible d’apporter. Il faut pour cela calculer la différence entre
la dispersion (ou le mélange) des données avant utilisation de l’attribut et après uti-
lisation. Le gain de la fonction Gini sur l’ensemble S suivant l’attribut a qui peut
prendre un nombre fini de valeurs v est ainsi défini par :
gain(Gini, a) = Gini(S) − v : valeurs de a |S|S| a=v |
!
Gini(Sa=v )
où |Sa=v | compte le nombre d’éléments de S pour lesquels l’attribut a vaut v, et
Gini(Sa=v ) est la valeur de la fonction Gini sur ce même sous-ensemble des données.
Un calcul similaire peut être effectué pour la fonction H. Nous illustrons ces calculs
sur les données météorologiques de la Figure 2.2 (S comporte donc 14 exemples,
parmi lesquels 9 ”yes” et 5 ”no”), en imaginant successivement chacun des attributs
en racine de l’arbre :
9
– la proportion de la classe ”yes” est p1 = 14 donc
9
Gini(S) = 2p1 (1 − p1 ) = 2 ∗ 14 ∗ (1 − 14 ) = 97 ∗ 14
9 5
= 4598
– si l’attribut ”outlook”, qui peut prendre 3 valeurs différents possibles, est
sélectionné en premier, on construit un arbre qui commence comme dans la
Figure 4.9.
outlook
”sunny” : 5 ”overcast” : 4 ”rainy : 5
(yes : 2, no : 3) (yes : 4, no : 0) (yes : 3, no : 2)
Figure 4.11 – Répartitions des ”yes” (en bleu) et des ”no” (en rouge) en fonction
de la temperature
les calculs ici, mais seulement quelques uns. Par exemple, si on positionne le
seuil quelque part entre 72 (inclus) et 75 (exclu), on obtient une séparation
entre un groupe de 8 points parmi lesquels figurent 5 ”yes” et 3 ”no”, et un
autre de 6 points, dont 4 ”yes” et 2 ”no”. On a donc :
|S | |S |
gain(Gini, temp <= 72) = Gini(S)− temp<=72 |S|
Gini(Stemp<=72 )− temp>72
|S|
Gini(Stemp>72 )
8 6
= Gini(S) − 14 Gini(Stemp<=72 ) − 14 Gini(Stemp>72 )
45 8
= 98 − 14 ∗ 2 ∗ 83 ∗ (1 − 38 ) − 14
6
∗ 2 ∗ 64 ∗ (1 − 46 )
1
= 1176 = 0, 00085...
Ce gain est mineur et peu intéressant. Si on positionne le seuil entre 75 (inclus)
et 80 (exclu), on a alors :
|S | |S |
gain(Gini, temp <= 75) = Gini(S)− temp<=75 |S|
Gini(Stemp<=75 )− temp>75
|S|
Gini(Stemp>75 )
10 4
= Gini(S) − 14 Gini(Stemp<=75 ) − 14 Gini(Stemp>75 )
45
= 98 − 57 ∗ 2 ∗ 10
7 7
∗ (1 − 10 ) − 27 ∗ 2 ∗ 21 ∗ (1 − 12 )
4
= 245 = 0, 0163...
Ce gain est meilleur que le précédent mais toujours inférieur à celui apporté
par l’attribut outlook. Il en est de même pour tous les autres gains possibles
apportés en faisant varier la valeur du seuil sur l’attribut des températures.
– Nous ne détaillons pas non plus les calculs (similaires aux précédents) pour
évaluer le gain qu’apporterait la prise en compte de l’attribut numérique hu-
midity comme premier attribut. Ils restent inférieurs celui d’outlook, d’où le
choix de prendre ce attribut en premier.
Ces calculs ont permis de déterminer qu’outlook est l’attribut le plus ”discrimi-
nant” parmi ceux disponibles, c’est-à-dire celui qui, pris en compte seul, sépare le
mieux les classes ”yes” et ”no”. Ce premier choix permet donc de sélectionner le
début de l’arbre de la Figure 4.9. Parmi les branches restantes, nous constatons
que celle du milieu (correspondant au test outlook=”overcast”) est complètement
homogène : on peut donc directement lui attribuer la valeur de la classe ”yes”. Les
deux autres branches présentent encore des données mélangées, où les deux classes
sont représentées. Il faut réitérer pour chacune d’elles le processus de calcul que
nous venons de détailler (en excluant toutefois l’attribut outlook, déjà exploité).
Nous ne détaillons pas les calculs, mais on peut se convaincre facilement que c’est
bien l’arbre de la Figure 4.6 que l’on va ainsi finalement sélectionner d’autant que,
chaque fois, un seul critère sur un attribut permet une séparation parfaite des deux
classes (assurant un gain maximal).
Revenons maintenant à l’exemple de nos textes. Parmi les 18 attributs de la
représentation vectorielle de la Figure 4.3, les calculs de gain (non détaillés ici)
sélectionnent le mot ”économie” qui permet de correctement classer 6 des 7 textes,
produisant ainsi l’arbre de la Figure 4.7. Il serait bien sûr possible de réitérer la
phase de recherche d’un critère optimal sur les données de la branche de gauche, afin
d’obtenir un arbre ”parfait”. Mais l’ajout d’un tel critère ne servirait à distinguer
qu’un seul texte (qui n’est peut-être qu’un cas particulier aberrant) parmi 5, et nous
avons vu que ”coller” trop aux données faisait courir le risque du sur-apprentissage.
J48 implémente donc une stratégie d’”élagage” consistant à privilégier les arbres
simples même imparfaits par rapport aux arbres parfaits mais trop spécifiques. C’est
ce qui explique que Weka se contente de l’arbre de la Figure 4.7.
La représentation des mêmes textes dans l’espace simplifié de dimension 2 (Figure
4.4) nous donne l’occasion d’expliquer le principe des arbres de décision un peu
différemment. Puisque les deux dimensions de cet espace sont numériques, on cherche
le meilleur critère parmi ceux qui sont de la forme ”attribut <= seuil”. Or chaque
attribut est associé à une dimension distincte de l’espace, et les critères de cette
forme correspondent donc à des droites séparatrices parallèles aux axes. Le meilleur
critère est donc la meilleure de ces droites, celle permettant d’opérer la distinction
la plus claire entre les points bleus (classe ”culture”) et les rouges (classe ”société”).
La figure 4.12 montre deux de ces droites : si on nomme respectivement m1 et m2
les deux dimensions, la première réalise le critère m2 <= 1, 2 et la seconde le critère
m1 <= 1, 6. Ces deux critères sont d’égales qualités, puisque chacun d’eux sépare
les données entre d’une part 3 textes ”société” correctement regroupés, d’autre part
trois textes ”culture” mélangés à un seul texte ”société”.
Figure 4.12 – Deux droites séparatrices parallèles aux axes optimales dans l’espace
simplifiée
Notons que les tests m2 < 2 et m1 < 2 donneraient exactement les mêmes
résultats en termes de répartition des points de part et d’autres des droites. Sans
avoir besoin de faire les calculs, on peut se convaincre facilement que ces critères
sont ceux apportant le meilleur gain parmi tous les critères possibles de la forme
”attribut <= seuil”. Supposons donc que nous choisissions le premier d’entre eux,
représenté à gauche sur la Figure 4.12 et correspondant à m2 <= 1, 2. Les données
qu’il sépare sont homogènes d’un coté mais pas de l’autre, essayons donc de continuer
la séparation sur la zone de l’espace pour lesquels m2 > 1, 2. Sur cette zone, une
nouvelle droite parallèle aux axes suffit à distinguer les points rouges des points
bleus, par exemple en testant si m1 <= 1, 4. La composition de ces deux critères,
représentée par la Figure 4.13, correspond à l’arbre de la Figure 4.14.
<= 1, 2 > 1, 2
société (3) m1
<= 1, 4 > 1, 4
culture (3) société (1)
Propriétés générales
Les arbres de décision sont surtout appréciés pour leur lisibilité, qui les rend en
général compréhensibles par un humain (dans les limites d’une certaine taille). Ils
sont applicables sur des données de toute nature, que les attributs prennent des
valeurs symboliques ou numériques, et pour un nombre quelconque de classes.
Une propriété intéressante de ces arbres est qu’ils ordonnent les attributs en fonc-
tion de leur caractère discriminant, c’est-à-dire pertinent pour distinguer une classe
d’une autre : plus un attribut se trouve proche de la racine dans un arbre de décision,
plus il est discriminant. Les arbres de décision peuvent ainsi être utilisés comme une
forme de pré-traitement, pour sélectionner certains attributs et en négliger d’autres.
Les programmes qui les construisent sont en général rapides et efficaces, mais pas
incrémentaux. Sur les textes, leurs performances (en termes de précision/rappel/F-
mesure) sont habituellement moindres que celles obtenues avec d’autres méthodes.
Mais Weka intègre aussi de nombreuses extensions de l’algorithme de référence J48
qui, pour certaines dans certains cas, peuvent s’avérer plus performantes, mais que
nous ne détaillerons pas ici.
Théorème de Bayes
Le théorème de Bayes énonce une relation fondamentale entre des probabilités
conditionnelles. Il faut donc tout d’abord définir cette notion. Etant donné deux
événements A et B, la probabilité conditionnelle de ”A sachant B”, qu’on note
p(A|B) se calcule de la façon suivante : p(A|B) = p(A∩B) p(B)
. Pour bien comprendre
cette définition, prenons l’exemple suivant :
– soit A l’événement ”obtenir un nombre inférieur ou égal à 4 en jouant à un dé
(non truqué !)” : p(A) = 46 = 23
– soit B l’événement ”obtenir un nombre pair en jouant au dé” : p(B) = 12
Ces deux événements ne sont pas indépendants. L’événement A∩B, à savoir ”obtenir
un nombre à la fois pair et inférieur ou égal à 4 en jouant au dé” a la probabilité
p(A ∩ B) = 62 = 13 . Examinons maintenant les probabilités conditionnelles faisant
intervenir A et B :
– p(A|B) correspond à la probabilité de l’événement ”obtenir un nombre inférieur
ou égal à 4 au dé, sachant qu’on a obtenu un résultat pair”. D’après la formule
de la probabilité conditionnelle, on a :
1
p(A|B) = p(A∩B)
p(B)
= 3
1 = 13 ∗ 2 = 32
2
– on peut aussi calculer p(B|A) en intervertissant les rôles de A et de B dans la
formule. Cette probabilité correspond à l’événement ”obtenir un nombre pair
sachant qu’on a obtenu un nombre inférieur ou égal à 4” :
1
p(B|A) = p(B∩A)
p(A)
= p(A∩B)
p(A)
= 1 3 1
2 = 3 ∗ 2 = 2
3
3
Les résultats obtenus par calculs sont conformes à l’intuition de la probabilité de ces
événements. On remarque aussi que dans les deux variantes de la formule initiale
utilisées, il y a un élément commun : en effet, on a toujours p(A∩B) = p(B ∩A). Or,
d’après les définitions des probabilités conditionnelles, p(A ∩ B) = p(A|B) ∗ p(B) et
p(B ∩ A) = p(B|A) ∗ p(A). En utilisant l’égalité entre ces deux formules, on obtient :
p(A|B) ∗ p(B) = p(B|A) ∗ p(A), ou encore : p(B|A) = p(A|B)∗p(B) p(A)
. Cette relation est
le théorème de Bayes !
Dans cette formule, on appelle souvent p(B) la probabilité a priori de B (au sens
où elle est ”antérieure” à toute connaissance sur A), tandis que p(B|A) est la proba-
bilité a posteriori de B sachant A (ou encore ”sous condition” de A). Ce théorème
est simple à énoncer et à démontrer, mais il énonce une relation très intéressante
entre les probabilités de deux événements (généralement liés entre eux). Il est pour
cela utilisé dans de nombreux domaines. Par exemple, en médecine p(B|A) peut
désigner la probabilité de développer une certaine maladie (événement B), sachant
(observant) certains symptômes (événement A). Le théorème de Bayes relie cette
probabilité à la probabilité p(A|B) d’observer les symptômes en question, sachant
qu’on a (à coup sûr) développé la maladie, et aussi aux probabilités p(A) et p(B).
Grâce à ce théorème, on intervertit en quelque sorte les rôles de ce qui est connu et
de ce qui est inconnu.
Espace de recherche
En classification de textes, on doit affecter une classe c à un document d connu.
Une approche probabiliste va naturellement chercher la classe c la ”plus probable”,
c’est-à-dire celle qui rend p(c|d) le plus grand possible. La valeur de cette probabilité
n’est pas directement évaluable. Mais, en appliquant le théorème de Bayes, on se
ramène au problème de calculer : p(d|c)∗p(c)
p(d)
. En fait, on ne cherche pas tant à obtenir
la valeur précise de cette formule qu’à trouver la classe c qui la rend la plus grande
mot art ci. cr. crit. éc.. fe. fr. hol. ind. me. mét. mo. mond. p. rec. rêv. tps us.
nb 1 3 1 3 0 0 1 2 2 0 1 2 0 1 0 2 0 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
tot. 2 4 2 4 1 1 2 3 3 1 2 3 1 2 1 3 1 2
nb 1 0 2 0 2 1 1 0 1 1 0 0 1 0 1 0 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
tot. 2 1 3 1 3 2 2 1 2 2 1 1 2 1 2 1 2 2
Figure 4.15 – sacs de mots cumulés pour les classes ”culture” et ”société”
possible. Pour cela, il est inutile de connaı̂tre la valeur de p(d), qui ne varie pas
d’une classe c à une autre. On est donc ramené au problème de trouver c telle
que la valeur de p(d|c) ∗ p(c) soit la plus grande possible. L’espace de recherche
de l’approche ”bayésienne” de la classification est en quelque sorte l’ensemble des
moyens de calculer les probabilités inconnues p(d|c) et p(c). C’est à cela que vont
servir les exemples fournis lors de la phase d’apprentissage.
Technique utilisée
Evaluer les valeurs de p(c) pour les différentes classes c est la partie la plus simple
du problème, car ces classes ne dépendent pas du document d à classer. Il suffit pour
les évaluer de calculer la proportion de chaque classe dans l’ensemble des exemples
disponibles. Dans notre exemple avec 7 textes, on prend donc p(culture) = 74 et
p(societe) = 73 .
Evaluer p(d|c) est apparemment une tâche paradoxale. Elle consiste en effet à
calculer la probabilité d’un document d connaissant une classe. Qu’est-ce que cela
signifie ? C’est ici qu’une hypothèse ”naive” va être nécessaire. En réalité, cette hy-
pothèse a déjà faite pour transformer les textes en tableaux de nombres : elle consiste
à considérer qu’un texte n’est qu’un sac de mots et que chaque mot est indépendant
des autres. Les exemples étiquetés ont été traités de cette façon. La connaissance
qu’ils nous apportent sur chaque classe c se confond ainsi avec l’ensemble des mots
présents dans les textes qui y sont rangés. Habituellement, en probabilité, on ima-
gine des problèmes de boules de différentes couleurs piochées dans une urne. Ici, les
urnes sont remplacées par les ”sacs”. Il y a autant de sacs différents que de classes
et ce sont les occurrences de mots qui jouent le rôle des ”boules”. Obtenir le texte d
connaissant la classe revient alors à tirer au sort indépendamment chacun des mots
de d dans les différents ”sacs” ( disponibles. Comme les mots sont indépendant les
uns des autres, on a : p(d|c) = mot∈d p(mot|c)
Reprenons l’exemple de nos 7 textes dont les représentations en nombres d’oc-
currences des mots (non vides) sont données dans la Figure 4.3. Ils sont rangés dans
deux classes différentes. Les ”sacs de mots” correspondant à ces deux classes sont
obtenus en cumulant les nombres d’occurrences des mots de chacun des textes qui
en font partie. Pour tout nouveau document d à classer, on cherche dans quelle
classe (donc dans quel sac) la probabilité de ses mots est la plus grande. On ne
prend en compte que les mots de d présents dans les exemples. Pour que chacun
d’eux ait une probabilité non nulle d’être tiré au sort dans chaque ”sac”, on ajoute
systématiquement dans chacun des sacs un exemplaire de chacun des mots. Sinon,
on pourrait avoir p(mot|c) = 0 et donc p(d|c) = 0. On obtient donc à partir de la
Figure 4.3 les deux ”sacs” représentés dans le tableau de la figure 4.15.
mot cinéma économie
nombre 9 4
+ 1 1
total 10 5
nombre 1 7
+ 1 1
total 2 8
Figure 4.16 – sacs de mots cumulés pour les classes ”culture” et ”société” dans
l’espace simplifié
Ce calcul indique qu’il est plus probable de tirer les mots de d dans le sac ”société”
que dans le sac ”culture”. Le programme lui associe donc la classe ”société”.
Nous pouvons aussi bien sûr refaire ces calculs dans le cas de la représentation
dans l’espace simplifié à deux dimensions. Dans ce cas, les ”sacs de mots” obtenus
pour les deux classes à partir des 7 textes initiaux sont donnés par le tableau de la
Figure 4.16.
Dans l’espace simplifié, le texte ”En temps de crise, un cinéma ne ferme jamais !”
se trouve représenté par le vecteur de coordonnées (1, 1) car seuls les mots ”crise” et
”cinéma” sont pris en compte (le premier est rattaché par une ontologie à la dimen-
sion ”économie”, le deuxième à la dimension ”cinéma”). Les calculs de probabilités
conditionnelles sont alors les suivants :
10 5
p(d|culture) = 15 ∗ 15 = 32 ∗ 31 = 29
2 8
p(d|societe) = 10 ∗ 10 = 15 ∗ 45 = 25 4
4.5 SVM
Les ”Support Vector Machines” (”machines à vecteurs supports” ou ”séparateurs
à vastes marges” suivant les traductions !) sont des méthodes très puissantes is-
sues d’une analyse mathématique précise et avancée du problème de l’apprentissage
d’un séparateur binaire dans un espace vectoriel. Nous ne pourrons ici qu’en donner
une intuition, sa compréhension complète requiert des connaissances mathématiques
trop poussées. Jusqu’à récemment, ces méthodes donnaient la plupart du temps les
meilleurs résultats.
Espace de recherche
Un SVM est un séparateur binaire, c’est-à-dire qu’il vise à séparer les données
étiquetées en deux sous-ensembles disjoints. Nous supposerons donc pour l’instant
que nous cherchons à l’appliquer sur un problème à deux classes. Les données d’ap-
prentissage sont décrites par des points dans un espace vectoriel : les SVM s’ap-
pliquent donc essentiellement à des données numériques, comme celles de la Figure
4.4. Dans cet espace, les séparateurs les plus simples sont des hyperplans. Qu’est-
ce qu’un hyperplan ? C’est très simple : dans un espace de dimension n, c’est un
sous-espace de dimension n − 1. Par exemple :
– si l’espace est de dimension 1 (une droite, sur laquelle figurent des points
appartenant aux deux différentes classes), un hyperplan est de dimension 0
(c’est un point de cette droite) : un point sépare bien la droite en deux ”demi-
droites”. Pour caractériser ce point, un seul nombre suffit : sa coordonnée x = a
par rapport à l’origine (le point pour lequel x = 0) de la droite.
– Si l’espace est de dimension 2 (un plan), un hyperplan est une droite qui coupe
bien le plan en deux. Dans un espace plan où les axes s’appellent x et y, les
droites ont toutes une équation de la forme : y = ax + b. Elles sont donc
caractérisées par les deux nombres a et b.
– Pour ”couper en deux” un espace de dimension 3 (comme celui dans lequel nous
vivons), il faut un plan (un ”mur infini”), c’est-à-dire un objet de dimension
2. Ils ont une équation de la forme : z = ax = by + c, z étant le troisième axe
ajouté aux deux autres.
– Il en va de même pour n’importe quel espace de dimension n : il peut toujours
être ”coupé en deux” par un hyperplan de dimension n − 1, dont l’équation
s’écrit xn = a1 x1 + a2 x2 + ... + an−1 xn1 où x1 , x2 ,. .., xn sont les n axes de
l’espace et a1 , a2 , ..., an les ”paramètres” qui distinguent un hyperplan d’un
autre.
Le but d’un apprentissage par SVM est donc de trouver le ”meilleur” hyperplan
séparateur rendant compte des données d’apprentissage, en choisissant la valeur des
nombres a1 , a2 , ..., an . Cela définit l’espace de recherche de la méthode.
Technique utilisée
Suivant les données d’apprentissage, il peut n’exister aucun hyperplan séparateur
parfait (par exemple, aucun point ne permet de séparer les ”points bleus” des ”points
rouges” dans la Figure 4.11) ou au contraire une infinité de séparateurs différents
possibles : les dessins de la Figure 4.17 montrent deux droites possibles pour nos
données d’exemple.
Laquelle de ces deux droites préférer ? C’est là que la notion de ”marge” va
intervenir. La marge d’un hyperplan séparateur est la plus petite distance qui le
sépare des points le plus proches. L’algorithme des SVM va privilégier la droite qui
assure la plus grande ”marge” possible, c’est-à-dire celle qui ”colle le moins possible”
aux données. Clairement, dans notre exemple, celle de droite satisfait le mieux ce
critère et va donc être choisie. On privilégie ainsi la règle qui généralise le mieux
les exemples et évite le ”sur-apprentissage”. Par ailleurs, sur la figure, on voit bien
que l’orientation générale de cette droite dépend essentiellement des deux ou trois
points qui se retrouvent les plus proches d’elle : ces points sont appelés les ”vecteurs
supports”. Ce sont eux qui définissent où se positionne la frontière entre les deux
classes, ils jouent un rôle discriminant fondamental.
Comment faire quand aucun hyperplan ne permet de séparer complètement les
données des différentes classes ? Plusieurs niveaux ”d’astuces” sont utilisés. Tout
d’abord, il est toujours possible de chercher le meilleur hyperplan possible, si on
prend en compte les données d’exemples qu’il classe mal comme des ”pénalités”. Un
point qui se trouve du ”mauvais côté” du séparateur induit une erreur qui se mesure
comme son écart (sa distance) à ce séparateur. Cette erreur peut être vue comme une
”marge négative”. Chercher l’hyperplan induisant la plus petite somme des erreurs
possible revient au même que chercher l’hyperplan assurant la plus grande marge.
Mais une ”astuce de calcul” plus compliquée et plus fondamentale est aussi cou-
ramment utilisée avec les SVM, on l’appelle ”l’astuce du noyau”. Elle part du constat
suivant : quand il est impossible de séparer deux classes dans un espace de dimension
n, cela peut devenir possible en faisant subir aux données une transformation qui
les envoie dans un espace de dimension plus grande. Ce phénomène est illustré dans
la Figure 4.18.
Propriétés générales
Les SVM sont des outils puissants, qui obtiennent souvent les meilleures per-
formances en classification. Il sont difficiles à battre ! Ils sont particulièrement bien
adaptés aux problèmes de classification binaire dans des espaces vectoriels de grande
dimension, et s’adaptent donc bien aux textes traités en ”sacs de mots”. Si le
problème comporte plus de deux classes, la stratégie habituelle consiste à lancer plu-
sieurs apprentissages indépendants pour chercher à séparer deux des classes entre
elles, ou une classe contre toutes les autres, et à combiner ensuite les classifieurs
obtenus pour construire une réponse globale sur l’ensemble des classes. Cela fonc-
tionne souvent très bien, le nombre de classes ne constitue donc pas un obstacle à
l’application des SVM.
Mais, sur les autres plans de comparaisons entre techniques d’apprentissage au-
tomatique, ils ne se situent pas toujours au meilleur niveau. Ils requièrent ainsi
en général des calculs importants qui, de plus, doivent être recommencés à zéro
dès qu’une nouvelle donnée est ajoutée à l’ensemble d’apprentissage : le calcul du
meilleur hyperplan séparateur n’est en effet pas incrémental. Le résultat fourni par
le programme n’est pas non plus très lisible. On dispose certes, en général, des pa-
ramètres a1 , a2 , ..., an de l’hyperplan sélectionné : plus la valeur ai d’un paramètre
est grand, plus l’attribut (la dimension) associé(e) est important pour la tâche de
classification. On dispose donc indirectement d’un classement entre les attributs.
Mais c’est un indice assez faible qui reste peu exploité. La position des ”vecteurs
supports” donne aussi des indications sur là où passe la frontière entre les classes.
4.6 Réseaux de neurones
Espace de recherche
Technique utilisée
Propriétés générales
L’Annotation
HMM et CRF
Chapitre 6
on se ramène à avant
Chapitre 7
Conclusion
on conclut
Chapitre 8
Bibliographie
Annexes