WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Algorithmes d'apprentissage pour la classification de documents

( Télécharger le fichier original )
par yasmine Hanane zeggane Mokhtar -
Université de Mostaganéme -Algérie- - Licence 2009
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

INTRODUCTION

La recherche accorde ces dernières années, beaucoup d'importance au traitement des données textuelles. Ceci pour plusieurs raisons : un nombre croissant de collections mises en réseau et distribuées au plan international, le développement de l'infrastructure de communication et de l'Internet. Les traitements manuels de ces données s'avèrent très coûteux en temps et en personnel, ils sont peu flexibles et leur généralisation à d'autres domaines est presque impossible ; c'est pour cela que l'on cherche à mettre au point des méthodes automatiques.

Le domaine de la fouille de textes (text mining) s'est développé pour répondre à volonté à la gestion par contenu des sources volumineuses de textes. A l'heure actuelle, de nombreux logiciels de classification de textes sont disponibles, ils ont fait l'objet de publications et leurs champs d'application s'élargit de jour en jour. En général, ces systèmes sont basés sur des algorithmes d'apprentissage automatique (approche statistique, approche syntaxique et approche connexionniste).

Nous nous intéressons ici plus particulièrement aux algorithmes d'apprentissage et nous avons utilisé et comparé deux algorithmes : les K plus proches voisins (Kppv) et l'algorithme de Rocchio. Pour pouvoir utiliser de tels algorithmes, il est nécessaire de transformer les données, initialement en format texte, en une représentation numérique. Nous avons choisi pour ce faire, la méthode de sélection des termes les plus pertinents. Une fois ce prétraitement terminé, nous pouvons effectuer la classification à l'aide de nos algorithmes ; ensuite nous ferons une étude comparative entre les deux méthodes.

Nous résumons la présentation de notre travail ainsi :

· Le chapitre I : résume l'explication de la catégorisation de texte et ses domaines d'applications.

· Le chapitre II : expose les différents algorithmes d'apprentissage utilisé pour la catégorisation de textes et expose en détail les deux algorithmes d'apprentissage utilisés : les K plus proches voisins (Kppv) et l'algorithme de Rocchio.

· Le chapitre III, expose l'architecture du logiciel conçu et son fonctionnement.

· Le chapitre IV, est consacré à l'implémentation de notre logiciel et quelques exemples de démonstration

CHAPITRE I

1- Introduction :

L'objet d'étude de ce mémoire : la catégorisation automatique de textes ; c'est un problème qui intéresse les chercheurs depuis relativement longtemps. On retrouve des travaux portant sur ce sujet depuis au moins le début des années 1960.

La recherche dans ce domaine est toujours très pertinente, car les résultats obtenus aujourd'hui sont encore sujets à amélioration. Pour certaines tâches, les classificateurs automatiques performent presque aussi bien que les humains, mais pour d'autres, l'écart est encore grand. Au premier abord, l'essentiel du problème est facile à saisir. D'un côté, on est en présence d'une banque de documents textuels et de l'autre, d'un ensemble prédéfini de catégories. L'objectif est de rendre une application informatique capable de déterminer de façon autonome, dans quelle catégorie classer chacun des textes, à partir de leur contenu, tel qu'illustré à la figure 1. [Sim, 2005]. 

Malgré cette première définition très simple, la solution n'est pas immédiate et plusieurs facteurs sont à prendre en considération. Ce chapitre vise donc à définir plus en profondeur de quoi il en retourne. En premier lieu, il précise la tâche de Catégorisation (classification), et le deuxième point présente le choix d'un mode de représentation adéquat des instances à traiter, en l'occurrence les textes. Il s'agit d'une étape incontournable en apprentissage automatique : on doit opter pour une façon uniforme et judicieuse d'abstraire les données avant de les soumettre à un algorithme. Comme l'apprentissage joue un rôle dans la catégorisation automatique de textes, le choix d'un mode de représentation y devient un enjeu. Par la suite, il sera question de la sélection d'attributs, presque toujours impliqués en catégorisation automatique de textes et on éliminera les attributs jugés inutiles à la classification. [Sim, 2005]. 

Programme informatique

Texte

Texte classifié, étiqueté

Ensemble de catégories, hiérarchisées ou non

Figure 1 - La tâche de classification

2- Définition de la catégorisation de textes :

Le but de la catégorisation automatique de textes est d'apprendre à une machine à classer un texte dans la bonne catégorie en se basant sur son contenu. Habituellement, les catégories font référence aux sujets des textes, mais pour des applications particulières, elles peuvent prendre d'autres formes. En effet, on peut résoudre, par des techniques de catégorisation, des problèmes tels que l'identification de la langue d'un document, le filtrage du courrier électronique pertinent ou indésirable, ou encore la désambiguïsation de termes. Un autre aspect du problème qui varie selon les applications est la présence ou non d'une contrainte concernant le nombre de catégories assignables à un document donné. Il se peut qu'on désire qu'un même texte ne soit associé qu'à une seule catégorie ou bien on peut permettre que plusieurs catégories accueillent un même document. Aussi, une précision supplémentaire est à faire : dans le cadre de la catégorisation de textes, l'ensemble de catégories possibles est déterminé à l'avance. Il est à noter que le problème consiste à regrouper des documents selon leur similarité.

Dans une catégorisation de texte : la classification s'apparente au problème de l'extraction de la sémantique d'un texte, puisque l'appartenance d'un document à une catégorie est étroitement liée à la signification de ce texte. C'est en partie ce qui rend la tâche difficile puisque le traitement de la sémantique d'un document écrit en langage naturel n'est pas encore solutionné. Une observation mérite aussi d'être faite concernant le fait que la nature des textes à traiter influence significativement la difficulté de la tâche de classification. Prenons l'exemple d'articles de journaux écrits généralement dans un style direct et contenant de l'information purement factuelle. Le vocabulaire utilisé s'avère précis et souvent relativement restreint pour faciliter la compréhension. A l'opposé, imaginons un corpus de textes d'un style plus littéraire, utilisant un vocabulaire très varié et imagé. On peut aisément prévoir que la classification automatique de ce dernier corpus présentera plus de difficultés que pour l'autre. Entre ces deux extrêmes, on peut aussi retrouver des textes scientifiques (où chaque catégorie aura potentiellement un vocabulaire caractéristique), des pages Web, du courrier électronique, etc. Chacun de ces types de textes possède des particularités qui rendent la tâche de classification plus ou moins ardue. [Sim, 2005]. 

