Sujets des projets M1 LI - 2016-2017

Résolution d'anaphores

Il s'agit de mettre en œuvre un algorithme de résolution de coréférence à base de règles, publié dans les années 2010, et intitulé Stanford's Multi-Pass Sieve Coreference Resolution System. Le projet consiste à réimplémenter cet algorithme pour le français et à le faire tourner sur le French Tree Bank (corpus arboré). Le projet comporte trois phases distinctes:

  1. La recherche des "mentions" (groupes nominaux ou pronoms clitiques) entre lesquelles il faut établir une co-référence. Les emplois non référentiels du pronom de 3e personne il (il explétif) seront déjà distingués.
  2. La résolution de co-référence proprement dite.
  3. L'évaluation, qui rend nécessaire une phase d'annotation manuelle d'un (sous-)corpus du FTB.

Références

  • Voir la page du groupe "coréférence" de Stanford, avec plusieurs articles pertinents.
  • Sur les pronoms impersonnels en français: Danlos L., ILIMP : Outil pour repérer les occurrences du pronom impersonnel il, in Actes de TALN'05, Dourdan. [pdf]
  • Sur le FTB: Page d'information

Rendu minimal

Le rendu minimal attendu pour ce projet comprend:
  • Une implémentation opérationnelle de l'algorithme de stanford tournant sur l'ensemble du ftb en un temps raisonnable en faisant des hypothèses simplificatrices sur la detection des mentions ;
  • L'annotation manuelle selon un schéma d'annotation pertinent d'un sous-corpus du FTB comportant plusieurs centaines de mentions
  • Une mesure de la performance du système et une analyse d'erreurs.
On appréciera en plus :
  • Une version plus sophistiquée de la recherche de mentions (en particulier pour les groupes nominaux enchâssés);
  • Une sortie de l'algo sous forme d'un fichier xml avec les annotations en co-référence
  • ...
Responsable(s)
Pascal Amsili et Olga Seminck
Difficulté
moyenne
Groupe
2 personnes

Moteur de recherche

L'expansion de requête est une technique employée par des moteurs de recherche (cf. sujet moteur de recherche en L3). Elle consiste à ajouter des termes à une requête, voire à remplacer celle-ci. L'objectif est de retourner à l'utilisateur des documents qu'il n'aurait pas trouvé avec sa requête initiale (exemple : la requête "voiture" ne permettra pas de trouver les documents ne contenant que le terme "automobile", qui sont pourtant pertinents).

Le projet consiste en la mise en place d'un tel système en employant différentes méthodes, parmi celles-ci :

  • Expansion par synonymie, hyperonymie.
  • Expansion morphologique (ajout des autres formes fléchies des lemmes des termes de la requête)

Le programme devra être capable, pour une requête donnée, de proposer de nouvelles requêtes fondées sur les heuristiques présentées ci-dessus. Une évaluation du système d'expansion devra être réalisée, nécessitant de comparer les résultats de requêtes avec et sans expansion (on fournit des données d'évaluation, i.e. un corpus de requêtes avec documents réponses attendus.)

Responsable
Marie Candito
Groupe
2 personnes
Difficulté
Facile à moyen

Analyse syntaxique par transitions

De nos jours, les méthodes d'analyses syntaxiques les plus rapides relèvent du paradigme de l'analyse par transitions. Dans ce paradigme, un arbre est construit par une séquence d'actions. Différent systèmes de transition permettent de prédire des arbres en constituants (shift-reduce) ou des arbres en dépendances (arc-eager, Nivre, 2003).

On vous propose d'implémenter un analyseur syntaxique pour le français dans le formalisme de votre choix (constituants ou dépendances). Le projet s'organisera autour de différents modules qui devront interagir:

  • Prétraitement des arbres (mise en forme normale de Chomsky, cas des constituants uniquement)
  • Système de transitions et recherche de la meilleure séquence
  • Extracteur de traits et classifieur pour scorer les actions
  • Évaluateur

Dans la version de base, on utilisera un perceptron moyenné simple (local). À partir de là, plusieurs pistes d'améliorations pourront être explorées:

  • Passage à un perceptron structuré avec mise à jour des poids prématurés (early update, Collins 2002) et recherche par faisceau (beam search)
  • Pile structurée en arbre (Goldberg et al. 2013)
  • Système de transitions pour les arbres non-projectifs
  • etc.

Références:

Responsables
Marie Candito / Maximin Coavoux
Groupe
2 personnes
Difficulté de la version de base
Facile à moyen
Langage
Python ou Java

Thésaurus distributionnel

