Sujets des projets M1 LI - 2017-2018

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 ces deux tâches peut être vue comme du tagging, en utilisant la notation "B-I-O" (Begin Inside Outside), en fait ici Begin/Inside suffisent: 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). Possibilité d'utiliser de l'apprentissage profond (réseau de neurones à couches cachées)

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)
Timothée Bernard
Difficulté de la version de base
Moyen
Groupe
2 personnes
Langage
Python ou Java

Traduction automatique via une grammaire d'arbres adjoints synchrone

Dans une grammaire d'arbre adjoint (TAG pour « Tree Adjoining Grammar », Joshi et Schabes, 1997) chaque mot est représenté par un arbre, dont les propriétés déterminent le type de constructions syntaxiques dans lesquelles il peut apparaître.

Pour former une phrase, plusieurs de ces arbres peuvent s'assembler à l'aide de deux opérations :

  • par une substitution, un arbre peut venir remplacer une feuille d'un autre arbre ;
  • par une adjonction, un arbre peut venir s'inserer à l'intérieur d'un autre.
Ces deux opérations permettent de modéliser la distinction entre argument et modifieur, et offrent aux TAG une expressivité supérieure à celle des grammaires hors-contexte (CFG).

Les TAG synchrones (STAG, Shieber Schabes, 1990) étendent le formalisme des TAG en représentant chaque mot par une /paire/ d'arbres, pour lesquels chaque substitution ou adjonction doit se faire en parallèle (ou encore, de manière /synchrone/). En conséquence, si le premier arbre de chaque pair correspond à la syntaxe du français et le second à celle de l'anglais, l'analyse d'une phrase dans l'une des deux langues génère automatiquement sa traduction dans l'autre langue, avec l'arbre syntaxique correspondant (Abeillé et Al., 1990).

Le projet consiste en la conception d'un système de traduction reposant sur le principe énoncé ci-dessus. Il s'articule autour de deux modules :

  • la génération d'une grammaire STAG ;
  • l'implémentation d'un algorithme d'analyse syntaxique en (S)TAG.

Références

Responsable(s)
Timothée Bernard
Difficulté
Moyen à difficile
Groupe
2 personnes
Langage
langage au choix (en parler à l'encadrant)

Identification de cadres sémantiques

Le projet FrameNet (Baker, 98) est une implémentation pour l'anglais de la Frame Semantics (Fillmore, 82) où des situations prototypiques (des "cadres sémantiques") sont modélisées (déplacement, achat, causalité...) et un lexique de prédicats pouvant évoquer ces situations est construit. Par exemple, le cadre "Causation" peut être évoqué en français par causer, résulter, parce que, conséquence, du fait de, etc....

Des annotations en corpus de ces situations comprennent le marquage de l'élément évoquant la situation, ainsi que des expressions linguistiques jouant un rôle dans la situation (participants, portant un rôle sémantique).

Un FrameNet du français est disponible, qui couvre les situations de type communication verbale, transactions commerciales, positions cognitives et causalité.

Il s'agit dans ce projet de réaliser la tâche d'identification des situations, sur les données FR: pour un ensemble fourni d'occurrences de mots, il faut assigner le bon cadre, certains mots bien sûr étant ambigus entre plusieurs cadres.

L'approche proposée est l'apprentissage supervisé : un corpus sera fourni d'occurrences associées à leur cadre. Il s'agit d'extraire des caractéristiques de chaque occurrence, et entraîner un classifieur. Les indices lexicaux pourront être des représentations distribuées (vecteurs de mots, word embeddings). Une première version peut être simplement un perceptron, et on pourra passer à d'autres classifieurs, voire réseau profond.

On pourra en particulier s'inspirer de (Hermann et al., 2014) pour la représentation vectorielle des occurrences.

Pour aller plus loin, on peut inclure la tâche de repérer les participants des cadres identifiés.

Responsable
Marie Candito
Groupe
2 personnes
Difficulté de la version de base
Moyen

Références

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, appelées en général "transitions", s'appliquant sur une "configuration", représentant une analyse partielle. Différents jeux de transitions permettent de prédire des arbres en constituants (shift-reduce) ou des arbres en dépendances (par exemple arc-eager, Nivre, 2003). Dans une approche par apprentissage automatique, le choix de la transition à appliquer à la configuration courante est fait par un classifieur, entraîné de manière supervisée.

Dans ce projet, il s'agira d'implémenter un analyseur syntaxique en dépendances, pour le français. Le projet s'organisera autour de différents modules qui devront interagir:

  • Analyse: application des transitions pour construire l'arbre
  • Apprentissage: entraînement d'un classifieur scorant les transitions applicable à une configuration
  • Partagé: Extraction des traits caractéristiques des configurations
  • É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:

  • Système de transitions pour les arbres non-projectifs
  • Oracle dynamique (Goldberg et Nivre, 2013)
  • Passage à un jeu de transitions permettant de construire des graphes bi-lexicaux (voir par ex. Ribeyre et al. 15)
  • autres types de classifieurs (réseau de neurones) etc.

Références:

Responsables
Marie Candito
Groupe
2 personnes
Difficulté de la version de base
Moyen
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)
Marie Candito
Difficulté
Moyen
Groupe
2 personnes
Langage
Python ou Java

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

Ce projet consiste en une implémentation complète d'un réseau de neurones profond. Si des librairies d'apprentissage profond assez "haut-niveau" existent aujourd'hui, une implémentation complète d'un réseau simple est une très bonne manière de maîtriser le sujet. Dans un premier temps, on vous propose d'implémenter un réseau de neurones à 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 et comparerez les résultats avec un classifieur linéaire (par exemple un perceptron).

Références

Responsable(s)
A décider
Difficulté
Difficile
Groupe
2 personnes
Langage
Python (numpy) ou Java

Facteurs pour l'assignation du genre des noms en français

En français, les noms inanimés reçoivent un genre grammatical qui est nécessairement en grande partie arbitraire: dans la mesure où le français ne possède qu'un masculin et un féminin (et pas de neutre), il ne peut pas y avoir de motivation sémantique forte pour qu'un nom inanimé reçoive l'un ou l'autre genre (cf. la table vs. le tableau). Cependant, on peut se demander si la répartition des noms dans les deux genres est totalement aléatoire, ou s'il y a des tendances remarquables. L'objectif de ce projet est d'explorer cette question, en répliquant l'étude de Dye et al. (2017) sur l'allemand.

La question de recherche est: quels facteurs influencent le fait que deux noms reçoivent le même genre en français?

La question sera abordée en utilisant un grand corpus annoté pour la morphosyntaxe. Il faudra:

  • construire une représentation distributionnelle des noms du corpus, à partir de word embeddings ou autre.
  • construire un modèle statistique (modèle linéaire généralisé, voire modèle additif généralisé) prédisant le fait pour deux noms d'avoir le même genre à partir de leur proximité distributionnelle et de leur fréquence dans le corpus.
  • analyser les résultats et en donner une interprétation linguistique.

Références

Responsable(s)
O. Bonami, H. Burnett et B. Crabbé
Difficulté
Moyenne
Groupe
2 personnes
Langage
Python ou java pour la préparation des données, et R pour la modélisation statistique