3- Comment catégoriser un texte ?

Le processus de catégorisation intègre la construction d'un modèle de prédiction qui, en entrée, reçoit un texte et, en sortie, lui associe une ou plusieurs étiquettes.

Pour identifier la catégorie ou la classe à laquelle un texte est associé, un ensemble d'étapes est habituellement suivies. Ces étapes concernent principalement la manière dont un texte est représenté, le choix de l'algorithme d'apprentissage à utiliser et comment évaluer les résultats obtenus pour garantir une bonne généralisation du modèle appris.

Le processus de catégorisation, intégrant la phase de classement de nouveaux textes, est résumé dans la figure 2. Il comporte deux phases que l'on peut distinguer comme suit :

1. l'apprentissage, qui comprend plusieurs étapes et aboutit à un modèle de prédiction:

a) nous disposons d'un ensemble de textes étiquetés (pour chaque texte nous connaissons sa catégorie) ;

b) à partir de ce corpus, nous extrayons les k descripteurs (mots, termes) (t1; ..; tk) les plus pertinents au sens du problème à résoudre ;

c) nous disposons alors d'un tableau « descripteurs × individus », et pour chaque texte nous connaissons la valeur de ses descripteurs et son étiquette;

2. le classement d'un nouveau texte dx, qui comprend deux étapes :

a) recherche puis pondération des occurrences (t1; ...; tk) des termes dans le texte dx à classer ;

b) application d'un algorithme d'apprentissage sur ces occurrences et le tableau précédent afin de prédire l'étiquette de ce texte dx. [Rad, 2003].

Textes catégorisés

Textes à classifier

Représentation

Textes d'apprentissage

Représentation

Modèle de catégorisation

Prédiction de la catégorie

Figure 2: Processus de la catégorisation de textes

Notons que les k descripteurs les plus pertinents (t1; ...; tk) sont extraits lors de la première phase par analyse des textes du corpus d'apprentissage. Dans la seconde phase, celle du classement d'un nouveau texte, nous cherchons simplement la fréquence de ces k descripteurs (t1; ...; tk) dans le texte à classer.

Les deux phases seront développées dans le chapitre 2.

La figure 3 illustre le processus de classification d'un nouveau document. 

Sélection d'attributs et Représentation des documents

Texte à classer

ti

Représentation abstraite du texte {ai,k}

Classification par le programme

Texte classifié, étiqueté

<ti, f(ai,k)>

Figure 3 - Classification d'un nouveau document

4- Représentation et codage des textes :

Un codage préalable du texte est nécessaire, comme pour l'image, le son, etc., car il n'existe pas actuellement de méthode d'apprentissage capable de traiter directement des données non structurées, ni dans la phase de construction du modèle, ni lors de son utilisation en classement.

Pour la majorité des méthodes d'apprentissage, il faut transformer l'ensemble des textes en un tableau croisé « Individus-Variables » :

- L'individu est un texte (un document) dj, étiqueté lors de la phase d'apprentissage, il est classé dans la phase de prédiction.

- Les variables sont les descripteurs (les termes) tk qui sont extraits des données textuelles.

- Le contenu du tableau (les éléments wkj), au croisement du texte j et du terme k, représente le poids de ce terme k dans le document j.

Le principal enjeu de la catégorisation de texte, par rapport à un processus d'apprentissage classique, réside dans la recherche des descripteurs (ou termes) les plus pertinents pour le problème à traiter. Différentes méthodes sont proposées pour le choix des descripteurs et des poids associés à ces descripteurs. Certains chercheurs utilisent, à titre d'exemples, les mots comme descripteurs, tandis que d'autres préfèrent utiliser les lemmes (racines lexicales); ou encore des stemmes (la suppression d'affixes). [Rad, 2003].

5- Applications de la catégorisation de texte:

La catégorisation de textes est utilisée dans de nombreuses applications. Parmi ces domaines figurent : l'identification de la langue, la reconnaissance d'écrivains, la catégorisation de documents multimédia, et bien d'autres.

La catégorisation de textes peut être un support pour différentes applications parmi lesquelles le filtrage, qui consiste à déterminer si un document est pertinent ou non (décision binaire), par exemple la détection de spams (les courriers indésirables) pour ensuite les supprimer, le routage qui permet d'affecter un document à une ou plusieurs catégories parmi n, par exemple la diffusion sélective d'information. Lors de la réception d'un document l'outil choisit à quelles personnes le faire parvenir en fonction de leurs centres d'intérêt. Ces centres d'intérêt correspondent à des profils individuels. [Rad, 2003].

6- Lien avec la recherche documentaire:

La catégorisation de texte est proche de la recherche documentaire. En recherche documentaire, on doit retrouver les documents qui correspondent à une requête, ce qui revient à classer tout le corpus en deux classes : les textes correspondant à la requête d'une part, les autres d'autre part. En catégorisation, il s'agit d'attribuer les documents à un ou plusieurs groupes, en fonction des informations qu'ils contiennent.

La recherche documentaire est à l'origine de nombreux modèles de catégorisation de textes. La distinction entre les deux domaines n'est pas facile à établir car ils peuvent être vus tout deux comme des problèmes de classement. [Rad, 2003].

7- Approches pour la représentation des textes :

7-1- Introduction :

Les algorithmes d'apprentissage ne sont pas capables de traiter directement les textes, plus généralement, les données non structurées comme les images, les sons et les séquences vidéo. C'est pourquoi une étape préliminaire dite représentation est nécessaire. Cette étape consiste généralement en la représentation de chaque document par un vecteur, dont les composantes sont par exemple les mots contenus dans le texte, afin de le rendre exploitable par les algorithmes d'apprentissage. Une collection de textes peut être ainsi représentée par une matrice dont les lignes sont les termes qui apparaissent au moins une fois et les colonnes sont les documents de cette collection. [Rad, 2003].

Un grand nombre de chercheurs dans le domaine ont choisi d'utiliser une représentation vectorielle dans laquelle chaque texte est représenté par un vecteur de n termes pondérés. A la base, les n termes sont tout simplement les n différents mots apparaissant dans les textes de l'ensemble d'entraînement.

7-2- Choix de termes :