Un thésaurus distributionnel est un dictionnaire dont chaque entrée (typiquement un couple lemme / catégorie) est associée à une liste "voisins" distributionnels (à savoir des mots qui apparaîssent fréquemment dans les mêmes contextes), chacun avec un score mesurant la force de l'association.

Ce type de thésaurus se montre extrêmement utile (comme complément ou même comme substitut à une ressource statique telle que Wordnet) pour de nombreuses tâches de TAL, car il permet de généraliser les données lexicales. Par exemple en analyse syntaxique, si on a observé dans un corpus que le rattachement de "couper" et de "avec un couteau" est fréquent, et que l'on sait par ailleurs que "couteau" a pour voisin distributionnel "canif", alors on pourra en déduire que rattacher "avec un canif" à "couper" est plausible. La construction d'un thésaurus distributionnel comprend trois grandes étapes: (i) l'extraction et le prétraitement d'un corpus de grande taille (plusieurs millions de mots), (ii) l'identification des contextes associés à chaque mot (ces contextes peuvent être "linéaires", comme par exemple "le premier mot à droite est 'canif'", ou "le deuxième mot à gauche est 'souvent'", ou bien syntaxiques, comme par exemple "a pour objet direct 'canif'"), et (iii) un calcul de similarité entre contextes. Ce projet mettra donc en oeuvre cette procédure pour la construction d'un thésaurus automatique du français. La version de base utilisera un petit corpus (par ex. 50000 phrases), et n'utilisera que les contextes linéaires. Les deux pistes d'amélioration sont d'une part d'utiliser des contextes syntaxiques et d'autre part de pouvoir traiter un corpus de 100M de mots qui vous sera fourni déjà taggé et analysé syntaxiquement en dépendances.

Il faudra utiliser des modules de manipulation de matrices (comme numpy en python), pour calculer la similarité de paires de lemmes, pour les X lemmes les plus fréquents.

Pour aller plus loin, il s'agit de faire le lien avec la technique plus récente de construction de vecteurs de mots par réseaux de neurones à plusieurs couches (word embeddings): vous pourrez présenter les principes de l'algorithme "skip-gram with negative sampling", et la comparaison des 2 types de constructions (Levy et al. 2015).

