Unitex/GramLab est une suite logicielle libre, multiplateforme, multilingue, fondée sur des dictionnaires et des grammaires pour l'analyse de corpus. Les versions de Unitex/GramLab sont disponibles ici. Le code source est hébergé sur GitHub.
Cette page décrit plusieurs projets proposés aux étudiants pour s'initier au traitement automatique des langues (TAL), à la programmation et au développement de logiciels open source tout en travaillant simultanément sur l'amélioration de Unitex/GramLab. Toute personne est invitée à participer en tant que mentor ou à soumettre de nouveaux projets.
Le but de ce module est de comparer deux ensembles d'annotations.
- Exporter les deux jeux d'annotations vers un format standoff personnalisé (C++ | YAML or CSV)
- Aligner et comparer efficacement les annotations (C++)
- Compter le nombre d'annotations qui sont : Correctes, Manquantes, des Faux positifs, Partiellement correctes (C++)
- Calculer quelques métriques sur les "matches": valueurs micro et macro de précision, de rappel et de F-mesure (C++)
- Intégrer le module dans l'IDE GramLab (Java)
Note: Il y a quelques années, un ancien étudiant a développé un script Perl intitulé SBDiffTool, un outil de visualisation des différences de frontière de phrases pour Unitex. Peu de temps après, un autre étudiant a développé plusieurs scripts Perl (CiteExtract, CiteDiff, CiteEval) pour comparer des ensembles d'annotations, l'un produit par Unitex l'autre étiqueté manuellement par un humain. Ces scripts, développés pour une classe d'annotations très spécifiques, pourraient servir de point de départ pour créer un outil plus flexible et plus intégré.
Mentor: Cristian Martinez
Ce projet a été développé dans le cadre du programme GSoC'16 par Mukarram Tailor de l'Institut de Technologie indien Mandi. Le rapport final est disponible ici.
Nous devons integrer les deux interfaces graphiques de développement de Unitex/GramLab: l'interface Classique (Unitex.jar) et celui orinté projet (GramLab.jar):
- Classifier les fonctionnalités en fonction de leur accessibilité dans chacun des IDE
- Identifier et supprimer les dépendances inutiles de GramLab.jar vis à vis d'Unitex.jar
- Identifier et supprimer les différences entre les deux IDE
- Séparer le code selon qu'il est appelé par GramLab.jar ou par Unitex.jar only
- Créez un assistant de bienvenue pour permettre aux utilisateurs de configurer un nouveau projet et de sélectionner le point de vue (les actions visibles et les vues dans une fenêtre) qu'ils souhaitent utiliser: classique ou orienté projet
IDE Classique (Unitex.jar)
IDE Orienté Projet (GramLab.jar)
Mentor: Cristian Martinez
MultiFlex est un module multilingue compatible Unicode pour la flexion automatique des unités multi-mots (MWU). Il s'agit notamment de la création de dictionnaires morphologiques de MWU. Il met en œuvre un formalisme fondé sur l'unification pour la description du comportement flexionnel des MWU ce qui suppose l'existence d'un module pour la morphologie flexionnel des mots simples. Au cours des dernières années, MultiFlex a évolué indépendamment d'Unitex. L'objectif de ce projet est d'améliorer son implementation dans Unitex en intégrant ces volutions successives.
- Mentor: Agata Savary
Un gestionnaire de packages est un outil qui facilite l'installation, la mise à niveau, la désinstallation, la configuration et la gestion des packages. Les gestionnaires de packages populaires à niveau d'application sont:
- APM for Atom
- Leiningen for Clojure
- NPM for Node
- CPAN for Perl
- Composer for PHP
- Easy_install for Python
- Gems for Ruby
- Bower for the web
- More here
Nous souhaitons fournir à Unitex un gestionnaire de packages pour les ressources linguistiques, c'est-à-dire un outil pour installer, mettre à niveau et désinstaller des dictionnaires, des grammaires ou un groupe de Ressources liées à une langue
Mentor: Cristian Martinez
GATE est une infrastructure open source pour le développement et le déploiement de composants logiciels qui traitent le langage naturel. Pour ce projet, nous cherchons à étendre Unitex/GramLab pour inclure les fonctions suivantes :
- Une fonction qui exporte le corpus vers GATE avec la délimitation des phrases et des tokens
- Une fonction qui exporte le corpus annoté XML vers GATE
- Une fonction qui importe le corpus GATE vers Unitex/GramLab
- Une boîte de dialogue Unitex qui prépare l'apprentissage supervisé avec le module externe d'apprentissage de GATE
Mentor: Anubhav Gupta
Le programme Locate applique une grammaire à un texte et construit un index des occurrences trouvées. Nous souhaitons adapter Locate sur les treebanks
- Un module qui représente un treebank sous la forme d'un automate acyclique (Chaque nœud interne d'un arbre est représenté par une transition qui contourne la séquence dominée par le noeud)
- Une variante du module de recherche qui fonctionne sur des treebanks représentés de cette façon
Mentor: Matthieu Constant
Co-mentor: Patrick Watrin
Ce projet est développé dans le cadre du programme GSoC'16 par Aleksandra Chashchina de la National Research University Higher School of Economics, de Moscou. Le rapport final est disponible ici.
TreeCloud est un outil de visualisation de logiciel gratuit qui affiche les mots les plus fréquents d'un texte en tant que nuage arboré. Un nuage arboré est une extension d'un tag cloud, dans lequel les mots sont situés autour d'un arbre représentant la proximité à laquelle ils apparaissent dans le texte, et où des attributs comme la taille et la couleur sont utilisés pour refléter la fréquence du mot.
Le but de ce projet est d'intégrer une visualisation des nuages arborés pour les occurrences présentées dans la fenêtre de concordance de l'ID Unitex/GramLab (voir le Manuel utilisateur p.89). Le projet consistera principalement à:
- Comprendre le module Concord d'Unitex et les fichiers de concordance produits par Unitex.
- Porter de Python (TreeCloud) à Java (Unitex/GramLab IDE) les fonctions pour calculer la distance de co-occurrence entre les paires de mots.
- Intégrer ou ré-implémenter en Java un algorithme de reconstruction d'arborescence à partir des distances de co-occurrence entre des paires de mots; -Intégrer ou ré-implémenter en Java un algorithme de visualisation d'arbre;
- Améliorer la visualisation de l'arbre pour permettre aux utilisateurs de revenir facilement au texte source et de visualiser le contexte d'occurrence d'un mot spécifique.
Liens utiles
- Gambette, P., & Véronis, J. (2010). Visualising a text with a tree cloud. In Classification as a Tool for Research (pp. 561-569). Springer Berlin Heidelberg (https://hal.archives-ouvertes.fr/lirmm-00373643v2/en/).
- Site web de TreeCloud: http://www.treecloud.org
- Code source de TreeCloud: https://github.com/PhilippeGambette/treecloud
- Tracer des arbres phylogénétiques: http://adamzy.github.io/PhyloPlot/
Mentor: Philippe Gambette
Mentor: Cristian Martinez
Unitex/GramLab comprend deux IDE Java, l'IDE classique (Unitex.jar
) et l'IDE orienté projet (Gramlab.jar
).
Au cours de la GSoC'16, un étudiant (voir PRJ-02 au-dessus) nous a aidé à déployer une architecture basée sur les plugins pour intégrer les deux IDE dans un nouveau qui présente les deux perspectives: Classique et orienté projet. Son rapport final est disponible ici
Les plugins sont construits avec PF4J, un sytème léger de plugins open-source pour Java, avec des dépendances minimales et facilement extensibles. Les plugins sont distribués dans les fichiers ZIP avec toutes les dépendances d'exécution regroupées, et peuvent être installés sans difficulté en les copiant dans le dossier App/plugins
.
L'objectif de ce projet est de poursuivre l'intégration des deux IDE. La liste des tâches proposées est:
- Migrez les fonctionnalités principales en tant que plugins (voir ci-dessous)
- Ajouter une fonctionnalité pour convertir un projet d'une perspective à l'autre
-
Créer une interface graphique pour le gestionnaire de plugins (voir l'image ci-dessous)
- Configurer et déployer un registre de plugins en ligne
Quelques fonctionnalités de base à convertir en plugins:
- Visualisation de Concordance comme illustré dans le Manuel de l'Utilisateur, Fig. 4.8.
- Visualiseur de dictionnaire comme illustré dans le Manuel de l'utilisateur, figure 3.2.
- Éditeur de graphe tel qu'indiqué dans le Manuel de l'utilisateur, section 5.2.
- Exportateur de graphes tel que décrit dans le Manuel de l'utilisateur, section 5.4.
- Gestionnaire de plugins, une interface utilisateur pour gérer les plugins.
- Transcoder comme illustré dans le manuel de l'utilisateur, figure 2.3.
- Xalign comme décrit dans le Manuel de l'utilisateur, chapitre 10.
- Treecloud, pour la visualisation sous forme de nuages arborés des concordances d'Unitex.
Tâches pour la période de cautionnement communautaire :
- Reproduire et résoudre un problème sur le PR #52
- Rebaser le PR # 52 avec les dernières modifications sur le master
- Demandez aux développeurs de revoir le PR # 52 puis de le fusionner au master
- Rebaser le PR #53 avec les derniers changements sur master
- Demandez aux développeurs de revoir le PR # 53 puis de le fusionner au master
-
Ajoutez une fonction "Se souvenir de moi" dans la boîte de dialogue de sélection de la perspective (voir la sélection de l'image GramLab Perspective ci-dessous)
More info:
Mentor: Cristian Martinez
Unitex intègre un masque lexical appelé TDIC qui "matche" n'importe quel token étiqueté dans le texte. La version Unitex/GramLab 3.1beta a introduit un graphe de généralisation d'étiquetage qui "matche" le token désigné par l'utilisasateur dans le texte, puis recherche les occurrences non étiquetées du token. Le graphe de généralisation de l'étiquetage est trop restrictif et fonctionne uniquement dans CasSys.
La proposition est de créer un nouveau masque lexical, UDIC, afin de combiner le fonctionnement de TDIC et le graphe de généralisation de d'étiquetage.
Ce masque lexical doit être écrit avec constraintes c'est-à-dire que <UDIC> n'est pas autorisé. On n'accepte pas non plus les négations (! ). Ce masque recherchera des instances non étiquetées d'un token défini par des contraintes.
Supposons le token étiqueté suivant: {TTT, LLL.CCC} , pour "matcher" toutes les instances non étiquetées de TTT la syntaxe est & lt; UDIC + CCC & gt;
Mentor: Anubhav Gupta
Unitex a une fonction pour convertir l'automate du texte au format 'POS list' (FST-Text dialog box, Table pane, 'Export all text as POS list' button).
Le projet consiste à mettre en œuvre la conversion inverse dans le cas où toute ambiguïté lexicale a été supprimée du format 'POS list'.
Cette fonction a été suggérée par les utilisateurs qui suppriment manuellement l'ambiguïté lexicale des corpus, mais qui font une partie de cette révision, en format 'POS list'. Ils veulent pouvoir convertir le corpus résultant au format FST-Text, afin de pouvoir effectuer des recherches ultérieures.
Mentor: Eric Laporte
Actuellement, les boîtes dans l'automate du texte peuvent être modifiées ou supprimées manuellement afin de réviser le marquage du texte, mais il serait utile d'ajouter de nouvelles boîtes avec de nouvelles analyses. La partie difficile est de traiter le cas où des parties d'un mot sont étiquetées séparément.
Cette fonction a été suggérée par les utilisateurs qui suppriment l'ambiguïté lexicale des corpus manuellement.
Mentor: Eric Laporte
Actuellement, la fonction 'Exporter tous les chemins du graphe' (dans le menu FSGraph> Tools) liste les chemins d'un graphe et les écrit dans un fichier.
Si le graphe est un graphe-dictionnaire morphologique (manuel, section 3.8.4), il serait utile d'étendre cette fonction afin de créer un traitement supplémentaire des masques lexicaux dans le graphe. À chaque occurrence d'un masque lexical, la nouvelle fonction recherchera dans les dictionnaires en mode morphologique les entrées qui satisfont le masque, et les substituera au masque. La liste qui en résulte sera une liste de formes contenant des informations lexicales. Une telle liste de formes peut être convertie en un dictionnaire au format DELAF.
Cette fonction serait utile pour certaines langues dans lesquelles la morphosyntaxe a été codée avec des graphes-dictionnaires morphologiques (MDG). En malgache et en arabe, par exemple, les formes de mots décrites dans les MDG sont en nombre fini et ne donnent pas lieu à une explosion combinatoire. Il serait intéressant de les générer dans un dictionnaire complet, de sorte que Unitex/GramLab puisse traiter la langue comme des langues au sytème flexionnel moins riche tels que l'anglais.
Mentor: Eric Laporte
LexiMir, anciennement ILReMaT, est un gestionnaire de dictionnaire open-source créé en C # au Language Technology Group de l'Université de Belgrade (Krstev et al., 2004; Krstev et al., 2013). Le projet consiste à réécrire LexiMir en Java et à l'intégrer dans Unitex/GramLab.
LexiMir a été conçu pour des tâches de gestion de dictionnaire non implémentées dans Unitex/GramLab.
Mentor: Eric Laporte
Si vous avez des questions, n'hésitez pas à envoyer un message à la liste de diffusion des développeurs ou sur le forum des utilisateurs.