Dans la catégorisation de textes, comme dans la recherche documentaire, on transforme le document dj en un vecteur dj = (w1j, w2j, ...,w|T|j), où T est l'ensemble de termes (descripteurs) qui apparaissent au moins une fois dans le corpus (la collection) d'apprentissage. Le poids wkj correspond à la contribution du termes tk à la sémantique du texte dj. [Rad, 2003].

7-3- Représentation en « sac de mots » :

La représentation de textes la plus simple a été introduite dans le cadre du modèle vectoriel elle porte le nom de « sac de mots ». L'idée est de transformer les textes en vecteurs dont chaque composante représente un mot. Les mots ont l'avantage de posséder un sens explicite. Cependant, plusieurs problèmes se posent.

Il faut tout d'abord définir ce qu'est « un mot » pour pouvoir le traiter automatiquement.

On peut le considérer comme étant une suite de caractères appartenant à un dictionnaire, ou bien, de façon plus pratique, comme étant une séquence de caractères non délimiteurs encadrés par des caractères délimiteurs.

Les composantes du vecteur sont une fonction de l'occurrence des mots dans le texte. Cette représentation des textes exclut toute analyse grammaticale et toute notion de distance entre les mots : c'est pourquoi cette représentation est appelée « sac de mots » (figure 4) ; d'autres auteurs parlent d'« ensemble de mots » lorsque les poids associés sont binaires. [Rad, 2003].

