TP3 - Classification supervisée de textes

Dans ce TP, nous proposons d'implémenter un outil de classication de textes, utilisant la méthode k-NN et la méthode du centroïde.


Préliminaires

Pour cette séance, vous avez à disposition une collection de dépêches Reuters dans ce fichier zip à décompresser. 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. À chaque texte sont associées la ou les catégories auxquelles 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

Écrivez une classe CText qui représente un texte catégorisé sous une forme vectorielle. Elle hérite de la classe Text vue au TP précédent. Son constructeur prend le nom du fichier et la liste de ses catégories comme paramètres. Elle possède une méthode supplémentaire : getCategories() qui renvoie la liste des catégories.

Exercice 2 - Représentation d'une collection

Écrivez une classe CTextCollection qui représente une collection de CText. Vous pouvez vous inspirer de la classe TextCollection vue au TP précédent.

Exercice 3 - Algorithme k-NN

Exercice 4 - Algorithme du centroïde

Implémentez l'algorithme du centroïde. Évaluez et comparez avec la méthode précédente.