:: Enseignements :: Master :: M2 :: 2009-2010 :: Traitement statistique de document et moteurs de recherche ::
[LOGO]

Classication supervisée de textes


Dans ce td, nous proposons d'implémenter un outil de classication de textes, utilisant la méthode K-NN.

Préliminaires

Pour cette séance, vous avez à disposition une collection de dépêches Reuters à l'adresse suivante: /home/ens/mconstan/tal/reuter-collection-tp2. Cette collection de textes bruts a été extraite automatiquement de la collection Reuters-21578. Ces dépêches sont classées dans trois catégories : sugar, coffee et gas. A chaque texte, sont associés la ou les catégories auxquels il appartient. Les différents textes se trouvent dans le répertoire texts.

La collection est divisée en deux sous-collections: l'une pour l'apprentissage (collection-app.lst), l'autre pour l'évaluation (collection-eval.lst). Chacune d'elle est définie par un fichier qui contient la liste des dépêches avec la ou les catégories auxquelles elles appartiennent.

Exercice 1 - Représentation d'un texte

Ecrire une classe Text qui représente un texte sous une forme vectorielle (HashMap<String,Integer>). Son constructeur prend le nom du fichier et la liste de ses catégories comme paramètres. Elle possède plusieurs méthodes:
  • public String getName() qui renvoie le nom du fichier
  • public ArrayList<String> getCategories() qui renvoie la liste des catégories
  • public ArrayList<String> getWords() qui renvoie la liste des mots du texte
  • public int getWeight(String word) qui renvoie le poids logarithmique normalisé du mot word
  • public double sim(Text t) qui calcule la similarité avec un autre Text t.

Exercice 2 - Représentation d'une collection

Ecrire une classe TextCollection qui représente une collection sous la forme d'une liste de Text (ArrayList<Text>). Son constructeur prend le nom du fichier définissant la collection, comme paramètre. Elle contient une méthode public ArrayList<Text> getTexts() qui renvoie la liste des textes.

Exercice 3 - Algorithme k-NN