On appelle "langage informatique" un langage destiné à décrire l'ensemble des actions consécutives qu'un ordinateur doit exécuter. Les langages naturels (par exemple l'anglais ou le français) représentent l'ensemble des possibilités d'expression partagé par un groupe d'individus. Les langages servant aux ordinateurs à communiquer n'ont rien à voir avec des langages informatiques, on parle dans ce cas de protocoles de communication, ce sont deux notions totalement différentes. Un langage informatique est une façon pratique pour nous (humains) de donner des instructions à un ordinateur.

6

3

3

...

...

...

...

...

2

1

1

langage

informatique

ordinateur

protocole

instruction

communi

Figure 4 - Exemple de la représentation d'un texte en « sac de mots »

7-4- Représentation des textes par des phrases :

Malgré la simplicité de l'utilisation de mots comme unité de représentation, certains auteurs proposent plutôt d'utiliser les phrases comme unité. Les phrases sont plus informatives que les mots seuls, car les phrases ont l'avantage de conserver l'information relative à la position du mot dans la phrase.

Logiquement, une telle représentation doit obtenir de meilleurs résultats que ceux obtenus via les mots. Mais les expériences présentées ne sont pas concluantes car, si les qualités sémantiques sont conservées, les qualités statistiques sont largement dégradées. [Rad, 2003].

7-5- Représentation des textes avec des racines lexicales et des lemmes :

Dans le modèle précédent (représentation en «sac de mots»), chaque flexion d'un mot est considérée comme un descripteur différent et donc une dimension de plus; ainsi, les différentes formes d'un verbe constituent autant de mots. Par exemple: les mots «déménageur, déménageurs, déménagement, déménagements, déménager, déménage, déménagera, etc.» sont considérés comme des descripteurs différents alors qu'il s'agit de la même racine « déménage »; les techniques de désuffixation (ou stemming), qui consistent à rechercher les racines lexicales, et de lemmatisation cherchent à résoudre cette difficulté.

Pour la recherche des racines lexicales, plusieurs algorithmes ont été proposés; l'un des plus connus pour la langue anglaise est l'algorithme de Porter.

La lemmatisation consiste à remplacer les verbes par leur forme infinitive, et les noms par leur forme au singulier. Un algorithme efficace, nommé TreeTagger, a été développé pour les langues anglaise, française, allemande et italienne.

L'extraction des stemmes repose sur des contraintes linguistiques bien moins fortes; elle se base sur la morphologie flexionnelle mais aussi dérivationnelle. De ce fait, les algorithmes sont beaucoup plus simplistes et mécaniques que ceux permettant l'extraction des lemmes; ils sont donc plus rapides; mais leur précision et leur qualité sont naturellement inférieures. [Rad, 2003].

7-6- Codage des termes :

Une fois que l'on choisit les composantes du vecteur représentant un texte j, il faut décider comment coder chaque coordonnée de son vecteur dj.

Il existe différentes méthodes pour calculer le poids wkj. Ces méthodes sont basées sur les deux observations suivantes:

1. Plus le terme tk est fréquent dans un document dj, plus il est en rapport avec le sujet de ce document.

2. Plus le terme tk est fréquent dans une collection, moins il sera utilisé comme discriminant entre documents.

Soient :

· #(tk, dj) le nombre d'occurrences du terme tk dans le texte dj ,

· |Tr| le nombre de documents du corpus d'apprentissage,

· #Tr(tk) le nombre de documents de cet ensemble dans lesquels apparaît au moins une fois le terme tk.

Selon les deux observations précédentes, un terme tk se voit donc attribuer un poids d'autant plus fort qu'il apparaît souvent dans le document et rarement dans le corpus complet. La composante du vecteur est codée f(#(tk, dj)), où la fonction f reste à déterminer. [Rad, 2003].

Deux approches peuvent être utilisées :

La première consiste à attribuer un poids égal à l'occurrence du terme dans le document :

Wkj = #(tk, dj) (1)

Et la deuxième approche consiste tout simplement à associer une valeur binaire (1 si le mot est présent dans le texte, 0 sinon) :

1 Si #(tk, dj) > 1

Wkj = (2)

0 Sinon

7-7- Codage Term frequency × inverse document frequency (TF × IDF):

Les deux fonctions (1) et (2) précédentes sont rarement utilisées car ces codages appauvrissent l'information : la fonction (2) ne prend pas en compte la fréquence d'apparition du terme dans le texte, (fréquence qui peut constituer un élément de décision important) ; la fonction (1) ne prend pas en compte la fréquence du terme dans les autres textes. [Rad, 2003].

Le codage TF × IDF (acronyme pour «term frequency × inverse document frequency») a été introduit dans le cadre du modèle vectoriel, il donne beaucoup d'importance aux mots qui apparaissent souvent à l'intérieur d'un même texte, ce qui correspond bien à l'idée intuitive que ces mots sont plus représentatifs du document. Mais sa particularité est qu'elle donne également moins de poids aux mots qui appartiennent à plusieurs documents : Pour refléter le fait que ces mots ont un faible pouvoir de discrimination entre les classes. [Sim, 2005]. 

Le poids d'un terme tk dans un document dj est calculé ainsi :

(3)

· # (tk, dj) : Nombre d'apparition de terme tk dans le document dj.

· |Tr| le nombre de documents du corpus d'apprentissage,

· #Tr(tk) le nombre de documents de cet ensemble dans lesquels apparaît au moins une fois le terme tk.

7-8- Codage TFC :

Le codage TF × IDF ne corrige pas la longueur des documents. Pour ce faire, le codage TFC est similaire à celui de TF×IDF : mais, il corrige la longueur des textes par la normalisation en cosinus, afin de ne pas favoriser les documents les plus longs. [Rad, 2003].

(4)

CHAPITRE II

1- Introduction :

En apprentissage automatique, différents types de classificateurs ont été mis au point, et cela dont le but d'atteindre un degré maximal de précision et d'efficacité, chacun ayant ses avantages et ses inconvénients. Mais, ils partagent toutefois des caractéristiques communes.

Parmi la panoplie de classificateurs existants, on peut faire des regroupements et distinguer des grandes familles.

Dans les pages qui suivent, nous allons exposer quelques algorithmes en détail, le classificateur bayésien naïf algorithme surpassé par d'autres mais il est souvent utilisé comme point de référence à cause de sa simplicité, l'algorithme de Rocchio. Puis, les machines à support vectoriel et l'algorithme des k-voisins les plus proches, qui représentent vraisemblablement à l'heure actuelle les deux meilleurs choix en catégorisation de textes.

2- Classificateur bayésien naïf :

Comme son nom l'indique, ce classificateur se base sur le théorème de Bayes permettant de calculer les probabilités conditionnelles. Dans un contexte général, ce théorème fournit une façon de calculer la probabilité conditionnelle d'une cause sachant la présence d'un effet, à partir de la probabilité conditionnelle de l'effet sachant la présence de la cause ainsi que des probabilités a priori de la cause et de l'effet.

On peut résumer son utilisation lorsqu'il est appliqué à la classification de textes ainsi :

- On cherche la classification qui maximise la probabilité d'observer les mots du document.

- Lors de la phase d'entraînement, le classificateur calcule les probabilités qu'un nouveau document appartienne à telle catégorie à partir de la proportion des documents d'entraînement appartenant à cette catégorie. Il calcule aussi la probabilité qu'un mot donné soit présent dans un texte, sachant que ce texte appartient à telle catégorie.

- Par la suite, quant un nouveau document doit être classé, on calcule les probabilités qu'il appartienne à chacune des catégories à l'aide de la règle de Bayes et des chiffres calculés à l'étape précédente.

La probabilité à estimer est donc : P( cj | a1 , a2 , a3 , ..., an )

Où:

· cj est une catégorie

· ai est un attribut

A l'aide du théorème de Bayes, on obtient : (5)

On peut omettre de calculer le dénominateur, qui reste le même pour chaque catégorie.

En guise de simplification, on calcule P (a1, a2, a3, ..., an | cj) ainsi :(6)

La probabilité qu'un mot apparaisse dans un texte est indépendante de la présence des autres mots du texte. On sait que cela est faux. Par exemple, la probabilité de présence du mot «artificielle» dépend partiellement de la présence du mot «intelligence». Pourtant, cette supposition n'empêche pas un tel classificateur de présenter des résultats satisfaisants. Et surtout, elle réduit de beaucoup les calculs nécessaires. Sans elle, il faudrait tenir compte de toutes les combinaisons possibles de mots dans un texte, ce qui d'une part impliquerait un nombre important de calculs, mais aussi réduirait la qualité statistique de l'estimation, puisque la fréquence d'apparition de chacune des combinaisons serait très inférieure à la fréquence d'apparition des mots pris séparément. [Sim, 2005]. 

Pour estimer la probabilité P (ai | cj), on pourrait calculer directement dans les documents d'entraînement la proportion de ceux appartenant à la classe cj qui contiennent le mot ai. Cependant, l'estimation ne serait pas très valide pour des numérateurs petits.

Dans le cas extrême où un mot ne serait pas du tout rencontré dans une classe, sa probabilité de 0 dominerait les autres dans le produit ci-dessus et rendrait nulle la probabilité globale. Pour pallier ce problème, une bonne façon de faire est d'utiliser le m-estimé qui est calculé ainsi :

(7)

· nk est le nombre d'occurrences du terme dans la classe cj

· n est le compte total des mots dans le corpus d'entraînement.

· |Vocabulaire| : Le nombre de mots clés.

3- Méthode de Rocchio :

La méthode de Rocchio est un classifieur linéaire proposé dans [Rocchio, 1971], un des plus vieux algorithmes de classification déstiné à l'amélioration des systèmes de recherche documentaires.

L'avantage de ce type de classifieurs est la simplicité et l'interprétabilité. Pour un expert, ce profil prototype est plus compréhensible qu'un réseau de neurones par exemple. L'apprentissage de ce type de classifieur est souvent précédé par une sélection et une réduction de termes.

Ce classifieur s'appuie sur une représentation vectorielle des documents : chaque document dj est représenté par un vecteur dj de Rn (n est le nombre de termes après sélection et réduction); chaque coordonnée tkj se déduit du nombre d'occurrences # (tk, dj) du terme tk dans dj , par :

(3)

Avec :

· # (tk, dj) : Nombre d'apparition de terme tk dans le document dj.

· |Tr| : le nombre de documents du corpus d'apprentissage

· #Tr(tk) : le nombre de documents dans lesquels apparaît au moins une fois le terme tk.

Un terme tk se voit donc attribuer un poids d'autant plus fort qu'il apparaît souvent dans le document et rarement dans le corpus complet. Chaque vecteur dj est ensuite normalisé, par la normalisation en cosinus, afin de ne pas favoriser les documents les plus longs.

(4)

Selon la méthode de Rocchio, Chaque catégorie est représentée par un profil «prototypique». Un profil de la classe ci est une liste de termes pondérés, dont la présence et l'absence discriminent au mieux cette classe ci. [Mat, 2003]. 

Pour chaque catégorie ci, les coordonnées tki du profil prototypique ci = (t1i, · · · , t|T|i) sont calculé ainsi :

(8)

Où :

Nc  : le nombre de documents dans C

 : le nombre de documents n'appartenant pas à C

t : un paramètre du modèle compris entre 0 et 1. Dans les situations où un document peut être attribué à une seule classe, t est souvent positionné à 1.

di : Poids des termes dans les documents de la classe i.

Ci : Profil prototypique de la classe i.

Les profils prototypes ci correspondent donc aux barycentres des exemples (avec un coefficient positif pour les exemples de la classe, et négatif pour les autres). Le classement de nouveaux documents s'opère en calculant la distance euclidienne entre la représentation vectorielle du document et celle de chacune des classes ; le document est assigné à la classe la plus proche. [Mat, 2003]. 

4- Algorithme des k-voisins les plus proches :

L'algorithme des k-voisins les plus proches («k-nearest neighbors» ou kNN) est une méthode d'apprentissage à base d'instances.

La méthode ne nécessite pas de phase d'apprentissage; c'est l'échantillon d'apprentissage, associé à une fonction de distance et à une fonction de choix de la classe en fonction des classes des voisins les plus proches, qui constitue le modèle.

Lorsqu'un nouveau document à classer arrive, il est comparé aux documents d'entraînement à l'aide d'une mesure de similarité. Ses k plus proches voisins sont alors considérés : on observe leur catégorie et celle qui revient le plus parmi les voisins est assignée au document à classer. C'est là une version de base de l'algorithme que l'on peut raffiner. Souvent, on pondère les voisins par la distance qui les sépare du nouveau texte.

5- Réseaux de neurones :

Un réseau de neurones (ou Artificial Neural Network en anglais) est un modèle de calcul dont la conception est très schématiquement inspiré du fonctionnement de vrais neurones (humains ou non). Les réseaux de neurones sont généralement optimisés par des méthodes d'apprentissage de type statistique grâce à leur capacité de classification et de généralisation, tels que la classification automatique de codes postaux ou la prise de décision concernant un achat boursier en fonction de l'évolution des cours. Ils enrichissent avec un ensemble de paradigmes permettant de générer de vastes espaces fonctionnels, souples et partiellement structurés .Ils appartient d'autre part à la famille des méthodes de l' intelligence artificielle qu'ils enrichissent en permettant de prendre des décisions s'appuyant davantage sur la perception que sur le raisonnement logique formel .

Exemple : Une banque peut générer un jeu de données sur les clients qui ont effectué un emprunt constituées : de leur revenu, de leur âge, du nombre d'enfants à charge... et s'il s'agit d'un bon client. Si ce jeu de données est suffisamment grand, il peut être utilisé pour l'entraînement d'un réseau de neurones. La banque pourra alors présenter les caractéristiques d'un potentiel nouveau client, et le réseau répondra s'il sera bon client ou non, en généralisant à partir des cas qu'il connaît.

Structure du réseau :

Un réseau de neurone est en général composé d'une succession de couches dont chacune prend ses entrées sur les sorties de la précédente. Chaque couche (i) est composée de Ni neurones, prenant leurs entrées sur les Ni-1 neurones de la couche précédente. À chaque synapse est associée un poids synaptique, de sorte que les Ni-1 sont multipliés par ce poids, puis additionnés par les neurones de niveau i, ce qui est équivalent à multiplier le vecteur d'entrée par une matrice de transformation. Mettre l'une derrière l'autre, les différentes couches d'un réseau de neurones reviendrait à mettre en cascade plusieurs matrices de transformation et pourrait se ramener à une seule matrice, produit des autres, s'il n'y avait à chaque couche, la fonction de sortie qui introduit une non linéarité à chaque étape. Ceci montre l'importance du choix judicieux d'une bonne fonction de sortie : un réseau de neurones dont les sorties seraient linéaires n'aurait aucun intérêt [1].

Au delà de cette structure simple, le réseau de neurones peut également contenir des boucles qui en changent radicalement les possibilités mais aussi la complexité. De la même façon que des boucles peuvent transformer une logique combinatoire en logique séquentielle, les boucles dans un réseau de neurones transforment un simple dispositif de reconnaissance d'inputs en une machine complexe capable de toute sortes de comportements [1].

Figure 6. Vue simplifiée d'un réseau artificiel de neurones

Exemple : Ce neurone calcule la somme de ses entrées puis cette valeur passe à travers la fonction d'activation pour produire sa sortie.

Figure7. Exemple d'un réseau de neurone

6- Machines à support vectoriel :

Les machines à support vectoriel («Support Vector Machines» ou SVM) proposée dans [Vapnik, 1995] forment une classe d'algorithmes d'apprentissage qui peuvent s'appliquer à tout problème qui implique un phénomène f et qui, à partir d'un jeu d'entrées x, produit une sortie y = f(x), et où le but est de retrouver f à partir de l'observation d'un certain nombre de couples entrée/sortie. Le problème revient à trouver une frontière de décision qui sépare l'espace en deux régions, à trouver l'hyperplan qui classifie correctement les données et qui se trouve le plus loin possible de tous les exemples. On dit qu'on veut maximiser la marge, la marge étant la distance du point le plus proche de l'hyperplan. (Figure 5) [Sim, 2005].

Figure8Maximisation de la marge avec les SVM

Des techniques de programmation quadratique permettent de résoudre ce problème. Une propriété intéressante des SVM est que la surface de décision est déterminée uniquement par les points qui en sont les plus proches de vecteurs de support. En présence de ces seuls exemples d'entraînement, la même fonction serait apprise.

Même s'ils cherchent l'hyperplan séparant l'espace vectoriel en deux, l'avantage des SVM est qu'ils s'adaptent facilement aux problèmes non linéairement séparables. Avant de procéder à l'apprentissage de la meilleure séparation linéaire, on transforme les vecteurs d'entrée en vecteurs de caractéristiques de dimension plus élevée. De cette façon, un séparateur linéaire trouvé par un SVM dans ce nouvel espace vectoriel devient un séparateur non linéaire dans l'espace original. Cette transformation des vecteurs se fait à l'aide des foncions appelées fonctions noyaux. [Sim, 2005]. 

Dans le cas de la classification de textes, les entrées sont des documents et les sorties sont des catégories. En considérant un classificateur binaire, on voudra lui faire apprendre l'hyperplan qui sépare les documents appartenant à la catégorie et ceux qui n'en font pas partie. Les SVM conviennent bien pour la classification de textes [Joa98a]. Une dimension élevée ne les affecte pas puisqu'ils se protègent contre le sur-apprentissage. Dans le même sens, il affirme que peu d'attributs sont totalement inutiles à la tâche de classification et que les SVM permettent d'éviter une sélection agressive qui aurait comme résultat une perte d'information. On peut se permettre de conserver plus d'attributs. Egalement, une caractéristique des documents textuels est que lorsqu'ils sont représentés par des vecteurs, une majorité des entrées sont nulles. Or, les SVM conviennent bien à des vecteurs dits clairsemés. [Sim, 2005]. 

7- Choix de classifieur :

La catégorisation de textes nécessite un choix de technique d'apprentissage (classifieur). Parmi les méthodes d'apprentissage les plus utilisées figurent le classifieur de Rocchio, Classifieur bayésien naïf, les k-plus proches voisins, et plus récemment les machines à vecteurs supports (SVM).

Nous avons choisi la méthode des k plus proche voisins (k-PPV) pour de nombreuses raisons, que nous expliquerons dans les sections qui suivent.

8- La méthode k-PPV en détail :

L'idée de base de l'algorithme des k-plus proches voisins (kPPV), traduction de nearest neighbor (kNN) en anglais, est de prédire la classe d'un texte t en fonction des k textes les plus proches voisins déjà étiquetés en mémoire.

L'algorithme 1 montre comment classer un nouvel exemple par la méthode k-PPV.

Algorithme 1 Algorithme de classification par k-PPV

Paramètre : le nombre k de voisins

Contexte : un échantillon de (l) textes classés en C = c1, c2, ..., cn classes

1: pour chaque texte t faire

2: transformer le texte t en vecteur t = (x1, x2, ..., xm)

3: déterminer les k plus proches textes du texte t selon une métrique de distance

4: combiner les classes de ces k exemples en une classe c

5: fin pour

Sortie : le texte t associé à la classe c.

Le choix de la distance et du paramètre k est primordial pour le bon fonctionnement de la méthode. Nous présentons maintenant les différents choix possibles pour la distance et pour le mode de sélection de la classe du cas présenté. [Rad, 2003]. 

8-1- Définition de la distance

Soit E : un ensemble de textes.

Soient a, b, c trois points de l'espace E (Les points sont des textes).

Une distance est une application de E × E dans R+ qui vérifie les propriétés suivantes:

On peut noter qu'un point A peut avoir un plus proche voisin B qui, lui-même, possède de nombreux voisins plus proches que A (Figure 6).

A

B

×

×

×

×

×

Figure 9 : (A) a un plus proche voisin (B),

(B) a de nombreux voisins proches autres que (A)

La distance entre un texte et ses voisins se fait via une métrique de distance. Cette métrique peut être la métrique de Minkowski : [Rad, 2003] 

(9)

Selon la valeur de p, on retrouve plusieurs distances connues :

(10)

1. Si p = 1 cette distance est la distance de Manhattan définie par

dm(a,b)= {|a1 - b1| + |a2 - b2| + ... + |an - bn|}

2. Si p = 2 c'est la distance euclidienne définie par :

(11)

Choix de k :

La valeur de k est un des paramètres à déterminer lors de l'utilisation de ce type de classificateur. La valeur que l'on choisit pour k va être plus critique, plus déterminante en rapport avec la performance du classificateur. On peut se permettre de considérer un plus grand nombre de voisins, sachant que plus ils diffèrent du document à classer, moins ils ont d'impact sur la prise de décision. Cependant, il demeure nécessaire de limiter le nombre de voisins pour s'en tenir à un temps de calcul raisonnable. [Sim, 2005]. 

Mesure de similarité :

Une des caractéristiques fondamentales de ce type de classificateur est l'utilisation d'une mesure de similarité entre les documents. Les textes étant représentés sous forme vectorielle, donc comme des points dans un espace à n dimensions.

1) On peut au premier abord penser à déterminer les voisins les plus proches en calculant la distance euclidienne entre ces points.

Distance euclidienne entre deux documents a et b : (12)

Où :

· T est l'ensemble des attributs

· pt(a) est le poids du terme t dans le document a

· pt(b) est le poids du terme t dans le document b

2) Une autre façon : de calculer la similarité des documents :

