• Aucun résultat trouvé

Classification incrémentale et regroupement de documents Web

N/A
N/A
Protected

Academic year: 2022

Partager "Classification incrémentale et regroupement de documents Web"

Copied!
22
0
0

Texte intégral

(1)

Stage de recherche Master 1ère année

Université Paris-Est Marne-la-Vallée

Classification incrémentale et regroupement de documents Web

Sigogne Anthony

laboratoire d'informatique de l'Institut Gaspard Monge, 2008 asigogne@etudiant.univ-mlv.fr

(2)

Résumé :

Dans ce papier, nous détaillerons la construction d'un ensemble de classes regroupant des documents web et évoluant en fonction de l'actualité par un algorithme incrémental. Les techniques traditionnelles pour la classification de documents ne sont pas adaptées à notre problème. Pour ceci, nous verrons tout d'abord comment représenter les documents en tant que vecteur de mots et les outils qui permettent ensuite de les classer et les regrouper sous forme de classes, chacune d'elles ayant une représentation dont le sens principal pourra être déduit.

mots-clés : regroupement, classification, documents web, extraction mots-clés

Remerciements

Je tenais à remercier particulièrement mon tuteur de stage Matthieu Constant pour son aide précieuse durant toute la durée du stage, Eric Laporte pour m'avoir fait confiance, ainsi que l'entreprise Xérès, composée de Nicolas Juhel et de Jean-Marc Buret.

Et tous ceux qui m'ont aidé pour les évaluations des différentes parties.

(3)

1- Introduction

Avec la révolution du web, nous avons vu une énorme quantité de données de tous genres afflué des quatre coins du monde sur la toile. C'est dans ce contexte que le besoin de rechercher, filtrer et classer est devenu très important, l'entreprise Xeres [27], spécialisée dans le marketing interactif pour diverses entreprises, notamment Coca-Cola. Elle s'est lancée sur la voie de la veille du web, avec deux objectifs: classer rapidement des pages web de l'actualité et obtenir les différents sujets abordés. Ce besoin s'explique par la demande croissante des entreprises d'améliorer leur image de marque en lançant des campagnes de publicité et savoir ce que pense l'opinion publique en puisant sur le web, et dans l'actualité, toutes les informations les concernant.

C'est dans le cadre du stage de recherche en M1 que nous avons été amenés à travailler en collaboration avec l'entreprise, et en particulier Nicolas Juhel, consultant chez Xeres.

L'objectif de notre travail est de développer des outils permettant de regrouper des documents web dans des classes distinctes. Chaque classe doit représenter un sujet, non défini à l'avance, unique. Par ailleurs, les classes sont en évolution permanente car l'actualité nous donne très souvent de nouveaux sujets. De plus des sujets jugés non pertinents, car trop anciens, doivent pouvoir être supprimés.

