Teaching - TAL

Page principale de l'UE


Traitement Automatique de la Langue

Segmentation thématique

L'idée générale de la segmentation thématique est de comprendre les différents thèmes abordés dans un document, leur enchainement. La segmentation est une tâche de base afin de mieux comprendre un texte et donc de pouvoir extraire des informations spécifiques ou proposer un résumé automatique.

Durant cette séance de TME, nous allons travailler sur un corpus de jeux vidéo avec l'idée de séparer différents aspects:

  • Quelles parties décrivent le scénario?
    • Eventuellement, quelles sont les différentes thématiques abordées (type de jeux, situations récurentes...)
  • Quelles parties du document décrivent les graphismes, la bande son, la jouabilité?
    • On fait l'hypothèse que chaque domaine contient un vocabulaire spécifique.

Une telle segementation ouvre effectivemnet des possibilités de valorisation du contenu (avec notamment le résumé automatique). Nous proposons les étapes suivantes:

  1. Apprentissage des thèmes présents dans un corpus documentaire
  2. Projection de nouveaux documents dans cet espace: input = texte, output = distribution de probabilités sur les thèmes
    • Ensemble du document
    • Par paragraphe
    • Par phrase
  3. Mise en place de la procédure de segmentation
    • Quels seuils mettre en place pour caractériser un changement?
  4. Construire un résumé par extraction de phrase
    • Réfléchir à des critères: faut-il des phrases caractéristiques d'un domaine ou de tous?
    • Maximiser la couverture des thèmes et la diversité des phrases

Apprentissage non-supervisé sur le corpus jeux-vidéo (DEFT 2007)

Récupération du corpus

Le corpus jeux vidéos de la campagne DEFT 2007 est disponible en local à l'adresse: lien vers la page générale de chargement des données.

En bas de la page, un script permet de charger les données.

Apprentissage de l'algorithme LDA

Nous utiliserons l'implémentation de LDA de gensim. Les pré-traitements sont décrits ici (partie 2). Attention à bien utiliser nltk pour supprimer les stopwords. Il est conseillé de bien filtrer le corpus car le clustering est sensible aux bruits.

Le tutoriel LDA est disponible ici

Application sur les données de test

L'application d'algorithmes de clustering sur des données de test n'est pas toujours facile à justifier du point de vue théorique... Mais c'est un usage classique en pratique. Notre but est de segmenter les données de test du corpus jeux vidéos.

Le tutoriel précédent (lien) explique clairement comment appliquer LDA sur de nouveaux documents (c'est vraiment simple).

Caractérisation des segements et détection des ruptures

En prenant du recul par rapport à la tâche considérée, on se rend compte que la segmentation implique un marquage thématique au niveau des paragraphes ou des phrases... Il faut donc:

  • Extraire les phrases ou les paragraphes (usage de split + expressions régulières)
  • Transformer ces nouvelles unités de texte en sacs de mots
  • Extraire les thématiques à l'aide du modèle appris

A partir de quand peut-on parler de rupture thématique? Définir différents critères. En notant \theta le vecteur thématique d'une unité textuelle

  • Seuil sur \|\theta_t - \theta_{t-1}\| > \tau
  • Changement de thème dominant: \arg\max \theta_t \ne \arg\max \theta_{t-1}
  • ...

Résumé automatique

Le résumé automatique présente plusieurs points communs avec la problématique de la segmentation. Le but de cette tâche est d'extraire quelques phrases permettant de comprendre l'ensemble du document ou du corpus cible.

  • Il s'agit d'une tâche très dure à évaluer, la qualité est très subjective
  • Le lien vers la distribution thématique est important et les critères de sélection demandent de l'imagination
    • faut-il prendre les phrases qui couvrent tous les domaines?
    • des phrases très caractéristique de l'un des domaines en particulier?

Le résumé ajoute des contraintes de non-redondance de l'information: l'idée est d'éviter de sélectionner deux fois la même phrase (même si elle est très pertinente, une fois suffit).

Proposer un système de résumé automatique par extraction de phrase et juger (subjectivement) les résultats obtenus.

Reflexion et discussion sur la structuration des documents

Dans ce corpus, les documents sont très structurés... Chaque paragraphe joue un rôle (surtout le dernier) et il serait intéressant de retrouver ces rôles dans l'extraction thématique. De ce point de vue, l'apprentissage d'un modèle sur les documents entiers est sans doute une erreur, il serait plus intéressant de séparer les documents du corpus d'apprentissage en paragraphes avant l'apprentissage du modèle. ce faisant, l'hypothèse implicite devient: 1 paragraphe = 1 thème au lieu de 1 document = 1 thème.

On va donc être capable d'extraire les thèmes spécifiques à chaque paragraphe... Il faudra probablement augmenter le nombre de thèmes considérés.

Parsing et pré-traitements

Les pré-traitements jouent un role important sur les performances des systèmes considérés... N'hésitez pas à jouer dessus et à aller voir du coté de coreNLP pour filtrer certaines informations et faire de la lemmatisation.

Soit directement en python, soit en utilisant coreNLP (éventuellement à travers un wrapper python). Coté wrapper, le suivant est particulièrement efficace (et simple d'accès): https://bitbucket.org/torotoki/corenlp-python