(13)

Similarité cosinusoïdale entre deux documents a et b :

Où :

· T est l'ensemble des attributs

· pt(a) est le poids du terme t dans le document a

· pt(b) est le poids du terme t dans le document b

La similarité cosinusoïdale est préférable en classification de textes pour plusieurs raisons :

- Elle permet de comparer des textes de longueurs différentes en normalisant leur vecteur.

- Elle met l'accent plutôt sur la présence de mots que sur l'absence de mots. (La présence de mots est probablement plus représentative de la catégorie du texte que l'absence de mots). [Sim, 2005]. 

Illustration :

Regardons à l'aide d'un exemple pourquoi la similarité cosinusoïdale est préférable à la distance euclidienne. Nous allons considérer le vocabulaire et les trois documents suivants :

· Vocabulaire : <classification, automatique, similarité, document>

· Document 1 : <1, 1, 1, 0>

· Document 2 : <0, 0, 1, 0>

· Document 3 : <0, 0, 0, 0>

1 : signifie que le mot et présent dans le document.

0 : signifie l'absence de mot.

Par exemple le mot « classification » est présent dans le document 1 (indiqué par 1) et absent dans les documents 2 et 3 (indiqué par 0)

La mesure de distance euclidienne indique que le document 3 est moins distant (plus similaire) du document 2 (distance de 1) que le document 2 ne l'est du document 1 (distance de 1.41).

Pourtant, les documents 2 et 3 n'ont aucun mot en commun, alors que les documents 1 et 2 partagent le mot «similarité».

La mesure de similarité cosinusoïdale, pour sa part, retourne une similarité nulle (0) entre les documents 2 et 3, mais positive (0.57) entre les documents 1 et 2.

Ces derniers résultats sont plus représentatifs de la réalité, puisque les documents 1 et 2 partagent au moins un mot, donc présentent une certaine similarité et sont plus susceptibles d'être classés dans la même catégorie que les documents 2 et 3 qui ne partagent aucun mot. [Sim, 2005]. 

Comme il a déjà été mentionné, le classificateur kNN n'implique pas de phase d'entraînement en tant que telle. La seule opération préalable est le stockage des exemples d'entraînement. L'apprentissage est repoussé au moment où un nouveau document à classer arrive. Par le fait même, la plus grosse part de l'effort requis en termes de temps de calcul est fourni au moment même de la classification.

Une des caractéristiques de l'apprentissage à base d'instances est qu'il n'y a pas de construction d'une description explicite de la fonction à apprendre (dans notre cas, l'appartenance à une catégorie). L'avantage est qu'on n'estime pas qu'une seule fois la fonction pour tout l'espace, mais on l'estime plutôt localement et différemment pour chaque nouvelle instance. [Sim, 2005]. 

