Teaching - TAL

Page principale de l'UE


Traitement Automatique de la Langue

TME clustering thématique

Catégorisation

La catégorisation consiste à regrouper les documents en groupes homogènes. Le problème est aussi appelé clustering. Ces techniques sont très utiles dans l'industrie mais posent un gros problème au niveau de l'évaluation:

  • Comment évaluer la qualité des modèles, l'homogénéité des groupes?

Pour palier ce problème, nous proposons le cadre expérimental suivant:

  1. travail sur les données newsgroup (news classée par thématiques, cf section sur les données pour le chargement)
  2. application des algorithmes de catégorisation
  3. évaluation quantitative sur les résultats obtenus:
    • taux de bonnes classification (si le nombre de cluster est fixé au nombre de classes)
    • pureté: dans chaque cluster, étude du nombre de documents qui sont de la même classe que la majorité. Une pureté de 1 signifie que dans chaque cluster, tous les documents sont homogènes. Pour pouvoir comparer des puretés, il est nécessaire de comparer des modèles basés sur le même nombre de cluster (on comprend de manière intuitive que plus il y a de groupe, plus il est facile de maximiser la pureté).
    • comparaison avec des algorithmes supervisés
    • Note: le corpus est divisé en apprentissage et test: il est possible d'utiliser directement les procédures vues en classification de documents

Exercice 1:

Utiliser le k-means et le linearSVM de sklearn pour apprendre des catégories et comparer les résultats.

Exercice 2:

Utiliser la méthode LDA (latent dirichlet allocation) de gensim pour apprendre un clustering en donnant le nombre de cluster à découvrir: lda.LdaModel(bows, num_topics=20).
Note: pour l'usage de gensim, se référer à la page sur la transformation numérique des documents lien.

  • L'intérêt de cette bibliothèque est de donner des sorties probabilisées. Interpréter les sorties suivantes:
... # usage de gensim pour la vectorisation des documents
mod = lda.LdaModel(bows, num_topics=100)
print mod[bows[0]]
  • Etudier les variations de performances en fonction du nombre de clusters à découvrir

Exercice 3: Interprétation des clusters

Utiliser la documentation de la page http://radimrehurek.com/gensim/models/ldamodel.html pour afficher les mots les plus représentatifs de chaque cluster.

  • Ces mots permettent-ils de retrouver le thème principal des clusters concernés?

Approches sémantiques

Que peut-on en déduire sur les mots, et surtout, sur les distances entre les mots?

Utiliser un modèle LSA (LSI dans gensim): http://radimrehurek.com/gensim/tut3.html

  • Choisir quelques mots-requêtes et récupérer les 10 plus proches voisins
  • En prenant un espace latent de dimensions 2, afficher quelques centaines de mots dans une figure.
    • utiliser matplotlib + la commande text pour placer un mot à une coordonnée
    • sauver la figure en pdf (savefig)
    • ouvrir avec un éditeur pour pouvoir facilement zoomer / dézoomer

Utiliser ensuite un modèle probabiliste comme LDA

  • Utiliser les fonctions précédentes pour reconstruire la matrice p(w|topic)
  • Re-normaliser la matrice pour obtenir p(topic|w)
  • refaire les expériences précédentes