On peut distinguer deux parties principales dans le but recherché. Tout d'abord il faut représenter chaque document, ou texte, sous forme de sac de mots, c'est à dire un vecteur dont les dimensions sont les mots du texte, et chaque composante de ce vecteur est le poids (ou l'importance) de ce mot dans le texte. Ce vecteur sera constitué des mots-clés, les mots les plus importants du texte. Pour ceci plusieurs pré-traitements doivent être effectués: l'extraction du texte pertinent de la page web puis l'extraction de la langue principale du texte, nécessaire pour l'application de ressources spécifiques futures. Les mots-clés sont ensuite extraits par plusieurs méthodes de filtrages, statistiques d'abord, en utilisant la fréquence des mots dans le texte, puis linguistiques en se basant sur un étiqueteur morpho-syntaxique, des ressources lexicales et des grammaires. Cette représentation est très utile dans des algorithmes de classification, ainsi que très pertinente visuellement pour un utilisateur lambda.

Ensuite la deuxième partie consistera à regrouper les textes entre eux, par un algorithme de classification incrémental prenant en entrée les textes sous forme de vecteur de mots, et donc les mots-clés extraits dans la première partie, pour créer en sortie des classes de documents.

La rapidité et la praticité sont des particularités importantes de cet algorithme.

Ce papier est organisé comme suit :

Dans la section 2, nous verrons l'extraction des mots-clés d'un document web.

Dans la section 3, nous détaillerons l'algorithme de regroupement et classification de documents web.

Dans la section 4, nous finirons sur une conclusion et des perspectives futures.

2- Extraction de mots-clés

2.1 Introduction

Dans cette partie nous étudierons l'extraction automatique de mots-clés d'un document web.

Un mot-clé est un mot dont le sens rejoint le sens global du texte étudié ou dans la périphérie des mots proches du sens. Il est donc intéressant d'obtenir un vecteur, un ensemble, de mots- clés pour représenter un document dans sa globalité.

Plutôt que de parler de mots-clés qui a une connotation de mots simples, on devrait parler de séquences clés de mots comme l'énonce Manning dans son article [2] car de nombreux mots- clés sont des mots composés ou des noms propres, par exemple tribunal correctionnel a plus de sens en tant que mot-clé que tribunal. De plus le mot terme est parfois utilisé pour exprimer ces mots (mots simples, mots composés,...) dans le domaine de la recherche d'informations.

(4)

Le principe de l'algorithme est montré dans la Fig.1, découpé en quatre étapes successivement exécutées en Fig. 2,3 et 4 et regroupées en deux grandes parties qui sont le pré-traitements des documents, incluant l'extraction du texte pertinent et la détection automatique de la langue du texte, et ensuite l'extraction des mots-clés avec les différents filtrages, statistiques puis linguistiques, avant d'obtenir les mots-clés finaux.

2.2 Quelques approches existantes De nombreux algorithmes se focalisent sur les fréquences des mots dans le texte, par exemple, GenEx, un algorithme génétique, et Kea [2] utilisant la théorie des décisions naïves de Bayes, et enfin Hulth [3] et Huzun [4] qui se basent également sur cette théorie.

Ces deux derniers emploient une méthode dite supervisée. Elles utilisent des corpus d'apprentissage constitués de documents annotés manuellement dont le but est d'obtenir des groupes de mots- clés déjà formés en entrée de l'algorithme d'extraction de mots-clés. Ils considèrent que l'extraction de mots-clés est un problème de classification. Elles sont liées à la théorie de Bayes énonçant des problèmes de décisions basés sur les probabilités, le coût de chaque décision étant pris en compte. Le choix d'une classe pour un mot est celle qui aura la meilleure probabilité.

Les deux principales propriétés utilisées pour ces algorithmes sont la valeur de score TF-IDF, que l'on va réutiliser pour l'observation des fréquences d'un mot dans un texte, et la position des mots par rapport au début du texte, sachant qu'un point de concentration des mots-clés est souvent présent dans un texte. Plus un mot est éloigné de ce point, moins il devrait être pertinent. Ce deuxième point ne sera pas utile à notre algorithme, Nous avons préféré nous baser uniquement sur la fréquence des mots et des propriétés linguistiques.

On se distingue de ces méthodes car nous n'avons pas de corpus d'apprentissage. Cette approche est dite méthode non supervisée.

2.3 Pré-traitements des documents

2.3.1 Extraction du texte d'un document web

L'extraction des mots-clés d'un document issu du web pose la question de la qualité du texte sur lequel on doit les extraire, celle ci étant accrue si uniquement le texte pertinent est extrait de la page, le reste est considéré comme du bruit. La structure d'une page web de nos jours est de plus en plus complexe de par le nombre de balises possibles et les dispositions dans lesquelles on peut les placer. De plus, le langage HTML étant peu normé dans sa structure, on peut largement penser que beaucoup de pages web sont mal formées, que des balises ne soient pas fermées voir inexistantes...chaque page n'est pas équivalente à une autre en terme de structure. Le bruit précédemment cité est composé généralement de barres de menu, de liens vers d'autres articles, d'éléments de scripts...

Peu d'articles évoquent le sujet, nous avons donc développé un algorithme qui se base sur plusieurs propriétés importantes dans un document web. Tout d'abord, on peut faire l'hypothèse que le texte pertinent est soit un texte plein soit un texte découpé en paragraphes distincts. Ces paragraphes sont eux même découpés en séries de phrases longues. C'est cette propriété qui nous permet de détecter un noyau de texte. Le terme phrase longue est très important car la première partie de bruit que l'on peut supprimer sont les listes de mots contenus entre les balises <li>, <tr> créant des structures de listes similaires à des menus. On fixera un nombre minimal de caractères pour considéré qu'une suite de mots est une phrase longue, tout en omettant les balises de formatage du texte du type <b>, <i>... Dans l'exemple Algorithm keysExtraction(doc: url, tfidf: T)

begin

X1 = tfidf threshold X2 = freq threshold

n = number of keys of final vector text = extract_text(url)

vect = extract_vect(text) lang = detect_lang(text) keys = filter_tfidf(vect,T,X1) keys = filter_linguistic(keys,lang) coump = extract_coumpounds(text)

keys = extract_keys(keys,vect,coump,X2,n) return keys

end

Fig.1 keys Extraction Algorithm

(5)

de la Fig.A plusieurs phrases de taille variant entre 1 et 4 mots donc des phrases courtes sont contenues dans une liste, elles ne seront pas dans le texte extrait final car aucune n'a de poids important. Ce cas de figure est le plus courant en ce qui concerne le bruit extérieur. Au contraire, la Fig.B montre ce qui pourrait être accepté, plusieurs phrases longues contiguës.

Cependant, un problème survient lorsque l'on regarde de plus près les pages web. La propriété des phrases longues n'est pas suffisante quand la page contient des articles contextuels, c'est à dire des liens vers d'autres pages sous forme de résumé de 2 ou 3 lignes, insérés autour du texte pertinent. Il faut donc les filtrer au maximum.

Pour cela, on part du constat que le texte pertinent est le premier groupe de phrases longues candidat.

Ensuite on va introduire une notion de distance par rapport à ce point. Si un groupe de phrases de taille inférieure au groupe précédent est trouvé, il s'agit sûrement de bruit provenant des articles contextuels.

En revanche si la taille est supérieure, il peut s'agir d'un autre bout de paragraphe provenant du texte principal. Tout ceci étant fixé par une distance minimale, valeur fixée à la main, plus le texte est loin du point central moins il a de chance d'être pertinent.

La distance entre le point central et un autre bout de texte est calculée à partir des balises de sauts de lignes ou de script et les textes non pertinents, sachant qu'une balise ou un texte équivaut à une valeur de 1 en distance. Ainsi si l'on prend le fait que la Fig.B nous montre le texte central, et que la Fig.C est un autre bout de texte situé à une distance supérieure à la distance minimale alors ce texte sera filtré car de longueur inférieure en nombre de mots.

L'évaluation du système a porté sur 100 documents web de différentes sources et d'intensités de bruitage différentes. Plusieurs sites de journalismes tel que Le Figaro ou 20Minutes.fr sont très bruités alors que d'autres comme Le Monde ou AFP le sont moins. De plus quelques

« blogs » ont été testés. Les documents utilisés mêlent sites connus (AFP, Le Monde...) et inconnus (Ouest-France,...) en terme de structure pour une vue plus objective des résultats.

Plusieurs critères ont été testés sur le texte final obtenu en comparaison du texte original:

savoir si tout le texte pertinent à été extrait, si les menus et autres barres d'outils ont été supprimées, le bruit provenant des articles contextuels et si les commentaires des utilisateurs sont présents. Ces commentaires proviennent de textes écrits par des humains lambda en bas de page pour l'article courant, ils sont très présents dans les blogs et plus rarement dans d'autres types de page. La table suivante montre les résultats obtenus :

Type de documents web

Intensité du

Bruit Nombre de

documents testés

Totalité texte pertinent en sortie

Barres menus

supprimées Articles connexes supprimés

Commentaires utilisateurs présents AFP

Le Monde ...

faible 20 100% 100% 100% 0%

Libération Les échos Ouest- France ...

moyen 20 95% 95% 95% 5%

Le Figaro 20Minutes.fr ...

fort 20 100% 100% 100% 5%

blog faible 20 100% 100% 100% 50%

généraliste faible/moyen 20 95% 100% 100% 25%

<p>Trois jours après le meurtre du petit  Valentin, frappé à quarante­quatre reprises au  moyen d'une arme blanche, à Lagnieu (Ain),  les enquêteurs disposent désormais d'une  trace matérielle les reliant au criminel. Jeudi,  une première exploitation des multiples  prélèvements effectués sur la scène du crime a  permis d'isoler ... </p>

Fig.B

<li>Accueil</li>

<li>Actu a la une</li>

<li>Le Figaro en page d'accueil</li>

Fig.A

<h2>Après une première garde à vue jeudi, un deuxième homme a été emmené par les enquêteurs

pour être entendu comme témoin.<br/>

Fig.C

(6)

On peut observer une grande fiabilité dans l'extraction du texte pertinent cependant des optimisations restent à effectuer. Les commentaires d'utilisateur: Doit-on les garder?

Comment regrouper des paragraphes trop distants entrecoupés de bruit?

2.3.2 Détection automatique de langue

La détection de la langue du texte est très importante pour l'application future de ressources linguistiques et lexicales sur ce texte. Chaque langue a des spécificités linguistiques particulières (ex : vocabulaires différents,...)

Il existe plusieurs méthodes pour reconnaître la langue d’un texte : regarder l’alphabet utilisé dans ce texte, consulter des dictionnaires,... Ces méthodes présentent deux défauts : elles nécessitent souvent des données sur les langues considérées et/ou fonctionnent mal sur des échantillons de texte très courts. Pour résoudre ce problème, nous allons formaliser l’intuition qui nous suggère que « sténographie » est un mot plutôt français et « schaftbesonders » un mot plutôt allemand, et ce, même si ces deux mots n’existent pas ou sont inconnus du lecteur.

En effet, les facteurs interdits d’une langue rendent bien compte de la morphologie de cette langue. Ainsi, « schaftbesonders » ne contiendra vraisemblablement aucun facteur interdit de l’allemand mais plusieurs du français. On peut donc se faire une bonne idée de la langue d’un texte en mesurant le nombre de facteurs interdits obtenus pour chacune des langues que l’on souhaite tester. L’avantage principal de cette méthode est qu’il n’y a pas besoin de connaître une langue pour la traiter, il suffit d’en avoir un échantillon suffisamment représentatif. La méthode effectue un scoring par anti-dictionnaire pour savoir si un mot est interdit dans telle ou telle autre langue, cependant on ne développera pas plus l'algorithme dans cet article car il est en périphérie de l'extraction de mots-clés, tout est expliqué dans le rapport de projet d'informatique linguistique de M1 [6] [7].

En ce qui concerne l'évaluation, nous avons pris comme corpus de test, 300 documents dont 100 documents de chaque langue suivante, Anglais, Espagnol et Francais. Les résultats nous donnent la table suivant :

langue des documents % docs dont la langue est détectée correctement

Anglais 94

Espagnol 92

Francais 99

Les mauvaises détections proviennent de pages web telles que Youtube ou le texte est très court et malheureusement l'algorithme n'est pas optimisé pour ce cas.

2.4 Extraction des mots-clés

Après avoir obtenu le texte pertinent puis la langue du document automatiquement, nous devons transformer celui-ci en une représentation utilisable pour les traitements futurs, en l'occurrence la classification. Le principe de l'algorithme d'extraction de mots-clés est montré dans la Fig.1, découpé en quatre étapes appliquées itérativement (Fig. 2,3,4) pour obtenir les mots-clés finaux. Dans notre étude, les documents sont représentés par le très populaire modèle d'espace vectoriel introduit par Salton [8]. Dans ce modèle, chaque document est représenté par un vecteur d. Chaque dimension du vecteur équivaut à un mot distinct des autres dans l'espace des mots de tous les documents du corpus. La composante associée à un mot correspond à son poids dans le document.

Plus formellement, on peut les représenter ainsi :

d =((w1,p1), (w2,p2),..., (wn,pn)) i

,

jtel que i

j et wi

wj

où (wi,pi)est un couple dont wi est un mot avec pi son poids associé.

(7)

2.4.1 filtrage par TF*IDF (Fig.2)

Pour effectuer une comparaison et obtenir un classement des mots d'un document selon leur importance dans ce document, il faut pouvoir extraire des informations et des propriétés sur ces mots. La première propriété est la fréquence qui est le nombre de fois qu'un mot apparaît dans le texte. On peut se dire que le mot « communication » et « capteur » seront plus fréquents dans un article scientifique qui a pour thème « les réseaux ». Mais cela conduit à d'autres problèmes. Prenons le cas des prépositions « à », « de », « par » ... Elles apparaissent plus que d'autres mots dans le texte (et donc plus que les possibles mots-clés) et pourtant elles n'ont aucune valeur en tant que mots-clés. Un mot-clé n'est donc pas seulement un mot qui apparaît beaucoup dans un seul document, il faut aussi qu'il soit spécifique au document, il ne doit pas être dispersé dans la plupart des autres documents du corpus.

En combinant ces deux propriétés, on obtient la valeur statistique de scoring TF*IDF (Term Frequency * Inverted Document Frequency) :

w

i

=tf

i

∗log  n n

i

ou

tf

iest la fréquence du terme i dans le document d,

n

le nombre total de documents dans le corpus etnile nombre total de documents où le mot i est présent.

Plus un mot est présent dans beaucoup de documents plus le score sera faible, et au contraire plus il est spécifique à un texte particulier plus il est élevé.

D'autres valeurs de mesure de poids existent telles que le poids booléen ou la distance euclidienne mais TF*IDF semble le plus adéquat dans les algorithmes d'extraction de mots-clés comme le montre l'étude faite par Salton [9] .

En application, cette étape consiste en premier lieu à charger un corpus de quelques centaines de documents divers puis calculer la valeur IDF de chaque mot de ce corpus. Cette étape est effectuée une seule fois au début de l'algorithme pour tous les documents futurs à traiter.

Ensuite pour chaque terme du vecteur du document, dont on veut extraire les mots-clés, on extrait la valeur TF de ce terme dans le document. Puis on calcule la valeur TF*IDF de ce terme en extrayant la valeur IDF du terme issu du corpus. On fixe manuellement un palier minimum pour la valeur TF*IDF. Si la cette valeur pour un terme donné du vecteur du document est inférieur à ce palier alors il sera supprimé du vecteur, car on peut considérer qu'il n'est pas assez pertinent pour ce document. Le vecteur du document formé est donc un vecteur restreint contenant des mots spécifiques au document.

2.4.2 – filtrage linguistique (Fig.3)

Après ce premier filtrage, nous possédons un vecteur du texte ne contenant que les mots les plus spécifiques et les plus présents dans le document. Cependant le vecteur reste dans la plupart des cas de trop grande taille, les noms se mélangeant avec les verbes ainsi que certains connecteurs qui n'ont pas été supprimés correctement. On va donc émettre une nouvelle propriété, celle-ci linguistique contrairement à TF*IDF uniquement statistique. Les verbes, les adjectifs, les adverbes et les catégories grammaticales en dehors des noms n'apportent que rarement d'informations élémentaires sur le sujet principal du document. Par exemple les mots « jaunes » et

« manger » sont trop généraux pour identifier un sujet particulier, alors que les noms

« constitution » ou « réforme » ont un meilleur poids sémantique.

Un deuxième filtrage est donc appliquée au vecteur représentatif du document. Puisque celui-ci Algorithm filter_tfidf(vector: D,tfidf: T,thres hold: X )

begin

for each pair (t,v) Є D do begin

p = compute T(t) if p < X then begin

D = D – {(t,v)}

#term v is not pertinent so removed from vector;

end end return D end

Fig.2 filtering by tf*idf

(8)

est linguistique, il faut pouvoir identifier correctement les catégories grammaticales des différents termes du vecteur. En application, un logiciel nommé Tree-Tagger [11] prend un texte en entrée et assigne pour chaque terme du texte, une catégorie possible, avec un taux affiché moyen de 96% de réussite [10]. Ceci par l'utilisation d'un système probabiliste par l'intermédiaire d'arbres binaires de décisions. Les seules catégories qui ne doivent pas être filtrées sont les Noms, les Noms Propres ainsi que Unknown, une catégorie non grammaticale lorsque Tree-Tagger ne trouve pas une catégorie pour un certain terme, celui-ci étant souvent soit un nom propre soit un nom non détecté.

Cependant, des noms reviennent de temps en temps sur les pages web, tels que les repères temporels « jeudi », « septembre », ainsi que des noms plus spécifiques comme « forum » ou

« commentaire » voir certains noms propres

« Windows », « Linux ». Après ces deux étapes de filtrage, il se peut qu'il en reste quelques uns. On les supprime en utilisant une liste de mots créée à la main. Chacun de ces mots est considéré comme du bruit

2.4.3 – noms composés

Jusqu'à maintenant, nous avons étudiés uniquement le cas des mots simples, un seul et unique mot par terme. Mais une autre catégorie de noms est très importante dans la compréhension d'un document. Les noms composés (autant noms propres composés que noms communs composés) apportent une précision inégalée, « réforme institutionnelle » est plus fort que « réforme » et « institution » séparés. Ils sont composés d'un nom et d'au moins un autre mot d'une catégorie grammaticale différente (rarement un nom), souvent des adjectifs. « réforme institutionnelle » est composée du nom « réforme » ainsi que de l'adjectif

« institutionnelle ». Dans ce but, nous allons les extraire automatiquement indépendamment des noms simples, à l'aide du logiciel Unitex [12].

Un graphe a été construit contenant les formes les plus usuelles de noms communs composés.

Il fonctionne de la manière suivante: un texte arrive en entrée, les mots de ce texte sont étiquetés automatiquement, par consultation de dictionnaires, et une catégorie grammaticale est attribuée. Ensuite si ce texte contient des formes dont les étiquettes sont citées ci-dessous alors ils seront reconnus lors de l'application du graphe.

N+NA = Nom + Adjectif

réforme institutionnelle

N+AN = Adjectif + Nom

arrière-pensée

N+NDN = Nom + Déterminant + Nom

bout du monde

N+NN = Nom + Nom

bateau-pilote

N+XN = Nom + Inconnu

bank-notes

En prenant le bout de texte « Paul a une arrière-pensée », « Paul » est un nom propre (étiquette NP), « a » est un verbe (étiquette V), « une » un déterminant (étiquette DET) et

« arrière-pensée » un nom commun composé d'un nom et d'un adjectif le précédant (étiquette N+AN). La sortie de ce graphe sera donc « arrière-pensée » car il correspond à une des formes voulues. Ces formes ont été obtenues en prenant un texte de très grande taille (« Tour du

Algorithm filter_linguistic(vector: D, lang: L) begin

categories = [nouns ,proper_nouns ,unknown]

#Semantic categories of words that we would like to keep;

s top_lis t = {Ni....Nn}

#list of words that are not pertinent;

for each pair (t,v) Є D do begin

Compute tree-tagger us ing L and extract grammatical categorie cat of term t;

if catnot in categories or v Є s top_lis t then begin

D = D - {(t,v)}

end end return D end

Fig.3 semantic filtering

(9)

monde en 80 jours » pour le français par exemple) et en repérant les formes les plus fréquemment présentes.

Ce graphe est passé en entrée à Unitex et les mots composés qu'il a repérés sont extraits.

Les noms propres composés, non concernés par ce graphe, sont extraits par l'application d'un graphe reconnaissant les séquences de mots commençant par une majuscule. Aucun autre traitement n'est opéré sur les noms propres composés, ainsi que sur les noms propres simples1. Excepté si l'on a un dictionnaire qui référence tous les noms propres liés à un sujet particulier, alors seulement on peut les filtrer et encore ce n'est pas forcément très pertinent et très précis.

Les noms communs composés sont en général composés de noms simples extraits par la méthode des filtrages successifs. « carte bancaire » contient le nom « carte » et l'adjectif

« bancaire », il est peut-être lié au mot-clé « carte » ou n'a aucun rapport avec celui-ci si

« carte » provient de « carte jeune ». Cependant la taille du texte d'un article de presse par exemple n'est pas très long, on peut donc s'attendre à ce que les mots simples extraits correspondent à un des noms composés. Une astuce a donc été de faire remonter artificiellement la pertinence des noms composés en additionnant à sa valeur TF*IDF, les valeurs TF*IDF des noms simples qui le compose,

Pour un nom composé Nc donné :

valueNc

=

TFIDFNc

 ∑

TFIDF

Ni

avec i de 1 à n, et Ni les noms simples.

2.4.4 – extraction des mots-clés (Fig.4)

A cette étape, le vecteur original du texte a subi deux filtrages importants, le premier statistique avec TF*IDF et le deuxième deuxième linguistique avec Tree-Tagger. Il est donc très amoindri mais un mot-clé par définition est un mot qui joue un rôle plus important qu'un autre dans un texte. Il faut donc pouvoir les classer entre eux selon leur importance.

Après les différents filtrage, il nous paraît envisageable que l'importance d'un mot soit mesurée par sa fréquence. Si « carte » apparaît significativement plus de fois que

« réforme » dans un texte, « carte » est sûrement beaucoup plus pertinent que

« réforme ». Pour le filtrage final, on fixe manuellement un palier minimum de fréquence au dessus duquel les mots sont filtrés. Cependant un problème survient avec la taille des documents. Par exemple si le mot

« carte », présent dans le vecteur de mots-clés, apparaît quatre fois dans un texte de 500 mots, on peut considérer qu'il appartient à la périphérie du sujet principal mais qu'il n'est en aucun cas pertinent en tant que mot-clé. En revanche si ce mot apparaît quatre fois dans un texte de 30 mots alors dans ce cas, on peut le considérer comme mot-clé. La palier sera donc variable en fonction de la taille du document en entrée. Plus cette taille augmente plus le palier sera grand.

La phase finale de l'algorithme consiste à faire l'union du vecteur du texte après les différents filtrages et du vecteur de noms composés et de les afficher dans l'ordre de leur fréquence.

2.4.5 – extraction d'un résumé (Fig.5)

Il existe deux approches de résumé. Le premier type de résumé consiste en un assemblage des phrases les plus importantes du texte alors que le deuxième est une reconstruction totale du texte résumant le document concerné. La deuxième approche utilise beaucoup plus de

1 Les noms propres simples sont extraits par l'étiquettage de tree-tagger

Algorithm extract_keys(keys : D, vector: D', coumpounds : C, nofkeys : n, thres hold: X)

begin D = D U C

for each pair(t,v) Є D do begin

if D'[t] < X*s ize(D') then begin

#frequency of v is not big enough so removed from final vector of key words;

D = D - {(t,v)}

end end

res = Sort key words by term frequencies from D us ing D' and extract the n firs t of its ;

return res end

Fig.4 extract final keys

(10)

linguistique que la première. Cette dernière étant la plus simple à implémenter, c'est donc cette solution que nous détaillerons dans ce papier. Notre hypothèse est qu'une phrase clé est une phrase contenant plus de mots-clés qu'une autre phrase d'un document source. Un algorithme similaire est utilisé par Andrew Goldberg dans son système [14]. On va donc se servir des mots-clés extraits automatiquement et ajouter à chaque phrase du texte le poids correspondant à chaque mot-clé présent dans celle-ci, le poids étant la fréquence du mot dans le texte original. Les phrases les plus longues sont donc avantagées par cette propriété.

En pratique, il faut tout d'abord effectuer le découpage en phrase du document, une tâche très peu aisée. Unitex, précédemment cité,

permet un découpage très fin. Puis il faut calculer le poids de chaque phrase. Par exemple, si on possède une phrase « Paul a mangé une pomme » et que Paul a un poids de 10 et pomme un poids de 5 alors le score de la phrase est de 5+10=15. Au final il ne faut garder qu'un certain nombre de phrases pour considérer que c'est un résumé, cinq phrases étant amplement suffisant dans la plupart des documents web, ces phrases étant celles qui ont le plus grand score.

2.5 Évaluation du système 2.5.1 Approche

Plusieurs approches basiques sont possibles dans l'évaluation automatique d'un système d'extraction de mots-clés [15]. La première est le très populaire système métrique de Rappel et Précision

qui reflète les mots-clés qui sont considérés comme bons car faisant parti des mots-clés de l'auteur, qui lui les a extraits manuellement. Le Rappel est défini par le nombre de mots-clés extraits automatiquement retrouvés dans la liste manuelle sur le nombre de mots-clés total de la liste manuelle. Plus ce taux est élevé plus l'adéquation entre la liste automatique et la liste humaine est importante. Quant à la Précision, c'est le nombre de mots-clés extraits automatiquement retrouvés dans la liste manuelle sur le nombre de mots-clés total de la liste crée automatiquement. Plus ce taux est élevé, moins la liste automatique produit de bruit et donc de mots-clés peu pertinents rapport à la liste manuelle. Cette approche a été utilisé pour Kea [2]. Cependant de nombreux problèmes existent pour cette méthode basée sur les mots- clés des auteurs. Quatre ont été identifiées par Barker et Cornacchia [16] : Tout d'abord les mots-clés des auteurs n'apparaissent pas forcément dans le texte original, ensuite ils peuvent avoir mis des mots-clés qui gonflent artificiellement le nombre de catégories auxquelles peut appartenir le document sur le web, c'est à dire qu'on peut obtenir le document en sortie d'une recherche sur le web avec un mot-clé peu pertinent donné par l'auteur. Troisièmement les auteurs donnent en général peu de mots-clés contrairement au nombre de mots-clés extraits automatiquement et enfin les mots-clés sont parfois inexistants, n'apparaissant que dans certaines catégories de documents, scientifiques pour la plupart.

La deuxième approche est une sorte d'évaluation à échelle humaine introduite par Steve Jones [15], on récupère les évaluations d'un panel de lecteurs humain sur les mots-clés extraits.

Chaque personne reçoit un document et une liste de mots-clés extraits automatiquement par le programme et on leur demande d'effectuer un jugement quant à la pertinence de ces mots par rapport au document associé.

C'est cette approche que nous avons choisie pour l'évaluation. Cependant, à cause du coût humain qu'elle nécessite, on se contentera d'avis d'au maximum 3 personnes. Le corpus de test est composé de 20 documents sur le thème catastrophe, chacun étant associé à une liste de 25 mots-clés extraits automatiquement. L'évaluation d'un mot-clé est basée sur une échelle de 1 à 10 croissante en fonction de l'importance du mot par rapport au texte. Plus le mot est

Algorithm extract_summary(vector: D, text: T) begin

s entences = Extract dis tinct Sentences from text by us ing Unitex module;

for each term (t,v) Є D do begin

for s Є s entences do begin

#Find all term in key words vector that is in sentences;

if t Є s then begin

s entences [s ] += v

#term v is in sentence, add frequency of v to current sentence's weight;

end end end

Sort s entences by weight;

return the firs t five s entences end

Fig.5 extract summary

(11)

important mieux il sera noté.

Un point important de cette approche est qu'elle ne calcule que la précision de l'algorithme, le rappel correspondrait à demander au panel humain d'extraire les mots-clés qui ne serait pas dans la liste faîte automatiquement et qu'ils jugeraient pertinents. Le rappel ne sera cependant pas étudié dans ce rapport.

2.5.2 résultats

Nous avons mesuré la similarité inter-humain de l'évaluation des mots-clés, c'est à dire que si tous les évaluateurs ont donné, à un degré d'erreur près, les mêmes notes aux différents mots- clés alors on peut dire que l'évaluation n'est pas dû au hasard mais à la qualité de l'extraction.

Pour ceci nous utilisons une valeur statistique de score, le coefficient Kappa K [17]. Ce coefficient peut s'interpréter comme la proportion d'accord (d'évaluations concordantes) entre deux évaluateurs à propos des mots-clés. Le calcul de ce coefficient passe par une matrice dont la première ligne représente les notes attribuées aux mots-clés par le premier évaluateur et la première colonne celles du deuxième évaluateur. Les notes entre les deux évaluateurs sont indépendantes, c'est à dire que les mots-clés issus de ces notes n'ont pas d'incidences sur la matrice.

Le coefficient est de la forme :

Avec Po la proportion d'accord observée et Pe la proportion aléatoire ou concordance attendue sous l'hypothèse d'indépendance des jugements. Plus ce coefficient se rapproche de 1, plus les évaluateurs sont en accord avec la valeur des mots-clés, en revanche s'il se rapproche de 0, on peut s'attendre soit à du pur hasard, et donc que les mots-clés n'ont pas été jugés selon leur pertinence. Prenons un exemple, trois mots-clés ont été évalués par deux jurys humains, les notes suivantes sont tombées (sur une échelle de note de 0 à 2) :

Mot-clé\jury note

jury 1 note jury 2

Mot-clé 1 1 1

Mot-clé 2 2 0

Mot-clé 3 2 2

Table1 : notes des jurys

Notes jury1

Notes 0 1 2 Total

Notes jury2

0 0 0 1 1

1 0 1 0 1

2 0 0 1 1

Total 0 1 2 3

Table2 : matrice obtenu à partir des notes

La Table1 montre que les deux jurys sont en accord au niveau des notes sur 2 mots-clés et en désaccord sur 1 mot-clé. On obtient donc à partir de la Table2 :

Po=11/3≃0.67 et

P

e

= 1 ∗ 0  1 ∗ 1  1 ∗ 2 / 3

2

≃ 0.33

.

Le coefficient Kappa est donc :

K = P

o

P

e

/ 1 − P

e

= 0.67 − 0.33 / 1 − 0.33 ≃ 0.50

, l'accord est plutôt modéré.

K = Po− Pe

1 −Pe

(12)

La Table3 illustre les résultats obtenus par l'application de ce score pour notre algorithme, trois niveaux de précision ont été considérés. Tout d'abord, les classes sont les 11 valeurs de l'échelle de pertinence, ensuite ces valeurs ont été transformées sous forme de trois classes représentées par des paliers 0-3, 4-6, 7-10, simulant le mauvais, moyen, bon, niveau de la pertinence. Et enfin sur le même principe, les 11 valeurs de départ ont été regroupées dans deux classes mauvais et bon, représentées par les paliers de notes 0-5, 6-10.

Document/Nombre de classes 11 3 2

1 0.15 0.31 0.60

2 0.04 0.18 0.35

3 0.07 0.21 0.38

4 0.11 0.23 0.41

5 0.04 0.18 0.35

6 0.18 0.40 0.62

... ... ... ...

Moyenne 0.10 0.23 0.42

Table3 : Kappa Coefficient

Comme prévu, le niveau d'accord entre les différents évaluateurs augmente lorsque l'on baisse le nombre de catégories de notes. Bien que les valeurs de K soient relativement basses, on peut se dire que les jurys humains n'ont pas tous la même vision sur les mots-clés et qu'on se rapproche plus du hasard lors des résultats. Cependant, on trouve de meilleurs résultats que ceux montrés par un autre algorithme d'extraction de mots-clés Extractor crée par Barker et Cornacchia[16]. Ces derniers évoquent le fait que « en moyenne, les juges ne sont d'accord que sur ce qui peut être donner par la chance », or on voit bien que nos résultats contredisent cette propriété.

La Table4 montre les notes moyennes de chaque type de mots extraits automatiquement, noms, noms communs composés et noms propres et une valeur moyenne des trois types.

Type mots testés Noms simples Noms propres Noms communs

composés Note moyenne Note moyenne

(échelle 0 à 10) 5.1 7.2 6.4 6.2

On peut observer que les noms communs composés et les noms propres forment une moyenne de 6.8. Ils sont donc jugés pertinents pas les différents évaluateurs. En revanche les noms communs simples ont une note moyenne juste au dessus de 5. Ils sont donc jugés moyennement pertinents par les évaluateurs. Une amélioration est à prévoir à ce niveau.

En général, on peut donc considérer que le vecteur de mots-clés est peu bruité par des mots non pertinents.

(13)

3- Classification de documents

2.1 Introduction

Dans cette partie nous étudierons un algorithme de classification et de regroupement de documents web. Nous devons regrouper des documents web dans des classes distinctes.

Chaque classe doit représenter un sujet unique, non défini à l'avance. De plus les classes doivent être en évolution permanente car l'actualité déverse de nouveaux sujets tous les jours.

Tout d'abord, différencions deux termes: le regroupement ou clustering en anglais tente de regrouper au mieux les documents entre eux pour obtenir en sortie des classes distinctes, c'est un problème dit de classification non supervisée. En revanche la classification, categorization, tente de classer, à partir d'un ensemble de classes existantes, un document dans une catégorie, c'est un problème dit de classification supervisée.

Une classe doit coller au mieux avec un fait bien précis de l'actualité. On ne veut pas de classes qui définissent une thématique trop large. Si deux articles parlent de meurtre mais qu'il ne s'agit pas du même meurtre alors on veut obtenir deux classes bien distinctes.

Le principe de l'algorithme est montré dans la Fig.1, les étapes successives pour arriver aux classes finales sont détaillées par les Fig.2,3 et 4.

2.2 Etat de l'art

Plusieurs approches sont possibles pour aborder le problème. D'une part en utilisant uniquement le regroupement, donc le clustering, chaque document, ou groupe de documents, qui arrive implique de reconsidérer toutes les catégories crées précédemment. De très nombreux algorithmes existent sur ce sujet avec de nombreuses innovations tels K-means utilisé dans de nombreux domaines, autant pour la linguistique en [18] que pour l'imagerie en [19] et bien d'autres encore. Il est très sensible aux paramètres donnés en entrée, chaque lancement de l'algorithme entraîne des catégories finales non semblables. Nous verrons pourquoi nous avions envisager cette approche en premier lieu et pourquoi nous n'utiliserons pas cet algorithme. Ensuite une autre approche consiste à partir de catégories déjà crées, l'article d'Aggarwal [1] est un bon exemple de ce qui se fait actuellement dans cette direction.

Il part de classes extraites de la taxonomie originale de Yahoo et tente de les affiner au maximum. Cependant comme précédemment il ne permet pas de faire évoluer la classification au cours du temps à faible coût. Quelques bonnes idées sont reprises dans notre algorithme tel le principe de regrouper des classes trop proches entre elles (« merge ») ou encore un coefficient permettant la différenciation de deux classes au niveau de la représentation, le gini- index. Une dernière approche consiste à utiliser successivement, regroupement puis classification. Deux principaux algorithmes sont basés sur ce principe toutes deux issues des campagnes TDT, Topic Detection and Tracking [22]. Le premier [20] réutilise l'algorithme k- means en ajoutant des améliorations grâce à l'utilisation de mesure de similarité et de co- occurrence et ayant une complexité bien meilleure, le deuxième [21] quant à lui applique TF*IDF et lui aussi des mesures de similarité. Ces deux articles décrivent des algorithmes incrémentaux. Ce type d'algorithme est à la base de notre travail. Chaque document qui arrive est assigné à une nouvelle classe et ce de façon itérative pour le reste des documents à classer. Enfin d'autres expérimentations sont en cours faisant appel à des modèles temporels ou de la détection de rupture dans les dépêches mais cela reste très théorique et ne sera pas abordé ici.

2.3 Projection d'une classe

Par définition, une classe de documents dans l'espace vectoriel est un ensemble de documents sous forme de vecteurs de mots, ces vecteurs étant les vecteurs de mots-clés extraits de chaque document par le procédé de la première partie. Une classe est représentée par un barycentre, qui est définit par la concaténation des vecteurs de celle-ci. Ce barycentre est un vecteur qui est la moyenne des documents de la classe.

(14)

Il est caractérisé par les k vecteurs normalisés1 mj de la classe i :

B

i

= ∑

1jk

m

i , j

/ k

pour 1

i

n avec n le nombre de classes total.

On va définir un centroïde d'une classe comme un barycentre dont les dimensions sont les mots de l'ensemble des documents, et chaque composante de ce vecteur est le poids du mot associée (la fréquence normalisée moyenne).

Cependant on peut remarquer que la taille d'un tel vecteur peut être conséquente en terme de longueur si le nombre de vecteurs est important ou que la taille de ceux-ci sont grands, il faut donc pouvoir restreindre au maximum le centroïde en supprimant les mots qui ne sont pas représentatifs de la classe, c'est à dire le bruit contenu dans chaque classe.

Par exemple, prenons deux classes du grand thème voyage, l'une ayant pour sujet « vacances en Égypte » et l'autre « voyage en France ». Ces deux classes ont probablement beaucoup de mots en commun, tels que « vacances », « voyages », « hôtels » etc... Mais des mots comme

« Égypte », spécifique à la première et « France » spécifique à la deuxième ne le sont sûrement pas. Il faut donc pouvoir les extraire en tant que « mot-clé » de la classe en quelque sorte, et pouvoir projeter en dehors les mots en commun.

Ce principe déjà expérimenté pour l'extraction de mots-clés avec TF*IDF, est ici appliqué grâce à un nombre appelé le gini-index normalisé introduit par Aggarwal[1], celui-ci calculant l'importance d'un mot pour une classe donnée.

Prenons K classes

C

1

,C

2

, C

3

, ... ,C

K, avec

f

j,1

, f

j,2

,f

j,3

, ... ,f

j , Kle nombre d'occurrence de chaque mot j dans les K classes, et

n

1

... n

Kle nombre total de mot pour l'ensemble des documents des K classes. Ainsi, le nombre d'occurrence moyen d'un mot j dans une classe particulière i est donné par

f

j , i

/ n

i.

On définit la formule

p

j ,i pour un mot j dans une classe i par :

p

j ,i

= f

j ,i

/ n

i

f

j ,i

/n

i

avec 1

i

k

Si le mot est considéré comme du bruit, donc présent dans beaucoup de classes, alors

p

j ,i

sera proche de

1 /K

pour toutes les classes. Le gini-index normalisé d'un mot j avec les fonctions

p

j,1

... p

j , Kest donné par :

1−  p

2j ,i avec 1

i

k

Si le mot est distribué dans beaucoup de classes alors le gini-index sera proche de

1−1 /  K

,

c'est la valeur maximum possible. Et au contraire, si le mot est spécifique à une classe il sera proche de 0.

On va donc représenter chaque classe par un centroïde restreint par la méthode du gini-index.

La projection du vecteur est effectuée par le filtrage des mots du vecteur de la classe. Si le gini-index d'un mot est supérieur à un certain palier fixé manuellement (à 0.60 dans le programme) alors on met à 0 la composante de ce mot dans le vecteur.

Par exemple prenons

v

={(Paul,5),(pomme,2),(poisson,3)}, vecteur d'une classe quelconque de l'ensemble, si le gini-index de Paul et poisson est inférieur au palier et que au contraire le mot pomme dépasse ce seuil alors le centroïde restreint de la classe sera :

c

= {(« Paul »,5),(« poisson »,3)}

2.3 Première approche : K-Means

K-means est un des algorithmes les plus utilisés dans la classification de documents non supervisée, de par sa rapidité et sa robustesse. Les étapes de l'algorithme sont les suivantes, on dispose en entrée de n documents à classer, ces documents sont sous la forme de vecteurs

1 Un vecteur normalisé est un vecteur dont la norme est égale à 1,

∥ v∥=1

(15)

de mots, et donc pour réutiliser le principe du chapitre précédent, de vecteur de mots-clés.

Ensuite il faut fixer manuellement un entier k indiquant le nombre de classes voulues en sortie de l'algorithme. L'algorithme commence par choisir au hasard les k documents qui feront office de centroïde initiaux des k classes. Puis chaque document restant est comparé avec chaque classe (avec son centroïde) pour trouver la meilleure auquel l'ajouter, c'est ce qu'on appelle la similarité entre deux vecteurs. Plusieurs techniques existent [23], celles de base comme le cosinus, le chi-deux très proche de la distance euclidienne ou encore des similarité plus poussées, pour notre cas le cosinus normalisé sera la solution la plus aisée à mettre en oeuvre.

Le cosinus entre deux vecteurs est définie par :

cos u , v = u⋅ v

∥ u∥⋅∥v∥ =  ∑ f u

i

⋅ f v

i



  f u

i

2

⋅ f v

i

2



avec 1

i

n,

u

i la ieme composante du vecteur u,

v

i la ieme composante du vecteur v et n la dimension des vecteurs.

Les deux vecteurs sont normalisés avant l'opération de cosinus pour avoir des valeurs de fréquences de mots entre 0 et 1.

Après l'affectation de tous les documents, on recalcule les centroïdes pour les nouvelles classes et on réitère l'algorithme avec tous les documents en entrée tant que des classes sont modifiées après chaque itération et que le système n'est pas stable.

L'exemple ci-dessous montre au travers de 4 schémas la création de classes à partir de 6 documents divers. Le premier graphique Fig.1 représente les documents avant le début de l'algorithme reparti selon leur position dans l'espace vectoriel (simplifié à deux dimensions). Le deuxième graphique Fig.2 montre l'affectation des documents en tant que centroïdes des K classes (ici K=2). Enfin la Fig.3 montre l'affectation du reste des documents aux classes par l'application du cosinus et la Fig.4 affiche le recalcule du centroïde ayant changé pour chaque classe et la réaffectation des documents par rapport a ceux-ci (ici aucun documents ne change de classe).

Fig.1 initial documents Fig.2 centroïdes affectation Fig.3 documents affectation Fig.4 centroïdes calcul

Cependant cet algorithme souffre de quelques défauts, on peut d'abord remarquer qu'il faut choisir soi même le nombre de classes, le nombre k, que l'on veut obtenir alors que initialement on ne connaît pas le nombre de sujets distincts des documents arrivant en entrée.

Une valeur de k trop grande nous donnant trop de classes et une valeur trop faible rendrait l'interprétation difficile. De plus pour une valeur de k donnée, on peut obtenir sensiblement des classes différentes par la configuration initiale des centroïdes. Ensuite l'algorithme n'est pas incrémental, ce qui veut dire qu'à chaque groupe de texte en entrée, il faut recalculer tout ce qui a été fait précédemment, ce qui n'est évidemment pas une bonne solution si on possède 100000 documents à classer arrivant au cours du temps. Cet algorithme n'est donc pas adapté pour le classement de documents provenant de l'actualité dans le but recherché. C'est pour cela qu'une autre approche a été envisagée.

2.4 Algorithme incrémental

Nous allons d'abord effectuer la classification d'un nouveau document en entrée, en ayant effectuer l'extraction de mots-clés au préalable, dans l'ensemble des classes existantes (ou non existantes), puis effectuer des modifications au niveau des classes par des regroupements de classes ou des séparations de classes et enfin la dernière étape consistera à projeter une

(16)

représentation visuelle de chaque classe pour l'étude par l'humain.

2.4.1 Classification d'un document (Fig.2,3) La première étape consiste à récupérer des liens de page html contenant l'actualité sur le thème recherché. Les flux RSS sont une bonne solution pour la diffusion d'un tel contenu.

D'une part, ils sont écrits en XML, donc normés, d'autre part il est aisé d'extraire toutes les informations d'une façon automatique, et enfin ils sont mis à jour automatiquement, comme l'est l'actualité. Nous allons donc privilégier ce type d'outil. En considérant que l'on possède les différents liens, il faut maintenant extraire pour chaque lien, le vecteur de mots-clés associé (voir 2-Extraction de mots-clés).

Ensuite la deuxième phase correspond à trouver la meilleure classe pour ce document.

On effectue donc la similarité, le cosinus utilisé dans l'algorithme du K-means, entre le document et les centroïdes projetés grâce au gini-index de chaque classe. Si le cosinus est supérieur à un certain palier fixé à la main alors on garde cette classe comme candidate à la classification.

Trois cas se présentent à la fin de l'itération : 1. aucune classes n'est candidate, cela veut

dire que le sujet du document ne correspond pas aux sujets des autres classes. Le document forme à lui seul une nouvelle catégorie que l'on insère à l'ensemble des classes existantes.

2. une seule classe est candidate, on insère le document dans l'ensemble des vecteurs de la classe et on recalcule le centroïde correspondant. Les autres

classes ne subissent aucun

changements.

3. deux classes ou plus sont candidates, c'est à dire que le document peut être inséré dans plusieurs classes car similaire avec elles. Il faut donc faire un choix quant à la classe réceptrice, un document ne peut exister que dans une seule classe dans l'ensemble des classes du thème. On réduira le problème à deux catégories, les deux meilleurs classes possibles, celles qui ont la meilleure valeur de similarité, car on verra dans le deuxième point que si beaucoup de classes sont candidates un phénomène problématique survient avec des classes trop proches. Par exemple, prenons deux classes candidates: Sarkozy en vacances et Sarkozy et les réformes, et que le document courant est au sujet de Sarkozy alors on peut déduire qu'il contiendra des mots des deux classes. Pour régler le problème, on doit filtrer les mots communs à ces classes pour effectuer le cosinus, une comparaison du document avec des centroïdes restreints. L'opération est une soustraction de centroïdes pour chaque classe: Prenons

S

1et

S

2, les centroïdes des deux classes candidates, le vecteur

S

1

S

2est obtenu en mettant les poids des mots communs à

S

1

et

S

2à 0.

On définit la propriété suivante, qui dit que

S

1domine

S

2sous ces conditions : Algorithm assignVector(vector: D,clus ters : C)

begin

candidates = Ø

for each clus ter c Є C do begin

Extract S, centroïd of clus ter c by us ing the gini-index filter;

v = cosine(S,D)

#Calculate the cosine of d to seed S;

if v > thres hold then begin

#Add cluster to possible candidates;

candidates = candidates + {c}

end end

#Compute search of best cluster Bc across candidates (i.e. Fig.3).

Bc = bes tClus ter(D,candidates ) Bc = Bc + {D}

return Bc end

Fig.2 Classify one document

Algorithm Clustering(urls) begin

clusters = loadClusters() for each url Є urls do begin

vect = keysExtraction(url)

cluster =assignVector(vect,clusters) cluster = mergeClusters(cluster,clusters) clusters = sepClusters(cluster,clusters) end

end

Fig.1 Iterative Clustering Algorithm

(17)

la similarité de

S

1 au document T est plus grande que la similarité de

S

2à ce même document d'au moins un certain palier fixé à la main.

la similarité de

S

1à T n'est pas plus grande que la similarité de

S

2à T car inférieure au palier, mais la similarité de

S

1

S

2à T est plus grande que la similarité de

S

2

−S

1à T.

On récupère une classe en sortie et on revient au point n°2 pour l'insertion du nouveau document. Cette propriété nous assure que le document sera classé dans la catégorie la plus proche possible, malgré la présence de plusieurs candidats.

Ce principe est issu de l'article de Aggarwal [1], excepté que lui généralise le problème sur plus de deux classes en utilisant une matrice.

2.4.2 Regroupement de classes (Fig.4)

Lorsque l'on insère un nouveau document dans une classe existante, on modifie le centroïde de celui-ci comme vu précédemment. Il se peut que la classe modifiée soit devenue proche d'une autre classe de l'ensemble, alors il n'y a plus d'intérêt à les garder séparées, il faut les regrouper dans une nouvelle classe, comme l'énonce Aggarwal [1]. Par exemple si deux classes parlent de « l'explosion d'une centrale nucléaire en Ukraine », on doit pouvoir les regrouper. Pour savoir si deux classes sont proches l'une de l'autre, il suffit d'effectuer le cosinus entre les deux centroïdes respectifs, si il dépasse un certain palier fixé à la main, assez grand pour ne pas obtenir un effet de regroupement massif, alors les deux classes sont regroupées en une seule. Le centroïde est recalculé en faisant l'union des documents les composant. De plus, l'algorithme est récursif, c'est à dire que la nouvelle classe créée est elle- même comparée au reste des classes de l'ensemble. Tout ceci dans un but de ne pas obtenir un trop grand nombre de classes et de rester toujours très précis dans le sujet de ces classes.

2.4.3 Séparation de classes (Fig.5)

Un autre phénomène peut surgir lors de l'insertion d'un nouveau document dans une classe ou après un regroupement de plusieurs classes. La qualité d'une classe dépend principalement de la cohérence des documents qui la compose, or lorsque celle ci diminue, on peut remettre en question la pertinence de cette classe dans l'ensemble des catégories. Pour calculer cette pertinence, la valeur intra-classe est la plus adaptée, elle mesure en moyenne la qualité d'un regroupement en comparant les documents deux à deux grâce au cosinus. Prenons une classe C, avec

d

1

, d

2

, d

3

,... , d

nles documents la

composant, la valeur intra-classe de cette classe est définie ainsi : Algorithm bestCluster(vector: D,clus ters : C)

begin

#C={S1,S2} two best clusters which has best similarity(cosine) to vector D;

if s ize(C) == 1 then

#S1 is the only candidate;

return S1

else if cosine(S1,D) > cosine(S2,D)+thres hold then

#Cosine of S1 to D is best than cosine of S2 to D plus a threshold value;

return S1

else if cos (S2,D) > cos (S1,D)+thres hold then

#Same as last case but with S2;

return S2 else

v1 = cosine(D,S1-S2) v2 = cosine(D,S2-S1) if v1 > v2 then return S1 return S2 end

Fig.3 Extract best cluster for document

Algorithm mergeClusters(clus ter: C, clus ters : Cs ) begin

for each clus ter c Є Cs do begin

#Compute cosine measure of centroïde of C to c;

if cosine(C,c) > thres hold then begin

#Create new cluster which is the union between the two old clusters;

C = {dc1...dcn} U {dC1...dCn}

#Where dci is vectors in cluster c and dCi are vectors from cluster C;

Cs = Cs + {C}

end end return Cs end

Fig.4 Merge of clusters

Références

Documents relatifs

C’est dans ce but que l’on s’int´eresse aux cartes auto-organisatrices de Kohonen qui sont issues d’un algorithme de classification non supervis´ee.. Cependant il faut ajouter

Dans le problème de la classification monoclasse, on suppose que seules les données de la classe cible sont disponibles pour l’apprentissage du classifica- teur, alors que l’ensemble

Hence, when the two similarity matrices are built, each of them contains all the information needed to do a ‘separate’ co-clustering of the data (documents and words) by using

Dans cette étude conduite pour améliorer les performances de la classification automatique de documents textuels issus d’OCR (Reconnaissance Optique de Caractères), nous

Puis 4 tables de données (feature data tables) sont construites chacune avec 164 individus (les équipes de recherche de l’Inria) décrites par les mots fréquents (catégories)

Les éléments clés de cette stratégie sont d’une part, les méthodes de classification des objets constitutifs des documents et des structures physiques et logiques formées

For example, if the graph to be identified represents the structure of layout object, its is compared with all graphs representing the structure of gene- ric layout objects.. Two

La mé- thode proposée permet de demander seulement les étiquettes des documents les plus informatifs : ceux qui sont incertains selon une mesure décrite dans la section 4.1, et ceux