8-2- Mise en place de la méthode :

La méthode ne nécessite pas de phase d'apprentissage. Le modèle est constitué de trois éléments :

1) l'échantillon d'apprentissage,

2) la distance ou Similarité,

3) la méthode de combinaison des voisins.

L'efficacité de la méthode dépend de ces trois éléments.

Il faut choisir l'échantillon, c'est-à-dire les attributs pertinents pour la tâche de classification considérée et l'ensemble des enregistrements. Il faut veiller à disposer d'un nombre assez grand d'enregistrements par rapport au nombre d'attributs et à ce que chacune des classes soit bien représentée dans l'échantillon choisi.

La distance par variable et le mode de combinaison de ces distances sont choisis en fonction du type des variables et des connaissances préalables concernant le domaine.

Une heuristique fréquemment utilisée pour le choix du nombre k de voisins est de prendre k égal au nombre d'attributs plus 1.

L'emploi de k voisins, au lieu d'un seul, assure une plus grande robustesse à la prédiction.

Classiquement, dans le cas où la variable à prédire comporte deux étiquettes, ce paramètre k est une valeur impaire afin d'avoir une majorité plus facilement décidable. [Rad, 2003]. 

CHAPITRE III

1. Introduction

Ce chapitre est essentiellement consacré aux grandes lignes qui visent à réaliser l'objectif de ce thème, et les outils exploités pour le développement du logiciel tels que le choix du langage de programmation, l'environnement de programmation, le matériel utilisé, le modèle conceptuel et les principales fonctions de traitement à utiliser.

