Projets de recherche et d'innovation technologique Master 2, Ingénierie linguistique, 2015-2016 Chaque projet est pour 3 ou 4 étudiants. Gemini Outil de comparaison de deux corpus annotés http://igm.univ-mlv.fr/~laporte/proj/gemini.pdf 1.1. Alignement des annotations d'un corpus par chaînes de Markov cachées (HMM), il est possible de proposer un autre algorithme. Création d'un fichier CSV qui liste les appariements trouvés (C/C++). 1.2 Calculs statistiques et présentation des résultats sous forme de tableaux (C/C++). 1.3. Interface graphique à intégrer à Unitex/GramLab (Java). Suivi : Eric Laporte, Philippe Gambette, Cristian Martinez Compétences : C/C++, Java, YAML, XML, algorithmes d'alignement, métriques de comparaison d'annotations Passerelle Interfaçage d'Unitex avec l'outil d'apprentissage supervisé de Gate, en vue d'extraction d'informations ou de classification L'objectif du projet est d'ajouter à Unitex/GramLab une fonctionnalité qui prépare un apprentissage supervisé avec Gate, à l'aide de corpus prétraités et annotés avec Unitex/GramLab. Les utilisateurs prévus sont des linguistes. Les principales fonctionnalités sont l'exportation et l'importation des corpus vers le format Gate (les fonctionnalités d'importation de Gate ne sont pas prévues pour un corpus à la fois tokenisé et balisé). Il n'est pas nécessaire d'inclure du code de Gate dans Unitex. 2.1. Etude de l'existant : balisage XML ; installation d'Unitex/GramLab et de Gate ; format de fichier Unitex/GramLab pour les corpus, documenté dans le manuel ; format de fichier Gate pour les corpus annotés, spécifié par GateDocument.dtd http://grepcode.com/file/repo1.maven.org/maven2/uk.ac.gate/gate-core/8.1/gate/resources/creole/GateDocument.dtd et illustré par un document XML fourni comme modèle : http://igm.univ-mlv.fr/~laporte/proj/80jours-Gate.xml. 2.2. Développer un programme d'exportation de corpus vers Gate qui interprète le découpage en phrases et en tokens comme des annotations (C/C++). 2.3. Etendre le programme d'exportation au cas d'un corpus balisé en XML, pour qu'il interprète le balisage comme des annotations supplémentaires (C/C++). On fournit comme exemple un corpus balisé en XML par Unitex et correspondant au document XML du 2.1 : http://igm.univ-mlv.fr/~laporte/proj/80jours-Unitex.zip. Le programme devra : - vérifier dans le corpus de départ que les balises ouvrantes et fermantes se correspondent, - vérifier que le balisage satisfait aux contraintes qui doivent être respectées pour que l'apprentissage supervisé sous Gate soit possible ensuite (noms d'éléments), - ajouter des attributs f="v" aux éléments XML qui n'en ont pas. 2.4. Développer un programme d'importation depuis Gate qui traduit en balisage XML les annotations autres que phrases et tokens (C/C++). 2.5. Ajouter à l'IDE Unitex une fonctionnalité qui prépare un apprentissage supervisé avec le module externe Learning de Gate (Java). L'IDE devra ouvrir une boite de dialogue qui demande les paramètres de l'expérience et permet de les sauvegarder dans un fichier. Paramètres : - le répertoire dans lequel se fera l'expérience, - le chemin et le nom du corpus balisé, - le même corpus prétraité par Unitex mais avant balisage (par défaut le corpus courant), 1 - le type d'apprentissage (extraction d'informations ou classification). Une fois ces paramètres fixés, l'IDE permet de lancer l'exportation du corpus balisé, de créer le fichier de configuration au format voulu par Gate, et d'afficher les paramètres à utiliser pour appeler le module Learning. Après ces opérations, l'IDE permet de préparer l'application du modèle à un nouveau corpus prétraité par Unitex (par défaut le corpus courant), ce qui consiste à lancer les 3 mêmes opérations : exportation du corpus, création du fichier de configuration, affichage des paramètres à utiliser pour appeler le module Learning. 2.6. Tests : - exportation sous Gate d'un corpus non balisé et d'un corpus balisé - édition manuelle des annotations avec l'éditeur de corpus de Gate - apprentissage supervisé avec Gate, puis application du modèle obtenu à un corpus non balisé (2 expériences : extraction d'information, classification) - importation du corpus obtenu en XML - ouverture du corpus obtenu avec Unitex/GramLab Suivi : Eric Laporte, Philippe Gambette, Cristian Martinez Compétences : C/C++, Java, XML, Gate Bornage Intégration des deux IDE Java (Unitex et GramLab) du système Unitex/GramLab. 3.1. Classement des fonctionnalités suivant qu'elles sont accessibles depuis les deux IDE, uniquement depuis Unitex ou uniquement depuis GramLab. 3.2. Elimination de dépendances du code Java de l'IDE GramLab vers celui d'Unitex : certaines dépendances (souvent indirectes) de GramLab vers des classes d'Unitex sont inutiles, par exemple celles qui résultent de l'appel d'une méthode pour fermer des fenêtres qui n'ont pas été ouvertes, ou de l'appel de classes correspondant à des fonctionnalités non prévues et non voulues dans GramLab (exemple : TextAutomatonFrame). Vérifier si les dépendances sont justifiées par des fonctionnalités de GramLab, et sinon, adapter le code pour les éliminer. 3.3. Convergence de menus et boites de dialogue : certains menus et boites de dialogue sont différents entre les deux interfaces, par exemple les deux fenêtres de préférences. Vérifier si ces différences se justifient, et sinon, les faire converger. 3.4. Convergence d'actions : certaines actions déclenchées par le même menu sont différentes suivant l'IDE. Vérifier si ces différences se justifient, et sinon, faire converger le code. 3.5. Ensuite, séparer le code Java d'Unitex en deux parties suivant qu'elles sont invoquées par Gramlab ou non. Transformer le code invoqué par GramLab en une bibliothèque commune qui sera utilisée par les deux IDE. Chaque partie de code Java devra être soit commune, soit spécifique à une des deux IDE. Bonus : optimisation de la recherche des projets : dans GramLab, l'algorithme qui détermine à quel projet correspond un fichier donné parcourt toute l'arborescence des projets, alors que le fichier a une forte probabilité d'appartenir au projet courant. Adapter le code pour éviter les parcours inutiles. Suivi : Eric Laporte, Cristian Martinez Compétences : Java Autres Mise à jour de Multiflex dans Unitex La partie mots composés de Multiflex a évolué. L'objectif du projet est de répercuter les évolutions sur Unitex. Suivi : Eric Laporte, Agata Savary (auteur de Multiflex, Université de Tours). Compétences : C/C++ 2 Locate pattern sur corpus arboré L'objectif du projet est d'implémenter une variante du programme de construction de l'automate du texte d'Unitex, adaptée au cas où le texte code un corpus arboré, c'est-à-dire une séquence d'arbres. Le corpus arboré est sous forme linéarisée par parenthésage, sur le modèle du Penn Treebank. Le résultat du traitement sera un automate dans le même format que l'automate du texte classique. Les mots du texte seront représentés de la même façon que dans le programme classique, et le parenthésage sera remplacé par des transitions : chaque noeud interne de l'arbre devra être représenté par une transition qui court-circuite la séquence de mots dominée par le noeud. La fonctionnalité de recherche d'Unitex (Text > Locate pattern, LocateTfst) devra être applicable à cet automate dans les mêmes conditions que l'automate du texte classique. Les requêtes devront pouvoir contenir des masques syntaxiques (<NP>) en plus des masques lexicaux (<N>). Suivi : Eric Laporte, Matthieu Constant. Compétences : C/C++ 3