Références:

  • Automatic construction of distributional thesauri for French Enrique Henestroza Anguiano and Pascal Denis, TALN 2011 (pointeur vers références)
  • Improving Distributional Similarity with Lessons Learned from Word Embeddings. Omer Levy, Yoav Goldberg, and Ido Dagan. TACL 2015.
  • Responsable(s)
    Marie Candito
    Difficulté version de base
    Moyenne
    Groupe
    2 personnes
    Langage
    Python ou Java

    Réseau de neurones pour l'étiquetage en parties du discours

    Ce projet consiste en une initiation aux méthodes de type deep learning (réseaux de neurones profonds) qui sont devenues standards en traitement automatique des langues.

    Dans un premier temps, on vous propose d'implémenter un réseau de neurones simple à propagation avant basé sur l'abstraction du graphe de calcul (Goldberg, 2015) et une méthode d'entraînement par descente de gradient stochastique (SGD).

    Dans un second temps, vous testerez le réseau sur une tâche d'étiquetage morphosyntaxique de type fenêtre de mots (window-based) et comparerez les résultats avec un classifieur linéaire (par exemple un perceptron).

    Références

    Responsable(s)
    Maximin Coavoux
    Difficulté
    Difficile
    Groupe
    2 personnes
    Langage
    Python (numpy) ou Java

    Repérage des "il" explétifs

    Il s'agit de construire un module qui indique pour toute occurrence du clitique il dans un texte, s'il s'agit d'un il explétif (comme dans il pleut ou il est arrivé 3 personnes) ou d'un il référentiel (il mange du chocolat). Cette tâche est utile comme préalable à la résolution de coréférence, ou bien pour repérer les arguments canoniques dans les daithèses impersonnelles (par ex. ds 'il est arrivé 3 personnes', il faut analyser que le sujet canonique de arriver est 3 personnes)

    L'approche proposée est l'apprentissage supervisé : un corpus sera fourni où chaque occurrence de il a été manuellement classée en explétif versus référentiel. Il s'agira donc de mettre en place un classifieur binaire (par ex. un perceptron).

    La complexité réside essentiellement dans l'extraction des traits pour le classifieur linéaire utilisé. Dans la version de base, les traits utilisables seront seulement les mots du contexte de l'occurrence du il, ainsi que leurs parties du discours. Une version plus sophistiquée pourra utiliser la structure syntaxique de la phrase. L'enjeu est alors de proposer un module générique d'extraction de traits dans un arbre syntaxique.

    Possibilité d'utiliser un perceptron fourni (dans un premier temps), puis utiliser son propre perceptron (cf. TD du cours Apprentissage automatique). Possibilité d'utiliser des modules comme scikit-learn (avantage de pouvoir tester plusieurs types de classifieurs).

    Responsable
    Marie Candito
    Groupe
    2 personnes
    Difficulté de la version de base
    Moyen à difficile (avoir compris le perceptron, l'extraction de traits)

    Tagging et reconnaissance de mots composés par classification structurée

    Il s'agit de traiter conjointement le problème de l'étiquetage morpho-syntaxique et celui de la reconnaissance de mots composés. En partant d'un texte segmenté en phrases et en tokens, le module à réaliser devra prédire quelles séquences de tokens représentent en contexte un mot composé, et pour chaque mot (simple ou composé), quelle est sa catégorie morpho-syntaxique en contexte.

    L'intégration de la tâche de reco des composés se fait en utilisation la notation "BIO" (ou plutôt BI uniquement) : chaque tag est constitué d'une catégorie morpho-syntaxique, plus un B (pour Begin) ou un I (pour Inside), selon qu'il s'agit du premier (et éventuellement unique) composant d'un mot, ou bien d'un composant interne ou dernier d'un mot composé. Par exemple

    Je/B_Cl mange/B_V des/B_Det pommes/B_N de/I_N terre/I_N parce/B_Cs que/I_Cs c'/B_Cl est/B_V délicieux/B_Adj B/PONCT.

    "Je" a la catégorie "Cl", et est le premier et unique composant du mot "Je", d'où le tag "B_Cl". "de" est un composant interne du composé "pomme de terre", qui a la catégorie "N", d'où le tag "I_N".

    La tâche se ramène ainsi à une tâche d'étiquetage séquentiel, pour laquelle un perceptron glouton peut être utilisé.

    Une amélioration peut consister à intégrer des lexiques de mots composés sous forme de traits (par exemple un trait booléen "ce token est un composant potentiel de composé nominal, étant donné le contexte du token"). Il faut alors préalablement à l'extraction de traits, rechercher dans la phrase toutes les occurrences potentielles (et ambigues) des mots composés d'un lexique.

    Possibilité d'utiliser un perceptron fourni (dans un premier temps), puis utiliser son propre perceptron (cf. TD du cours Apprentissage automatique). Pour aller plus loin : possibilité de comparer l'approche gloutonne avec une approche par faisceaux (beam search) voire avec une approche à optimisation globale (Viterbi).

    Références pour la version de base: cours méthodes probas , cours Apprentissage automatique

    Références pour version plus sophistiquée:

    Sur le perceptron structuré (=à optimisation globale) : Michael Collins. 2002. Discriminative training methods for hidden markov models: Theory and experiments with perceptron algorithms. In Proceedings of the Conference on Empirical Methods in Natural Language Processing (EMNLP)
    Sur les traits spécifiques à l'intégration de dictionnaires externes de mots composés (section 3) : Matthieu Constant, Anthony Sigogne. MWU-aware Part-of-Speech Tagging with a CRF model and lexical resources. ACL Workshop on Multiword Expressions: from Parsing and Generation to the Real World (MWE'11), 2011, Portland, Oregon, United States. pp.49-56, 2011
    Responsable(s)
    Marie Candito
    Difficulté
    Difficile
    Groupe
    2 personnes
    Langage
    Python ou Java

    Amélioration d'un lexique de représentations vectorielles à l'aide de ressources sémantiques

    On vous propose d'implémenter et d'évaluer sur le français (ou sur la langue de votre choix) l'algorithme de retrofitting proposé par Faruqui et al. (2015). Cet algorithme vise à utiliser les connaissances issues d'une ressource sémantique (liens de synonymie, d'hyperonymie, etc) pour améliorer un lexique de représentations vectorielles distributionnelles de mots.

    Vous disposerez de lexiques de représentations vectorielles (pour l'anglais et le français), entraînés sur wikipedia à l'aide du modèle skip-gram de Mikolov et al. (2013) et pourrez utiliser les ressources sémantiques de votre choix (par exemple le WOLF pour le français, PPDB / wordnet pour l'anglais). L'algorithme devra être évalué sur une tâche de similarité lexicale, puis sur une tâche d'analyse de sentiments (sur un corpus de critiques de films).

    Références

    Responsable(s)
    Maximin Coavoux
    Difficulté
    Moyen
    Groupe
    2 personnes
    Langage
    Java