Teaching - TAL

Page principale de l'UE


Traitement Automatique de la Langue

Classification de textes et sacs de mots

Outils utilisés (déjà installé en TP)

(Pour le travail à la maison)

Nous travaillerons en python 2.7 avec des librairies de calcul. Pour travailler chez vous, vous pouvez utiliser les installations suivantes:

(Pour le TP)

Mettre à jour sklearn en local:

  pip install scikit-learn --user --proxy=proxy.ufr-info-p6.jussieu.fr:3128 --upgrade

Pour éviter les problèmes d'encodage, l'idéal est de travailler avec des fichiers en UTF-8 et de démarrer vos scripts par:

  # -*- coding: utf-8 -*-  

Chargement d'un corpus (lecture de fichiers)

Chargement des documents, mode(s) d'emploi: lien

Vous devez obtenir une liste de textes (ou une liste par classe de documents). Afficher quelques éléments de la liste pour vérifier que tout fonctionne correctement

Gestion d'un corpus et transformation en sacs de mots

Vectorisation des documents : lien

Vous devez obtenir une matrice contenant 1 document par ligne (les colonnes correspondant aux mots du dictionnaire).

  • Essayer d'afficher quelques documents sous forme numérique puis reconstruite pour vérifier que vous avez bien compris les opérations de transformation.
  • Afficher une liste de stopwords avec nltk
  • Afficher les 100 premiers mots du dictionnaire
    • unigrammes de mots
    • bigrammes de mots
    • 3-grammes de lettres
    • Comparer les tailles de dictionnaire en fonction des fréquences de coupure

sklearn, prise en main des outils d'apprentissage

Nous arrivons ensuite à la phase de classification elle-même. Le but du TP est de comparer les performances en validation croisée de 3 approches:

  • Naive Bayes
  • SVM
  • Regression logistique

Nous allons utiliser la bibliothèque sklearn pour réaliser ces opérations

Tutoriel sklearn : lien

Campagne d'expérimentation

Charger des données et construire un classifieur de documents

  • Comparer l'impact des paramètres de vectorisation sur les performances
  • Etudier l'impact du paramètre de régularisation des algorithmes d'apprentissage sur les performances
  • Construire une chaine de traitement autonome capable de traiter n'importe quel nouveau document
  • Tester vos algorithmes sur différents jeux de données
    • Evaluation quantitative: comparer les taux de bonnes classification, le nombre de dimensions utiles...
    • Evaluation qualitative: quels sont les mots utiles, les mots les plus influents...

Note pour retrouver les mots les plus influents:

  1. Trier les coefficients du modèle et trouver les indices participant le plus à la décision
  2. Aller chercher dans le dictionnaire la correspondance de ces indices:
import scipy.sparse as sp

# si les indices à afficher sont [1000,1001, 1003]
ind = sp.coo_matrix(([1,1,1],([0,0,0],[1000,1001, 1003])))

vec.inverse_transform(ind)