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)

        mardi 16 février 2010

        Installer et utiliser UIMA TextMarker

        Mise à jour le 15 Mars 2011


        Ce post fut initialement écrit pour la version TextMarker_1.0.0.201002031959.
        Il a été révisé pour la version courante qui est TextMarker_1.0.0.201102241433
        La prochaine version est attendue pour... ?




        TextMarker est avant tout une bibliothèque libre (licence LGPL) pour le développement d'applications d'extraction d'information à base de règles 
        sur des éléments de surface et des annotations existantes

        . En tant que bibliothèque il peut s'utiliser relativement simplement au sein d'un Analysis Engine d'Apache UIMA.


        C'est aussi un environnement de développement au sein d'Eclipse base sur le framework DLTK 
         (Dynamic Languages Toolkit) 

        qui offre via ses plugins un éditeur de règles, des composants pour l'explication de l'inférence des règles et un processus de construction d'Analysis Engines et Systemes de Types.

        Il est développé par Peter Kluegl and Martin Atzmueller and Frank Puppe à l'unversité de Wuerzburg (de).

        La documentation s'est enrichi considérablement entre 2010/02 et 2011/02. Un certain nombre de dépendances, et de possibilités d'utilisation font que ce n'est pas toujours évident de comprendre comment le faire fonctionner.


        Il est possible de l'utiliser hors Eclipse (cf. FAQ), voir pour cela le post Utiliser UIMA TextMarker au sein d'un Analysis Engine (i.e. hors Eclipse).
          INSTALLER AU SEIN D'ECLIPSE
          La page d'installation référence deux approches possibles soit automatiquement via des sites updates soit manuellement en copiant manuellement les bons plugins et features dans les sous répertoires d'Eclipse. 


          Installation automatique au sein d'Eclipse 3.5 via les updates sites
          Un update site se déclare via le menu  (Help > Install new softwares). Il peut être utile (si des problèmes sont rencontrés) de redémarrer Eclipse entre chaque installation à l'aide de la commande eclipse -clean.
          1. Ajouter http://www.apache.org/dist/uima/eclipse-update-site UIMA (version 2.3) Update site ;
          2. Ajouter http://download.eclipse.org/technology/dltk/updates-dev/1.0 DLTK Core Framework (version 1.X) update site pour plugins ; Attention TextMarker utilise actuellement DLTK 1.0 et Eclipse 3.6 update site fournit seulement DLTK 2.0
          3. Ajouter http://download.eclipse.org/releases/galileo  Eclipse Modeling Framework (EMF) ; (probablement déjà disponible dans vos Available Sofware Sites) ; 
          L'installation de TextMarker ci-dessous conduira Eclipse à récupérer ce qu'il faut sur les  updates site ajoutés ci-dessus.
          1. Ajouter http://ki.informatik.uni-wuerzburg.de/~pkluegl/updatesite TextMarker update site ; sélectionner "Work with", déselectionner "Group items by category" et sélectionner "Contact all update sites during install to find required software", sélectionner le TextMarker feature. Le CEV feature est déjà contenu dans le TextMarker feature.
          2. Optionnel : Si vous désirez des visualisations HTML alors installer aussi le CEV HTML feature présenté lors de l'update de TextMarker. Par contre ajouter d'abord les XPCom puis XULRunner features http://ftp.mozilla.org/pub/mozilla.org/xulrunner/eclipse/
            Personnellement lors de l'installation de 2011/02 XPCom a pu s'installer mais pas XULRunner, il manquait des dépendances dans les update sites.
          Installation manuelle au sein d'Eclipse 3.5
          L'installation peut aussi être manuelle en copiant le contenu des répertoires plugins et features de l'archive de TextMarker dans les répertoires de même nom d'Eclipse (contient CEV feature et HTML feature). Ce que j'ai finalement fait en 2011/02.

          UTILISER TEXTMARKER AU SEIN D'ECLIPSE
          A partir du Getting Started on déduit les étapes suivantes

          Initialiser avec
          1. Importer le projet exemple dans votre workspace
          2. Ouvrir la perspective TextMarker (Window > Open Perspective)
          3. Stopper la construction automatique, nettoyer et relancer la construction afin de configurer les bons chemins dans tous les composants générés (Project > Stop Build Automatically and do Clean)
           Exécuter avec
          1. Vous pouvez ouvrir les fichiers.tm présents dans scripts avec le TextMarker Source Editor (Ouvrir avec >  TextMarker Source Editor) ; mais ce ne sont que des fichiers textes 
          2. Supprimer les fichiers présents dans output
          3. Lancer TextMarker en cliquant bouton droit Run As > Text Marker et en selectionnant Main.tm ; rien d'apparent ne se produit, mais le répertoire output se remplit à nouveau
           Constater que cela marche
          1. Le répertoire output se remplit
          2. Faire un open with Web Browser sur les fichiers html du répertoire output pour visualiser le résultat du traitement
          3. Le mieux est de lancer un annotation viewer pour visualiser les annotations contenus dans le XMI ; un simple éditeur XML peut faire cela aussi sinon : Run as > Run configurations > Java Applications > org.apache.uima.tools.AnnotationViewerMain en spécifiant en input le répertoire output de TM et en spéciant comme TypeSystem le descriptors/de/uniwue/example/MainTypeSystem.xml. Attention il se peut que vous ayez besoin de lancer cela d'un projet java où les lib de UIMA sont déclarés et avec une copie du répertoire descripteurs de TM déclaré en répertoire source (éventuellement un jcasgen dans le MainEngine.xml)
          Si des problèmes se produisent, 
          Problème avec le data path lors de l'exécution, vous pouvez effectuer ce que la note suivante indique
          Clean and rebuild the example project in order to set the correct paths in all generated components (also the path to the main script location). If the builder preference "import by name" is activated, then a new TextMarker project should rather be created in order to automatically include the correct UIMA datapath. Simply copy all elements into the newly created project afterwards.    
          A noter que
            • Pour spécifier un data path à utiliser pour trouver une resource by name faire sur le projet bouton droit > Properties > UIMA CDE Property page > entrer autant de chemins absolus que souhaités séparés par le séparateur de classpath
            • Pour configurer la résolution des imports à la création des descripteurs ou pour utiliser des imports by name à la création des descripteurs faire Window > Preferences > TextMarker > Builder
          Problème de "Interpreter installation TextMarker Interpreter does not exist" lors de l'exécution 
          non résolu... je cherchais éventuellement à modifier le build path pour lui indiquer les deux bibliothèques importantes, mais cela ne semble pas fonctionner.


          LIENS