2. Environnement matériel et logiciel

2.1. Configuration matérielle et logicielle

· Un PC Pentium 4 à 3GHZ et 2Go de RAM.

· Flash disque 4 Go.

· Microsoft Office 2007 Professionnel.

· JAVA (JBuilder 2005).

2.2 Le langage de programmation :

n Un langage simple

n Un langage orienté objet 

n Un langage robuste et sûr 

n Un langage Indépendant des architectures matérielles

n Un langage multitâches 

n Java assure la gestion de la mémoire

n Java est distribué 

2.3 L'environnement de programmation

2.1.1 JBuilder :

JBuilder est un environnement de développement intégré (EDI) développé par la société Borland. JBuilder permet de développer des applications Java fonctionnant avec la machine virtuelle de Sun Microsystems. Etant donné que JBuilder est lui-même écrit en Java, il est distribué pour la plupart des systèmes d'exploitation (Windows, Linux, Solaris et MacOS X). JBuilder est à l'origine un outil de développement professionnel destiné à l'entreprise. Néanmoins, Borland a eu l'excellente idée de fournir une version légèrement bridée de son outil pour la communauté Open Source. Vous trouverez de plus amples informations concernant les différences entre les différentes versions sur le site de Borland.

3. Modélisation par une méthode conceptuelle(UML) :

3.1. Définition d'UML :(Unified Modeling Language ) :

UML est un langage de modélisation unifié (créé en 1994), né de la fusion des trois méthodes de modélisation d'objet :

· OMT : Object Modeling Technique (créé par Jim Rumbaugh).

· BOOCH : Nom tiré de son inventeur (Grady Booch).

· OOSE : Object Oriented Software Engineering.

UML est un langage pour visualiser, spécifier, construire et documenter les abstractions d'un système logiciel.

3.2. Les avantages d'UML

· UML est un langage formel et normalisé : il permet un gain de précision et de stabilité.

· UML est un support de communication performant : il permet grâce à sa représentation graphique, d'exprimer visuellement une solution objet, de faciliter la comparaison et l'évolution de solution.

· Son caractère polyvalent et sa souplesse en font un langage universel.

3.3. Les diagrammes d'UML

Un diagramme UML est une représentation graphique, qui permet de modéliser un aspect bien précis du système, chaque type de diagramme UML possède une structure et des concepts prédéfinis.

Un diagramme donne à l'utilisateur un moyen de visualiser et de manipuler des éléments de modélisation.

Au total UML définit treize types de diagrammes. Mais, nous avons eu besoin d'utiliser seulement cinq diagrammes parmi les treize proposés par ce langage.

Ce choix nous a permis de bien comprendre le fonctionnement de ces quatre diagrammes, et de maîtriser leur usage au sein de notre projet de classification des pages web.

· Diagramme de cas d'utilisation représente les fonctions du système du point de vue des utilisateurs ;

· Diagramme de classes montre une collection d'éléments statiques (classes), leur contenu (attributs, opérations, types) et les relations entre eux (associations). Permet de décrire la structure statique d'un système.

· Les diagrammes de composants permettent de décrire l'architecture physique et statique d'une application en terme de modules : fichiers sources, librairies, exécutables, etc.

· Les diagrammes de séquence sont une représentation temporelle des objets et de leurs interactions.

- Permettre de bien comprendre le fonctionnement du système ; modéliser la vie des objets dans le temps et leur chronologie.

- Représenter les interactions, les communications entre objets.

· Les diagrammes d'états-transitions représentent le comportement d'un classificateur ou d'une méthode en terme d'états ;

Diagramme d'états-transitions sert à représenter des automates d'états finis, sous forme de graphes d'états, reliés par des arcs orientés qui décrivent les transitions.

- Les diagrammes d'état-transitions permettent de décrire les changements d'états d'un objet ou d'un composant, en réponse aux interactions avec d'autres objets/composants ou avec des acteurs.

- Une transition représente le passage instantané d'un état vers un autre.

- Une transition est déclenchée par un événement. En d'autres termes : c'est l'arrivée d'un événement qui conditionne la transition.

Diagramme de cas d'utilisation:

Utilisateur

Afficher / Classer

Ouvrir un fichier

Calculer les vecteurs d'occurrences Choix de l'algorithme

d'apprentissage

KPPV

Rocchio

Comparer le texte à classer avec les textes d'apprentissage

Sacmot

String Source

Vector vecteur

String Sac_mot

Void RemplirVecteur()

