jeudi 20 mai 2010

Sélection d'articles de LREC'2010

En général avant chaque participation à un colloque, je sélectionne une série d'articles qui couvrent mes intérêts de recherche.
Par ailleurs depuis le début de l'année universitaire 2010, nous essayons toutes les trois semaines environ de faire un point biblio sur un colloque du moment. Chacun lit un article en prévision de la rencontre et éventuellement après un rapide tour de table des articles lus, si l'assistance le souhaite le présente pendant une dizaine de minutes. Ces réunions sont informelles, interactives et durent 30 à 45 minutes.

Autant faire partager ce travail. Parmi les thèmes qui m'intéressent il y a l'analyse du discours, les architectures de TAL et les outils d'analyse générique, et l'extraction d'information/connaissances.

J'essayerai d'être systématique sur le thème de l'analyse de discours.

Ci-dessous une première sélection issue de LREC'2010
  • 58 Nathanael Chambers and Dan Jurafsky A Database of Narrative Schemas
  • 330  Raffaella Bernardi, Manuel Kirschner and Zorana Ratkovic Context Fusion: The role of Discourse Structure and Centering Theory
  • 184  Sara Tonelli, Giuseppe Riccardi, Rashmi Prasad and Aravind Joshi Annotation of Discourse Relations for Conversational Spoken Dialogs
  • 336  Xuchen Yao, Irina Borisova and Mehwish Alam The PDTB XML: the XMLization of the Penn Discourse Treebank 2.0
  • 479  Amal Al-Saif and Katja Markert The Leeds Arabic Discourse Treebank: Annotating Discourse Connectives for Arabic
  • 481 Ioana Vasilescu, Sophie Rosset and Martine Adda-Decker On the role of discourse markers in interactive spoken question answering systems
  • 582 Stergos Afantenos, Pascal Denis and Philippe Muller Learning Recursive Segments for Discourse Parsing
  • 796  Markus Egg and Gisela Redeker How complex is discourse structure?
  • 820 Rui Wang and Caroline Sporleder Constructing a Textual Semantic Relation Corpus Using a Discourse Treebank
  • 935  Rashmi Prasad and Aravind Joshi Shallow Discourse Parsing: Exploiting Sentence Position and Paragraph Structure for Classifying Connectives and Identifying their Arguments




jeudi 22 avril 2010

Dans quel repertoire deposer ses ressources UIMA ?

Où déposer ses ressources ? Le post suit un rapport des répertoires de ressources UIMA existants.

