vendredi 26 mars 2010

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

      dimanche 14 février 2010

      Récupérer des plugins Eclipse hors IDE

      Souhaitant automatiser la procédure de récupération et d'installation d'Eclipse, j'ai aussi cherché à récupérer automatiquement les plugins à partir du web.

      Cela m'a conduit à produire le script get-and-install-eclipse-plugins.sh

      Ce script prend en entrée l'url d'un site distributeur de plugins eclipse, le nom sous lequel vous souhaitez archiver les plugins récupérés et optionnellement la racine du répertoire d'Eclipse dans lequel vous souhaitez installer les plugins.
      Le script récupére le fichier artifacts.xml sur lequel il s'appuie pour récupérer les jar plugins et features correspondants au plugin spécifié.
      Si plusieurs versions des jars sont disponibles, il récupère la plus récente.
      Le script fonctionne sous Ubuntu avec Bash et Perl.

      Télécharger sur  http://e.nicolas.hernandez.free.fr/pro/doku.php?id=misc:software:get-and-install-eclipse-plugins

      dimanche 7 février 2010

      Scripts de téléchargement et d'installation d'un environnement pour utiliser Apache UIMA (>2.3) et développer avec sous Eclipse

      Afin de me faciliter la vie, ainsi celles de mes étudiants, j'ai mis en place un environnement qui regroupe tous les pré-requis pour  utiliser Apache UIMA et développer avec sous Eclipse.

      FEATURES
      • Scripts pour assister le téléchargement et l'installation d'un environnement pour utiliser Apache UIMA et développer avec sous Eclipse. 
      • La configuration est centralisée pour faciliter la prise en compte les futures mise à jour des outils requis pour l'environnement
      • Ces outils requis sont Java JDK Sun, Eclipse, plugins eclipse (UIMA, Subversion et Maven), Apache UIMA (UIMAJ, UIMA-AS, UIMACPP, Addons), Apache tomcat, OpenNLP, maven, ant, subversion 
      • Les scripts sont distribués sous licence GPLv3 (liberté de modifier et redistribuer le travail, redistribution des travaux dérivés sous la même licence, mise à disposition du code source) 
      • Testés sous Ubuntu 8.10 - Hardy et 9.04 - Jaunty Jackalope
      VERSION

      La version datée du 7/02/2010 intègre les versions suivantes des outils 
      • Java Sun Development Kit  (jdk-6u17-linux-i586)
      • Eclipse Galileo (3.5)
      • Plugins UIMA,  subversion subeclipse,  maven m2eclipse        
      • Apache UIMA 2.3.0-incubating
      • OpenNLP v1.3
      • Apache Tomcat 6.0.20
      TELECHARGEMENT

      jeudi 14 janvier 2010

      Installer Apache Tomcat (6.0.20 Binary)

      QU'EST CE QUE C'EST ?
      Apache Tomcat est une implémentation open source des technologies Java Servlet et JavaServer Pages (JSP), on dit aussi que c'est un conteneur de servlet. 
      Différentes versions d'Apache Tomcat sont disponibles pour différentes version de spécifications de Servlet et de JSP.
      • Servlet/JSP Spec. 2.5/2.1 works with Apache Tomcat version 6.0.X
      • Servlet/JSP Spec. 2.4/2.0 works with Apache Tomcat version 5.5.X
      RECUPERER APACHE TOMCAT
      Apache Tomcat est disponible à l'adresse http://tomcat.apache.org
      export APACHETOMCATNAME=apache-tomcat
      export APACHETOMCATVERSION=-6.0.20
      export APACHETOMCATARCHIVEEXT=.zip
      wget http://mir2.ovh.net/ftp.apache.org/dist/tomcat/tomcat-6/v6.0.20/bin/"${APACHETOMCATNAME}${APACHETOMCATVERSION}${APACHETOMCATARCHIVEEXT}"
      INSTALLER ET CONFIGURER
      Configurer la variable APPLIDIR qui indique votre répertoire d'installation.
      # Set APPLIDIR

      export APPLIDIR=.

      unzip "${APACHETOMCATNAME}${APACHETOMCATVERSION}${APACHETOMCATARCHIVEEXT}" -d $APPLIDIR
      ln -s "${APACHETOMCATNAME}${APACHETOMCATVERSION}" "$APPLIDIR/${APACHETOMCATNAME}"
      Il s'agit maintenant de rajouter à votre .bashrc la variable d'environnement CATALINA_HOME et de la faire pointer vers la racine d'Apache Tomcat désarchivé.
      export CATALINA_HOME="$APPLIDIR/${APACHETOMCATNAME}"
      Le fichier RUNNING.txt à la racine de votre installation indique comment configurer plusieurs instances de Tomcat, pour cela vous aurez besoin de déclarer la variable d'environnement CATALINA_BASE. Si nécessaire lui donner la valeur de CATALINA_HOME.

      DOCUMENTATION
      La documentation informe sur comment installer et configurer, créer une première application web, la déployer, gérer les applications web présentes, gérer la sécurité (connexion SSL, droits d'accès...), accéder à une base de données...

      EXECUTER
      La documentation en ligne et le fichier RUNNING.txt à la racine de votre installation fournissent des informations complémentaires. Le 1er pour éxecuter Tomcat comme démon, le second pour éxecuter Tomcat à la main. 
      Démarrer Tomcat avec
      $CATALINA_HOME/bin/startup.sh
      Après démarrage, les applications par défaut incluses dans Tomcat seront disponibles en visitant
      http://localhost:8080/

      Arrêter Tomcat à l'aide de
      $CATALINA_HOME/bin/shutdown.sh
      DEPLOYER
      http://tomcat.apache.org/tomcat-6.0-doc/deployer-howto.html
      ...

      MANAGER
      Le manager est une application web (installée par défaut dans le context path /manager) qui permet de gérer les autres applications : les déployer, recharger,  undéployer, démarrer, arrêter...
      Par défaut, l'application Manager est désactivée. Si vous n'avez pas configuré $CATALINA_BASE/conf/server.xml pour sélectionner un fichier de définition des utilisateurs, des passwords et des rôles autres que   $CATALINA_BASE/conf/tomcat-users.xml, alors éditez le et associer le avec role manager avec une combinaison username/password (la créer ou utiliser une existante). Cela doit donner quelque chose comme :
      role rolename="manager"user username="tomcat" password="s3cret" roles="manager"
      Pour utiliser le manager se rendre sur

      http://localhost:8080/manager/html/
      ...

      mardi 12 janvier 2010

      Installer les UIMA Addons Annotators & tools

      Mise à jour 2011 04 26 : Version courante des addons est toujours la 2.3.0-incubating


      INSTALLATION
      Rien de plus simple pour installer les UIMA Annotator Addons and tools

      1. Récupérer l'archive addons (celles ci contient tout ce qui est annoncé dans le titre) disponible sur http://uima.apache.org/downloads.cgi
      export UIMAADDONSDISTANTDIR=uimaj-annotator-addons-2.3.0-incubating
      export UIMAADDONSARCHIVEFILE=uimaj-annotator-addons-2.3.0-incubating-bin.zip
      wget "http://mirror.mkhelif.fr/apache/incubator/uima/binaries/${UIMAADDONSDISTANTDIR}/${UIMAADDONSARCHIVEFILE}"
      2. Puis l'installer en la désarchivant dans votre le répertoire parent de votre UIMA_HOME car l'archive contient le répertoire apache-uima qui contient le répertoire addons. De cette manière addons se retrouvera dans votre apache-uima.
      unzip "${UIMAADDONSARCHIVEFILE}" -d "$UIMA_HOME/.."
      CONFIGURATIONS

      Apache UIMAJ Version 2.2.2-incubating contient

      • les annotators suivant  DictionaryAnnotator, RegularExpressionAnnotator, Tagger, WhitespaceTokenizer dans apache-uima/addons/annotator 
      • les outils suivant SimpleServer, PearPackagingAntTask, PearPackagingMavenPlugin dans apache-uima/addons
      Apache UIMAJ Version 2.3.0-incubating contient

      • les annotators suivant BSFAnnotator, Lucas, Tagger, ConceptMapper, OpenCalaisAnnotator, TikaAnnotator, ConfigurableFeatureExtractor, RegularExpressionAnnotator  WhitespaceTokenizer, DictionaryAnnotator, SnowballAnnotator dans apache-uima/addons/annotator 
      • les outils suivant SimpleServer, FsVariables PearPackagingAntTask dans apache-uima/addons