Void Charger_Sacmot()

Diagramme de classes utilisées

Class_C

String Texte[]

Boolean TrouveString

(String Str, String fichier)

Int NbreTexte(String rech)

kPPV

VecteurTexte vTexte

kPPV (VecteurTexte vTexte)

decision()

Paramètres

Extends

VecteurTexte

String fich

Vector vecteur

VecteurTexte ( String fich,

Paramètres

Rocchio

VecteurTexte vTexte

Rocchio (VecteurTexte vTexte)

decision()

Paramètres

Ouvrir un fichier

Calculer le vecteur d'occurrences

Choix de l'algorithme d'apprentissage

Comparer le vecteur de fréquence de texte à classer avec les vecteurs de fréquences des textes d'apprentissage C1 (médecine)

Comparer le vecteur de fréquence de texte à classer avec les vecteurs de fréquences des textes d'apprentissage (non médecine)

Calculer le vecteur des similarités

Classer le fichier

Prendre la décision

Diagramme d'états-transitions

Diagramme de séquence de kPPV

Afficher la classe du texte

Afficher le vecteur de similarités

Afficher le vecteur d'occurrences

Afficher le vecteur de fréquences

Décision

Charger le vecteur de similarités

Charger le vecteur de fréquences

Charger le vecteur d'occurrences

Affecter le vecteur de mots clés

Charger le vecteur de mots clés

Ouvrir le fichier

JFilechooser

Sac_mot

VecteurTexte

kPPV

CHAPITRE 4

1- Fonctionnement du logiciel :

L'architecture suivante représente le fonctionnement de notre application. Son fonctionnement est composé de plusieurs étapes qui peuvent être visualisées une par une, ces étapes principales sont :

Etape1 : L'utilisateur ouvre l'interface principale (Navigateur, Explorateur). Les vecteurs d'occurrences de textes d'apprentissage interdits et autorisés sont calculés et transformés en vecteurs de fréquences automatiquement après l'exécution de l'application.

Etape2 : L'utilisateur ouvre un fichier local sur le disque dur

Etape3 : L'algorithme choisi charge le vecteur de mots clés et représente le texte à classer (vecteurs d'occurrences).

Etape4 : L'algorithme choisi transforme le vecteur d'occurrences de texte à classer en vecteur de fréquences selon le codage de la méthode.

Etape5 : L'algorithme calcule la similarité entre le texte à classer et les textes d'apprentissage si la méthode choisie est kPPV ou la similarité entre le texte à classer et les profils prototypiques des deux classes (médecine/non médecine) en cas de l'algorithme de Rocchio.

Etape6 : Selon la métrique de prise de décision de l'algorithme choisi, le fichier sera classé.

2- L'interface du logiciel :

Notre prototype se compose d'une fenêtre principale à partir de laquelle l'utilisateur peut effectuer les opérations ou les traitements désirés en sélectionnant un élément du menu ou en cliquant sur un bouton de la barre.

Cette fenêtre est montrée dans la figure suivante :

Interface du logiciel:

Le bouton fichier :

Un test avec la méthode KPPV

Résultat de la méthode kppv

Un test avec la méthode Rocchio

Résultat de la méthode Rocchio

Comparaison

Résultat de la comparaison

Le bouton a propos:

CONCLUSION

Nous avons présenté dans ce mémoire, les nouvelles approches d'analyse intelligente de documents qui utilisent les techniques d'apprentissage automatique.

Dans le cadre des méthodes d'apprentissage statistique, nous avons présenté et discuter deux algorithme Rocchio et k les plus proches voisins. La démarche générale est constituée deux étapes, à savoir :

Le pré-traitement du texte

Dans cette dernière phase, la représentation de texte dans un format adapté aux algorithmes d'apprentissage ; on utilise souvent la représentation vectorielle.

choix d'une méthode d'apprentissage

Nous avons proposé la méthode Kppv et Rocchio, qui a donné de bons résultats .

L'algorithme Rocchio est simple, en vu des résultat obtenu , on peut conclure que la méthode de Rocchio donne de bons résultats avec un bon taux de précision, l'apprentissage est rapide, permettant de traiter des données volumineuses, elle convient donc particulièrement bien au problème de la fouille de textes.

Il serait maintenant intéressant de poursuivre cette recherche, qui a permis de découvrir les avantages de ces algorithmes dans le cadre de la catégorisation de texte. Nous espérons que cette contribution pourra ouvrir de nouvelles perspectives à d'autres collègues et d'ouvrir un champ de recherche.

BIBLIOGRAPHIE :

· [Sim, 2005] : SIMON RÉHEL : « Catégorisation automatique de textes et cooccurrence de mots provenant de documents non étiquetés »

Mémoire présenté à la Faculté des études supérieures de l'Université Laval, Québec, Janvier 2005

· [Rad, 2003] : RADWAN JALAM : « Apprentissage automatique et catégorisation de textes multilingues » Université Lumière Lyon2, Juin 2003.

· [Mat, 2003] : MATHIEU VALETTE : « Application d'algorithmes de classification automatique pour la détection des contenus racistes sur l'Internet », Juin 2003

· [Sal, 2005] : SALAH BOUKTIF : «Amélioration de la prédiction de la qualité du logiciel par combinaison et adaptation de modèles » Université de Montréal, Mai 2005.

· [Sim Jai, 2003] : SIMON JAILLET : « Catégorisation automatique de documents ». Année 2003.

· [Ouv, 2003] : SIMON JAILLET, Maguelonne Teisseire, Jacques Chauche et Violaine Prince : « Classification automatique de documents, Le coefficient des deux écarts » LIRMM-CNRS - Université Montpellier 2, Année 2003.

· [Phi, 2005] : PHILIPPE PREUX : « Fouille de données, Notes de cours » Université de Lille 3, Juillet 2005.

· [Ant, 2002] : ANTOINE CORNUÉJOLS : « Une nouvelle méthode d'apprentissage : Les SVM. Séparateurs à vaste marge » Université de Paris-Sud, Orsay, Juin 2002.

· [1] : http://fr.wikipedia.org/wiki/R%C3%A9seau_de_neurones

· [2] : « Projet de fin d'étude " Algorithmes d'apprentissage pour la classification des pages WEB" », 2005-2006






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il y a des temps ou l'on doit dispenser son mépris qu'avec économie à cause du grand nombre de nécessiteux"   Chateaubriand