Teaching - TAL

Page principale de l'UE


Traitement Automatique de la Langue

Tutoriel word2vec

Fonctionnement de base

Word2vec a été vu en cours, c'est une technique d'extraction sémantique locale qui a des propriétés très intéressante. Nous proposons un TME pour manipuler cette approche. La bibliothèque gensim, en python permet de faire cela facilement, il faut seulement s'adapter à ce nouvel environnement (idéalement, on utilisera tous les outils de la bibliothèque: passage aux sacs de mots...).

Afin de tester le fonctionnement de word2vec, nous proposons d'utiliser la librairie gensim qui propose une implémentation efficace. Le tutoriel de prise en main est disponible ici (lien alternatif ici).

Normalement, le lien précédent est suffisant. Pour ceux qui ont besoin de plus de détail sur la syntaxe python/gensim: lien

Apprentissage d'un modèle

Ce tutoriel met l'accent sur la distinction entre liste et itérateur en python pour limiter l'usage de la mémoire. L'idée est qu'un réseau de neurones nécessite de voir les phrases une par une, sans avoir besoin de stocker l'ensemble du corpus en mémoire.

Le code pour l'apprentissage est très simple. Dans un premier temps, nous allons apprendre ce modèle sur le corpus movies que vous avez déjà manipulé.

Penser à sauver les modèles en fin d'apprentissage pour éviter de les réapprendre systématiquement. C'est une bonne chose d'avoir une introduction standard avec:

  • un nom de fichier
  • un if testant si le fichier existe
    • dans l'affirmative on charge le modèle,
    • dans la négative, on l'apprend

Evaluation linguistique

Evaluation quantitative

Pour l'évaluation, nous allons étudier les aspects linguistiques avec le jeu de données question-words.txt, comme proposé dans le tutoriel. Cette évaluation risque de laisser à désirer, le vocabulaire du corpus étant très spécifique.

Evaluation qualitative

Dans le paragraphe using the model du tutoriel, il est expliqué comment faire des requêtes dans la table des mots.

Jouer avec ces possibilité pour trouver les mots proches de nom d'acteur, de réalisateurs... Essayer aussi d'attaquer le problème avec des combinaisons: que donne french + actor sur une base aussi petite que movies?

En tache de fond, télécharger le corpus large movie review (lien dans le TME 3) et recommencer les traitements pour voir si les résultats sont différents.

Vous pouvez comparer les résultats avec ceux obtenus sur des corpus plus gros:

  • il est possible de faire des requêtes sur un gros modèle (en bas de la page du tutoriel)
  • il est possible de télécharger des matrices représentant des dictionnaires dans l'espace latent appris.

Transfert vers l'analyse de sentiments

Les corpus traités étant étiquetés, nous proposons de regarder l'intérêt de l'espace latent appris pour la classification de sentiments.

Comparaison quantitative

Comparer une approche SVM ou régression logistique sur des sacs de mots classique et sur l'espace w2v.

Note: il faut partir sur un espace assez grand (>500) pour que l'expérience ait plus de sens

Analyse qualitative

Peut-on interpréter les poids du classifieur dans l'espace latent? Ce n'est pas évident, mais il y a une solution:

  • Récupérer les n coefficients les plus positifs/négatifs
  • Faire une requête dans W2V avec ce mot virtuel (que des 0 et des coefficients sur les coordonées les plus discriminantes)
  • Etudier les mots les plus proches de la requête

Approfondissement

Plusieurs pistes à étudier:

  • Est ce que ça marche en français?
  • Est ce qu'on peut complexifier le modèle, pour avoir par exemple une représentation générique pour les documents positifs et négatifs?