Le CMU est un répertoire public. Il est possible de déposer/retirer des pears de 25 Mo maximum. Ceux-ci sont automatiquement vérifiés comme étant des pears. Cela marche avec Apache UIMA 2.3. Un service de dépot de ressources autres est indiqué mais ne semble pas fonctionner/ être disponible.

    Concenant le répertoire Apache, il est possible de déposer une contribution chez Apache moyennant le respect de certaines conditions et en suivant une certaine procédure.

    Les 3 répertoires suivants, DKPro, Julie lab, et U-Compare
    sont privés. On ne peut faire que de la récupération de l'existant.


    Le répertoire de uima-fr.org accueille indifféremment tout type de ressources (outils, composants, documentation, ...) dans différents formats. Il n'offre pour l'instant pas d'outil automatique de soumission et de gestion de ressoures et il convient de contacter les coordinateurs pour déposer une ressource.

    vendredi 16 avril 2010

    Repertoires de ressources UIMA (outils, composants, documentations)

    Un bref coup d'oeil sur les dépots de ressources UIMA existant dans le monde. J'en compte disponibles en Allemagne, au Royaume Uni, au Japon, aux USA et depuis peu en France.
    * Iryna Gurevych, Max Mühlhäuser, Christof Müller, Jürgen Steimle, Markus Weimer, and Torsten Zesch and. 2007. Darmstadt knowledge processing repository based on uima. In Proceedings of the First Workshop on Unstructured Information Management Architecture at Biannual Conference of the Society for Computational Linguistics and Language Technology, Tübingen, Germany.


    ** Udo Hahn, Ekaterina Buyko, Katrin Tomanek, Scott Piao, John McNaught, Yoshimasa Tsuruoka, and Sophia Ananiadou. 2007. An annotation type system for a datadriven nlp pipeline. In The LAW at ACL 2007 – Proceedings of the Linguistic Annotation Workshop, pages 33– 40. Prague, Czech Republic, June 28-29, 2007. Stroudsburg, PA: Association for Computational Linguistics.

    *** Yoshinobu Kano, Luke McCrohon, Sophia Ananiadou, and Junichi Tsujii. 2009. Integrated NLP evaluation system for pluggable evaluation metrics with extensive interoperable toolkit. In Proceedings of the Workshop on Software Engineering, Testing, and Quality Assurance for Natural Language Processing (SETQA-NLP 2009), pages 22–30, Boulder, Colorado, June. Association for Computational Linguistics.

    **** Nicolas Hernandez, Fabien Poulard, Matthieu Vernier, et Jérôme Rocheteau. 2010. Building a French-speaking community around UIMA, gathering research, education and industrial partners, mainly in Natural Language Processing and Speech Recognizing domains. To appear in LREC Proceedings 2010, Malta.

    vendredi 26 mars 2010

    Modifier le Build Path de votre projet Eclipse

    Le Build Path peut se définir à la création du projet
    1. Créer un nouveau Projet Java : File > New > Java Project > 
    2. Donner un Project Name et vérifier le JRE (>=1.5) > Next > Libraries (vous pourrez toujours modifier par la suite ces déclarations grâce au menu Properties de votre projet, voir ci-dessous)

     Par la suite, vous pouvez le modifier selon différentes alternatives
    1. Dans la vue Package Explorer cliquer droit sur
      1. la racine projet > 
        1. Properties > Java Build Path > Libraries
        2. ou Build Path > Configure Build Path > Libraries
      2. Referenced Libraries > Build Path > Configure Build Path > Libraries
    2.  Dans Libraries, vous pouvez ajouter les packages
      • soit par Add External Jar
      • soit par Variable qu'il vous faudra étendre voire définir le répertoire qu'elle désigne. Préférez cette démarche qui faciliter la portabilité du projet au sein de différents workspaces

    Créer un projet Eclipse pour le développement d'un composant UIMA

    Jérôme Rocheteau décrit en détail comment mettre en place un projet Eclipse pour le développement d'un composant UIMA en expliquant comment activer la gestion de dépendances vers les bibliothèques uimaj-core et uimaj-tools avec Maven.

    L'usage de Maven est utilisé par les gens d'Apache. Il est recommandé lorsqu'on fait du développement conséquent. Mais il requiert l'installation de plugin et un accès réseau au moins à la création pour la récupération des dépendances.

    Je détaille ici une approche sans Maven, en particulier l'étape de création du projet, l'ajout de la UIMA Nature (qui requiert elle aussi l'installation de plugins eclipse disponibles dans un sous répertoire de votre UIMA_HOME depuis la 2.3) ainsi que la déclaration manuelle les dépendances qui vont bien dans le projet Eclipse et la déclaration des répertoires qui peut être utilise à ajouter au build path.

    CREER UN PROJET ECLIPSE POUR LE DÉVELOPPEMENT D'UN COMPOSANT UIMA
    1. Créer un nouveau Projet Java : File > New > Java Project > 
    2. Donner un Project Name et vérifier le JRE (>=1.5) > Next > Libraries (vous pourrez toujours modifier le Build Path de votre projet Eclipse)
    3. Ajouter les dépendances uima-core, uima-tools, uima-cpe et uima-document-annotation présentes dans UIMA_HOME/lib :
      • soit par Add External Jar
      • soit par Variable qu'il vous faudra étendre voire définir le répertoire qu'elle désigne. Préférez cette démarche qui facilite la portabilité du projet au sein de différents workspaces
      • Cette manipulation n'est pas nécessaire quand vous utilisez Maven
    4. Finish
    5. Ajouter la UIMA Nature : Dans la vue Package Explorer cliquer droit sur le projet > Add UIMA Nature
    6. Ajouter les répertoires desc et resources au build path (Bouton droit sur les répertoires et Build Path >  Add to Build Path) 

      Construire une chaîne de traitement UIMA à partir de composants existants

      Mis à jour le 5 Janvier 2012

      Apache UIMA utilise le même type de fichier de description pour désigner un composant ou une chaîne de traitement. On peut d'ailleurs voir un composant comme une chaîne de traitement qui a minima ne compte qu'un seul composant à exécuter. Le fichier descripteur est
      • soit configuré comme primitif si il désigne un traitement élémentaire. La classe implémentant le traitement sera alors désignée.
      • soit configuré comme aggregate si le descripteur référence d'autres descripteurs de fichiers primitif ou aggregate.
      C'est de cette manière que l'on peut réaliser de l'encapsulation de traitement.

      Le lien suivant explique comment exécuter une chaîne de traitement existantes avec UIMA (en ligne de commande, par un GUI hors Eclipse, au sein d'Eclipse).

      Ces utilisations sont illustrées avec des descripteurs présents dans les exemples de code fourni avec UIMAJ. Dans le cadre de ce post nous allons utiliser des composants UIMA Annotator Addons, à savoir le
      • WhiteSpaceTokenizer qui découpe en mots, TokenAnnotation, et phrases, SentenceAnnotation, un texte fourni en entrée
      • SnowballAnnotator qui effectue une racinisation des TokenAnnotations et rajoute un trait stem aux TokenAnnotation
      • Tagger qui rajoute un trait posTag aux TokenAnnotation
      Le lien suivant explique comment installer les Apache UIMA Addons Annotators et Tools (en gros il s'agit de récupérer le binary des addons de la page http://uima.apache.org/downloads.cgi et de le désarchiver dans UIMA_HOME).

      Nous réaliserons la construction de notre chaîne à partir d'Eclipse qui offre, à travers ses plugins, les éditeurs de descripteurs qui nous facilitent la tâche.
      1. Créer un projet Eclipse pour le développement d'un composant UIMA 
      2. Rendre accessible à votre projet les jar des composants que vous souhaitez utiliser : 
        • ajouter dans votre build path les jars des composants des composants que vous souhaitez manipuler. Personnellement je le fais en étendant la variable UIMA_HOME et en parcourant le répertoire addons/annotator... mais cela suppose que vous ayez installer les addons dans le répertoire d'installation de UIMA.
          Les jars des addons contiennent en général les descripteurs qui permettent d'utiliser les composants. Le build path rend accessible "by name" les descripteurs... Cela est nécessaire pour spécifier par la suite à notre chaine de traitement quels sont les composants à utiliser.
          Vous n'avez pas de à placer les ressources de ces composants dans le répertoire resource, elles sont elles aussi accessible via le build path.
      3. Dans la vue Package Explorer cliquer droit sur le répertoire desc du projet > New > Other > UIMA > optez pour "Analysis Engine Descriptor File" > Donner lui un nom 
        • Astuce : je crée un sous-répertoire dans desc qui porte le nom du projet (cela aide à s'y retrouver lorsqu'il y a plusieurs des descripteurs définis dans un CLASSPATH). 
        • Astuce :  je spécifie le nom des descripteur d'Analysis Engine avec le suffixe AE pour les distinguer des descripteurs de Type System (suffixe TS) par exemple.
      4. Dans la vue Package Explorer cliquer droit sur le fichier descripteur que vous venez de créer > Open With > Component Descriptor Editor
      5. Sur l'onglet "Overview", spécifier l'engine type : Aggregate
      6. Sur l'onglet "Aggregate", 
        • le bouton "Add" permet d'ajouter des composants présents dans le build path de votre projet. Par exemple les CR/CC de uima-tools. Privilégiez des import "By name". "By Location" permet d'ajouter des composants n'importe où sur votre système de fichier moyennant la spécification ultérieur de son descripteur.
        • Le bouton "Find AE" permet de chercher tous les descripteurs des composants développés sous forme de projet Eclipse actuellement "ouvert" dans votre Workspace y compris le projet courant. Sans spécification, il retourne tous les descripteurs. Privilégiez des import "By name".
        • Le Bouton "Add Remote" permet d'ajouter des composants déployés sur des machines distantes
        • Ajouter les descripteurs "WhiteSpaceTokenizer", "SnowballAnnotator" et "HmmTagger"dans cet ordre avec le boutton "Add"
      7. Sur l'onglet "Capabilities",  cliquer sur  "add Type" et cliquer sur les cases in/out de chaque type.  
      8. Exécuter la chaîne (voir la section Exécuter sous Eclipse)
        TODO
        • Installer et utiliser des composants par runPearInstaller.sh 
        • Déployer un composant pour un accès distant et ajouter des composants distants dans une chaîne locale
        • Utiliser le flow controler
        • Utiliser les UIMA Annotators Addons : OpenCalais Annotator s'interface avec un service web ; Dictionnary et RegExp Annotator requièrent l'ajout de ressources

        samedi 13 mars 2010

        Gestion du temps - lois et degrés de priorité

        D'après les commentaires et l'adaptation de Pierre STOUFF d'un document qu'il a reçu lors d'une formation sur la gestion du temps

        LOIS
        Loi de Carlson ou loi des séquences homogènes de travail
        " Tout travail interrompu sera moins efficace et prendra plus de temps que s'il était effectué de manière continue"
        Loi de Parkinson ou loi de la tendance à l'auto-inflation du temps dépensé
        "Le temps investi dans un travail en fonction du temps disponible"

        LOI D'ILLITCH ou loi de la contre-productivité du temps investi au-delà d'un certain seuil
        "Au delà d'un certain seuil horaire, la productivité du temps investi décroit puis devient négative"
        UNE ACTIVITE EST URGENTE SI
        "Une activité est urgente si... sa non réalisation immédiate entraîne (avec une forte probabilité) des conséquences nuisibles, irréversibles, irrémédiables. L'urgence est souvent provoquée par l'extérieur."
        UNE ACTIVITE EST IMPORTANTE SI
        "Une activité est importante si... elle contribue à la réalisation des objectifs de la fonction"
        ORGANISER C'EST
        "Organiser, c'est remettre régulièrement en cause ce qui existe pour l'améliorer."
        LES DEGRES DE PRIORITE

        Se concentrer sur un nombre limité de priorités (3 à 5 dans la plupart des cas), privilégier l'importance (contributions, résultats) par rapport à ce qui est urgent (délai, échéance).

        1. = IMPORTANT ET URGENT (doit être fait cette semaine)
        2. = IMPORTANT (peut attendre à la semaine suivante)
        3. = URGENT (à faire prochainement)