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)