<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-318866257749890342</id><updated>2012-01-16T05:54:34.528-08:00</updated><category term='opennlp'/><category term='u-compare'/><category term='research'/><category term='java'/><category term='GoogleCode'/><category term='engineering'/><category term='discourse'/><category term='hmm tagger'/><category term='document'/><category term='javadoc'/><category term='interoperability'/><category term='tomcat'/><category term='hadoop'/><category term='rules-based analyzer'/><category term='uima'/><category term='textmarker'/><category term='Google Analytics'/><category term='information extraction'/><category term='web 2.0'/><category term='Maven'/><category term='animation'/><category term='sofa name mapping'/><category term='commons-based peer production'/><category term='lego nxt lejos'/><category term='eclipse'/><category term='ubuntu'/><category term='forge'/><category term='uima-addons'/><category term='reuse'/><title type='text'>Nicolas Hernandez</title><subtitle type='html'>Blognotes qui vient dynamiser &lt;a href="http://e.nicolas.hernandez.free.fr"&gt;http://e.nicolas.hernandez.free.fr&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-8109489301584393480</id><published>2012-01-16T05:43:00.000-08:00</published><updated>2012-01-16T05:43:29.680-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><title type='text'></title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Depuis septembre 2010, j'anime au sein de l'équipe des &lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;rencontres&lt;/span&gt;&amp;nbsp;"&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;Outils&lt;/span&gt;&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;et&lt;/span&gt;&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;instruments&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;logiciels&lt;/span&gt;&amp;nbsp;pour le TAL" connues aussi sous le nom de "réunions&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;logiciels&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;J'utilise ce post pour rappel du principe et les commentaires pour présenter les différentes interventions qui ont lieu.&lt;br /&gt;&lt;br /&gt;La motivation de ces&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;rencontres&lt;/span&gt;&amp;nbsp;sont l'échange de connaissances&lt;br /&gt;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;et&lt;/span&gt;&amp;nbsp;l'entraide pour la prise en main d'un nouveau logiciel.&lt;br /&gt;&lt;br /&gt;L'objectif pour le présentateur est simple : faire connaître un&lt;br /&gt;logiciel&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;et&lt;/span&gt;&amp;nbsp;donner&amp;nbsp;un aperçu de l'utilisation de celui-ci. La présentation prend la forme d'une&lt;br /&gt;démonstration d'un cas d'utilisation. Suivant le logiciel, cela prend&lt;br /&gt;15 à 30 minutes&amp;nbsp;questions comprises.&lt;br /&gt;&lt;br /&gt;Il faut prendre logiciel (au sens très large) [2] : cela peut concerner un&lt;br /&gt;développement personnel, une bibliothèque, une application, un analyseur&lt;br /&gt;particulier de données...&lt;br /&gt;&lt;br /&gt;Je vous invite à vous proposer pour présenter un logiciel que vous pensez être&lt;br /&gt;pertinent pour l'équipe (même si vous n'en connaissez que quelques fonctions),&lt;br /&gt;ainsi qu'à émettre des demandes de démonstration. Je me propose de&lt;br /&gt;coordonner pour trouver un intervenant dans le cas de demandes. On pourra&lt;br /&gt;discuter plus tard sur les modalités d'ouverture de ces réunions à des&lt;br /&gt;participants&amp;nbsp;hors équipe.&lt;br /&gt;&lt;br /&gt;Les&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;rencontres&lt;/span&gt;&amp;nbsp;sont au rythme d'une demi-heure tous les mois voire toutes les 6 semaines.&lt;br /&gt;Elles sont planifiées sur l'agenda de l'équipe (aussi consultable en&amp;nbsp;ligne sur [1]).&lt;br /&gt;&lt;br /&gt;[1] agenda des réunions de l'équipe TALN&lt;br /&gt;[2] Instrument, outil, utilitaire&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #eeffe2;"&gt;et&lt;/span&gt;&amp;nbsp;ressource&lt;br /&gt;&lt;a href="http://www.revue-texto.net/Corpus/Publications/Habert/Habert_Portrait.html#2.1" style="color: #112508;" target="_blank"&gt;http://www.revue-texto.net/&lt;wbr&gt;&lt;/wbr&gt;Corpus/Publications/Habert/&lt;wbr&gt;&lt;/wbr&gt;Habert_Portrait.html#2.1&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-8109489301584393480?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/8109489301584393480/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/depuis-septembre-2010-janime-au-sein-de.html#comment-form' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8109489301584393480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8109489301584393480'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/depuis-septembre-2010-janime-au-sein-de.html' title=''/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-4120548867771869090</id><published>2012-01-05T09:18:00.001-08:00</published><updated>2012-01-05T09:18:59.965-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Définition d'un descripteur primitif d'Analysis Engine</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;Ce post est en lien avec le post&amp;nbsp;&lt;a href="http://enicolashernandez.blogspot.com/2012/01/developper-son-premier-composant-uima.html"&gt;Développer son premier composant UIMA : l'Analysis Engine (AE)&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;La dernière étape consister à créer un descripteur indiquant au framework UIMA comment utiliser le composant. En particulier il définit la classe métier de l'Annotator, le Type System manipulé, les Types qui sont utilisés comme input et ceux qui seront des output. C'est aussi ici que sont déclarés les paramètres et les ressources partagées utilisés si il y a lieu.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;La création du descripteur du composant est facilitée à travers Eclipse et les plugins installés. Dans le répertoire&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;desc/opinionRecognizer&lt;/span&gt;&amp;nbsp;du projet (ou seulement desc si vous n'avez pas packagé votre projet) :&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Créer le fichier descripteur du composant,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizerAE.xml&lt;/span&gt;&amp;nbsp;en cliquant dessus avec le bouton droit et&amp;nbsp;&lt;i&gt;New - Other - UIMA - Analysis Engine Descriptor File&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Sur la première page (onglet&amp;nbsp;&lt;i&gt;Overview&lt;/i&gt;&amp;nbsp;accessible au bas du cadre) spécifier le nom de la classe qui implémente votre code métier (i.e.&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer.O&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;pinionRecognizerAE)&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Sous l'onglet&amp;nbsp;&lt;i&gt;Type System&lt;/i&gt;, ajouter (&lt;i&gt;Add&lt;/i&gt;) par nom (&lt;i&gt;by name&lt;/i&gt;) le type system défini pour votre composant (i.e.&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;desc/opinionRecognizer/o&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;pinionRecognizerTS.xml&lt;/span&gt;).&lt;/li&gt;&lt;li&gt;Enfin sous l'onglet&amp;nbsp;&lt;i&gt;Capabilities&lt;/i&gt;, spécifiez les types des annotations qui doivent apparaître en sortie (i.e.&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SentenceAnnotation, TokenAnnotation et Opinion&lt;/span&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;Si en cliquant sur ce fichier pour l'ouvrir, vous n'accédez qu'à son contenu XML, alors demandez d'ouvrir avec le&amp;nbsp;&lt;i&gt;Component Descriptor Editor&lt;/i&gt;&amp;nbsp;en cliquant sur le fichier avec le bouton droit.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-4120548867771869090?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/4120548867771869090/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/definition-dun-descripteur-primitif.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4120548867771869090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4120548867771869090'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/definition-dun-descripteur-primitif.html' title='Définition d&apos;un descripteur primitif d&apos;Analysis Engine'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-3865782042766308939</id><published>2012-01-05T09:16:00.001-08:00</published><updated>2012-01-06T08:18:22.355-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Implémenter le code métier d'un composant Analysis Engine</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;Ce post est en lien avec le post&amp;nbsp;&lt;a href="http://enicolashernandez.blogspot.com/2012/01/developper-son-premier-composant-uima.html"&gt;Développer son premier composant UIMA : l'Analysis Engine (AE)&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;La seconde étape correspond au développement du code métier du composant.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Le code métier d'un AE est&amp;nbsp;&lt;i&gt;à minima&lt;/i&gt;&amp;nbsp;constitué d'une classe dite&amp;nbsp;Annotator&amp;nbsp;qui étend la classe&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;JCasAnnotator_ImplBase&lt;/span&gt;&amp;nbsp;du framework UIMA. En particulier, on trouve le code métier dans une méthode surchargée appelée&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process&lt;/span&gt;&amp;nbsp;qui est automatiquement appelée à l'exécution pour chaque CAS traitée. La méthode&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process&amp;nbsp;&lt;/span&gt;a accès au CAS et via l'API d'UIMA elle peut manipuler l'artifact ou les (index d') annotations qui ont été précédemment ajoutées ou bien en ajouter de nouvelles.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;La classe&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;JCasAnnotator_ImplBase&amp;nbsp;&lt;/span&gt;est une implémentation par défaut&amp;nbsp;&lt;/span&gt;de la classe&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;AnalysisComponent&lt;/span&gt;. Cette implémentation par défaut&amp;nbsp;&lt;span class="Apple-style-span"&gt;implémente toutes les méthodes exceptée la méthode&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process&lt;/span&gt;&lt;span class="Apple-style-span"&gt;. En général on travaille directement à partir de celle-ci quitte à surcharger les méthodes déjà implémentées.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;La classe&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;AnalysisComponent&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;a plusieurs méthodes dont les plus importantes sont&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;initialize, process&lt;/span&gt;&amp;nbsp;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;collectionProcessComplete&lt;/span&gt;. La méthode&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;initialize&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;est appelée une fois par le framework UIMA à la création de la première instance de la classe Annotator ; elle sert par exemple à récupérer la valeur de paramètres ou à charger des ressources qui seront partagées par les différentes instances de la classe. La méthode&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;est donc appélée une fois par item traité. La méthode&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;collectionProcessComplete&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;est appelée quand l'entière collection a été traitée et sert à produire des résultats relatifs à toute la&amp;nbsp;collection.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Dans cet exercice, vous n'aurez besoin que d'implémenter la méthode&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process&lt;/span&gt;&lt;span class="Apple-style-span"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Création de la classe Annotator&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Dans le répertoire src, créer le package&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Au sein du package, créer la classe&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;OpinionRecognizerAE&lt;/span&gt;. Par convention les classes Annotator se termineront par le suffixe AE.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;Faire étendre la classe de&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;JCasAnnotator_ImplBase&lt;/span&gt;&lt;/li&gt;&lt;li&gt;et surcharger la méthode&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Cela doit donner quelque chose comme :&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;package opinionRecognizer;&lt;br /&gt;import&lt;br /&gt;org.apache.uima.analysis_component.JCasAnnotator_ImplBase;&lt;br /&gt;import org.apache.uima.jcas.JCas;&lt;br /&gt;import opinionRecognizer.types.*;&lt;br /&gt;public class OpinionRecognizerAE extends JCasAnnotator_ImplBase{&lt;br /&gt;&amp;nbsp; &amp;nbsp; public void process(JCas aJCas) &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Faire quelque chose&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;b&gt;Création du code métier au sein de la méthode&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La méthode&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;process&lt;/span&gt;&amp;nbsp;reçoit en argument une instance de&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;JCas&lt;/span&gt;&amp;nbsp;laquelle constitue le document analysé ainsi que toutes les annotations qui y ont été associées lors d'éventuelles précédentes analyses. Le&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;JCas&lt;/span&gt;&amp;nbsp;fournit une approche JNI (&lt;i&gt;Java Native Interface&lt;/i&gt;) pour la manipulation des objets&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;CAS&lt;/span&gt;&amp;nbsp;et de leur propriétés (i.e.~avec des&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;new&lt;/span&gt;, des&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;getter/setter&lt;/span&gt;, ... Le framework UIMA se charge de passer le CAS d'un composant à un autre.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pour cet exercice, l'analyseur devra ajouter une nouvelle annotation&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Opinion&amp;nbsp;&lt;/span&gt;délimitée aux offsets (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;begin&amp;nbsp;&lt;/span&gt;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;end&lt;/span&gt;) de toutes les phrases&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SentenceAnnotation&amp;nbsp;&lt;/span&gt;contenant des mots&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;TokenAnnotation&amp;nbsp;&lt;/span&gt;qui sont des verbes (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;posTag&lt;/span&gt;&amp;nbsp;débutant par&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;"vb"&lt;/span&gt;&amp;nbsp;égal à&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;"bez"&lt;/span&gt;) ou dont la forme de surface&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;coveredText&amp;nbsp;&lt;/span&gt;est "&lt;i&gt;we&lt;/i&gt;" ou "&lt;i&gt;our&lt;/i&gt;". On ajoutera aussi le nombre de mots contenu dans l'opinion&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;length.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;L'algorithme que je propose d'implémenter est le suivant :&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;récupération d'un index de phrases&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SentenceAnnotation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;parcourir l'index de phrases et pour chacune,&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;récupérer un sous index de mots&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;TokenAnnotation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;parcourir l'index de mots et pour chaque mot&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;définir un booléen à vrai si un mot a son trait&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;posTag&amp;nbsp;&lt;/span&gt;débutant par&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;"vb"&lt;/span&gt;&amp;nbsp;égal à&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;"bez"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;définir un booléen à vrai si un mot a son trait&amp;nbsp;forme de surface&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;coveredText&amp;nbsp;&lt;/span&gt;est "&lt;i&gt;we&lt;/i&gt;" ou "&lt;i&gt;our&lt;/i&gt;".&lt;/li&gt;&lt;li&gt;incrémenter un compteur de mots&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;si les deux booléens sont vrais alors&lt;/li&gt;&lt;ol&gt;&lt;li&gt;créer une nouvelle annotation&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Opinion&amp;nbsp;&lt;/span&gt;aux offsets&amp;nbsp;(&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;begin&amp;nbsp;&lt;/span&gt;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;end&lt;/span&gt;) de la phrase courante&lt;/li&gt;&lt;li&gt;initialiser les valeurs&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;begin,&lt;/span&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;end&amp;nbsp;&lt;/span&gt;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;length&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;de cette annotation&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;La&amp;nbsp;&lt;/span&gt;récupération d'un index de phrases&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SentenceAnnotation&lt;/span&gt;&amp;nbsp;peut se réaliser à l'aide de la méthode&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;getAnnotationIndex&lt;/span&gt;&amp;nbsp;appliquée au&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;JCas&lt;/span&gt;&amp;nbsp;et qui prend en argument le type d'annotation souhaité. Le&amp;nbsp;parcourir de l'index de phrases peut se réaliser à l'aider d'un&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Iterator&lt;/span&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Cela doit donner quelque chose comme :&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;AnnotationIndex&amp;lt;annotation&amp;gt; &amp;nbsp;aSentenceAnnotationAnnotationIndex = aJCas.getAnnotationIndex(SentenceAnnotation.type);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Iterator&amp;lt;annotation&amp;gt; aSentenceAnnotationIterator = aSentenceAnnotationAnnotationIndex.iterator();&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;while (aSentenceAnnotationIterator.hasNext()) {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; SentenceAnnotation aSentenceAnnotation = (SentenceAnnotation) aSentenceAnnotationIterator.next();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; // Faire quelque chose&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;L'ajout du précédent code lève des erreurs de dépendances non importées (&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;AnnotationIndex,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Iterator,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SentenceAnnotation&lt;/span&gt;). &amp;nbsp;Elles se résolvent très facilement par un left-click sur la petite croix rouge dans la marge de gauche au niveau de chaque erreur détectée et en optant pour le bon import.&lt;br /&gt;Cette action sera à reproduire avec le code à venir.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;La récupération d'un index d'annotations couvertes par une autre annotation peut se faire à l'aide de la méthode&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;subiterator&lt;/span&gt;&amp;nbsp;qui s'applique sur un index d'annotations et qui prend en argument l'annotation recouvrante.&lt;br /&gt;Elle requiert la création d'un index d'annotations. Pour notre besoin, un index de mots&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;TokenAnnotation&amp;nbsp;&lt;/span&gt;peut suffire. Il se construit comme l'index de phrases vu ci-dessus. On décide de récupérer l'index de toutes les annotations pour varier les plaisirs. Il faudra alors ne considérer que les annotations mots qui nous intéressent.&lt;br /&gt;L'instruction suivante réalise cela. On la place au même niveau que la construction d'index de phrases.&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;AnnotationIndex&amp;lt;annotation&amp;gt;&amp;nbsp;anAnnotationIndex = aJCas.getAnnotationIndex();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;A l'intérieur de la boucle, pour chaque phrase on récupère un&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FSIterator&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;(qui est un iterator un peu spécial sur ce type de structure) sur les annotations couvertes par la phrase courant&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;aSentenceAnnotation&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span class="Apple-style-span"&gt;Cela donne&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FSIterator&amp;lt;annotation&amp;gt;&amp;nbsp;anySubSentenceAnnotationFSIterator = anAnnotationIndex.subiterator(aSentenceAnnotation);&lt;br /&gt;while (anySubSentenceAnnotationFSIterator.hasNext()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp;Annotation aSubSentenceAnnotation = (Annotation) anySubSentenceAnnotationFSIterator.next();&lt;br /&gt;&amp;nbsp; &amp;nbsp;// Faire quelque chose&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Si l'annotation couverte courante&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;aSubSentenceAnnotation&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;est un&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;TokenAnnotation&amp;nbsp;&lt;/span&gt;alors on teste&amp;nbsp;si un mot a son trait&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;posTag&amp;nbsp;&lt;/span&gt;débutant par&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;"vb"&lt;/span&gt;&amp;nbsp;égal à&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;"bez"&amp;nbsp;&lt;/span&gt;et si un mot a son trait&amp;nbsp;forme de surface&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;coveredText&amp;nbsp;&lt;/span&gt;est "&lt;i&gt;we&lt;/i&gt;" ou "&lt;i&gt;our&lt;/i&gt;"&amp;nbsp;et l'on compte le mot.&lt;br /&gt;Cela correspond au code ci-dessous&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;if (aSubSentenceAnnotation.getClass().getName().equalsIgnoreCase("org.apache.uima.TokenAnnotation")) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; TokenAnnotation aWord = (TokenAnnotation) aSubSentenceAnnotation;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if (aWord.getPosTag().toLowerCase().startsWith("vb") || aWord.getPosTag().equalsIgnoreCase("bez")) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; containsAVerb = true;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; if (aWord.getCoveredText().equalsIgnoreCase("our") || aWord.getCoveredText().equalsIgnoreCase("we")) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; containsAKeyword = true;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; wordCounter++;&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Pour que ce code fonctionne il faut rajouter quelques déclarations de variables avant la boucle de parcours des annotations couvertes par l'annotation phrase courante.&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;boolean containsAVerb = false;&lt;br /&gt;boolean containsAKeyword = false;&lt;br /&gt;int wordCounter = 0;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Pour chaque phrase&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;aSentenceAnnotation&amp;nbsp;&lt;/span&gt;parcourue on teste si les présences d'un mot clef et d'un verbe sont confirmées. Dans la positive, on créer une nouvelle annotation&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Opinion&lt;/span&gt;. On définit ses traits&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;begin&lt;/span&gt;&amp;nbsp;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;end&lt;/span&gt;&amp;nbsp;en fonction des&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;begin&lt;/span&gt;&amp;nbsp;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;end&lt;/span&gt;&amp;nbsp;de la phrase courante. On définit aussi la longueur&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;length&lt;/span&gt;&amp;nbsp;de l'opinion. Et au final on ajoute l'annotation ainsi créée à l'index des annotations à l'aide de la méthode&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;addToIndexes&lt;/span&gt;.&lt;br /&gt;Ce qui donne le code suivant :&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;if ((containsAKeyword) &amp;amp;&amp;amp; (containsAVerb)) {&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp; &amp;nbsp; Opinion aOpinion = new Opinion(aJCas);&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp; &amp;nbsp; aOpinion.setBegin(aSentenceAnnotation.getBegin());&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;aOpinion.setEnd(aSentenceAnnotation.getEnd());&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;aOpinion.setLength(wordCounter);&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;aOpinion.addToIndexes();&lt;/span&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-3865782042766308939?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/3865782042766308939/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/implementer-le-code-metier-dun.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/3865782042766308939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/3865782042766308939'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/implementer-le-code-metier-dun.html' title='Implémenter le code métier d&apos;un composant Analysis Engine'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-2924377264999480805</id><published>2012-01-05T09:13:00.000-08:00</published><updated>2012-01-05T09:13:14.894-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Définir les types de données (type system) à manipuler au sein d'un composant UIMA</title><content type='html'>&lt;div&gt;&lt;div&gt;Ce post est en lien avec le post&amp;nbsp;&lt;a href="http://enicolashernandez.blogspot.com/2012/01/developper-son-premier-composant-uima.html"&gt;Développer son premier composant UIMA : l'Analysis Engine (AE)&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;La première étape pour développer un composant est de définir les types de données qu'il va manipuler.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Création du descripteur et des types de données à manipuler&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;En lien avec notre exercice, nous allons définir le type d'annotation&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer.types.Opinion&lt;/span&gt;&amp;nbsp;qui correspondra au type des annotations produites par notre composant d'analyse. On lui ajoutera un trait (&lt;i&gt;feature&lt;/i&gt;)&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;length&lt;/span&gt;&amp;nbsp;qui indiquera le nombre de mots contenu dans l'annotation&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Opinion&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;courante. Par simplicité nous ne rappellerons pas par la suite le nom de package (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer.types&lt;/span&gt;) qui précède le nom du type.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;D'abord créons le fichier descripteur :&lt;/div&gt;&lt;div&gt;Les fichiers descripteurs de systèmes de types et d'AE se placent dans le répertoire&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;desc&lt;/span&gt;. Pour s'y retrouver ultérieurement parmi les descripteurs qui seront disponibles dans le CLASSPATH, je vous conseille de créer un sous répertoire portant le nom de votre projet (en respectant les conventions de nommage Java), par exemple ici :&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Faire un clic-droit sur le répertoire desc (ou sur le sous-répertoire que vous venez de créer si vous avez suivi mon conseil).&lt;/li&gt;&lt;li&gt;Choisir le menu 'New'-'Other...'-'UIMA'-'Type System Descriptor File'.&lt;/li&gt;&lt;li&gt;A l'écran suivant, donner un nom au fichier descripteur de types par exemple&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;TS.xml&lt;/span&gt;. Là encore par convention et pour s'y retrouver plus tard je vous conseille d'utiliser le suffixe&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;TS&lt;/span&gt;&amp;nbsp;pour vos noms de fichier descripteur de systèmes de types.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Ensuite, une fois le fichier créé,&amp;nbsp;ajoutons le type désiré &amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer.types.Opinion&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Dans l'onglet&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Type System&lt;/span&gt;&amp;nbsp;du descripteur, ajouter un type avec le bouton&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Add Type&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Donner lui le nom de&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer.types.Opinion&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Le faire hériter du type&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;uima.tcas.Annotation&lt;/span&gt;&amp;nbsp;défini par le framework UIMA et qui permet d'hériter des traits&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;begin&lt;/span&gt;,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;end&lt;/span&gt;&amp;nbsp;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;coveredText&lt;/span&gt;. Le trait&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;coveredText&lt;/span&gt;&amp;nbsp;est un trait un peu particulier parce que l'on ne peut y accéder qu'en lecture. Il retourne le texte de l'artifact couvert entre les offsets délimités par les valeurs entières&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;begin&lt;/span&gt;&amp;nbsp;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;end&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Ajoutons aussi une&amp;nbsp;&lt;i&gt;feature&lt;/i&gt;&amp;nbsp;au type :&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;En sélectionnant le type, cliquer sur le bouton&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Add..&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Donner lui le nom de&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;length&lt;/span&gt;&amp;nbsp;qui indiquera le nombre de mots contenu&lt;/li&gt;&lt;li&gt;Faire hériter du type simple&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Integer&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Puisque nous manipulons aussi les types&amp;nbsp;mot,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;org.apache.uima.TokenAnnotation&lt;/span&gt;, et phrase,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;org.apache.uima.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SentenceAnnotation&lt;/span&gt;, qui sont des&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;uima.tcas.Annotation&lt;/span&gt;&amp;nbsp;et le trait&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;posTag&lt;/span&gt;&amp;nbsp;(&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;String&lt;/span&gt;) du type&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;TokenAnnotation&lt;/span&gt;&amp;nbsp;dont les annotations auront été produits&amp;nbsp;par les composants de prétraitement, il nous faut aussi ajouter ces types. Le faire.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Génération automatique des l'API JAVA du système de types&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Une fois le fichier de descripteur de systèmes de type créé et sauvé, une API java permettant de manipuler les types (et les traits) est automatiquement générée.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Si jamais vous craignez que cette API ne soit pas générer ou que vous vouliez forcer sa re-génération, cliquer sur&amp;nbsp;le bouton&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;JCasGen&lt;/span&gt;&amp;nbsp;présent dans l'éditeur du fichier Système de Type.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Les fichiers&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Opinion.java&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;et&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Opinion_Type.java&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;sont générés dans le sous répertoire&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;opinionRecognizer.types&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;du répertoire&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;src&amp;nbsp;&lt;/span&gt;du projet.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Le fichier&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Opinion.java&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp; contient le constructeur de type.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;Noter la présence d'accesseurs pour modifier la valeur des attributs du type&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Opinion&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;(par exemple les méthodes&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;getLength()&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;et &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;setLength(int v)&lt;/span&gt;).&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-2924377264999480805?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/2924377264999480805/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/definir-les-types-de-donnees-type.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2924377264999480805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2924377264999480805'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/definir-les-types-de-donnees-type.html' title='Définir les types de données (type system) à manipuler au sein d&apos;un composant UIMA'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-1974750794831408912</id><published>2012-01-04T09:11:00.000-08:00</published><updated>2012-01-05T09:20:01.641-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Développer son premier composant UIMA : l'Analysis Engine (AE)</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Objectifs&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Ce post présente ce qu'est le composant élémentaire de toute chaîne de traitement d'analyse UIMA à savoir l'Analysis Engine (AE). Il explique de quoi il se compose techniquement, et comment développer ses différentes parties.&lt;br /&gt;Il s'agit entre autres de prendre en main l'API et les outils UIMA pour réaliser des opérations classiques : telles que définir des types d'annotation, générer automatiquement l'API pour manipuler les types d'annotations définis, récupérer des annotations posées par d'autres annotateurs, consulter et définir les valeurs de traits d'une annotation, créer une nouvelle annotation, créer un fichier XML descripteur et tester un composant.&lt;br /&gt;Pour illustrer cet exercice de développement on cherchera à développer la fonction de reconnaissance de phrases qui expriment une opinion. On posera l'hypothèse qu'une phrase qui contient&amp;nbsp;des verbes et&amp;nbsp;des mots dont la forme de surface comme "&lt;i&gt;we&lt;/i&gt;" ou "&lt;i&gt;our&lt;/i&gt;" est une expression d'opinion...&amp;nbsp;On utilisera pour cela quelques AE disponibles dans les Apache Uima Addons.&amp;nbsp;On testera l'AE sur les textes présents dans le répertoire&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;UIMA_HOME/examples/data&lt;/span&gt;&amp;nbsp;notamment&amp;nbsp;&lt;i&gt;Apache_UIMA.txt. &lt;/i&gt;De fait nous travaillerons sur l'anglais pour cet exercice.&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Prérequis&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Il est nécessaire d'avoir réaliser les tutoriels suivant :&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Savoir &lt;a href="http://enicolashernandez.blogspot.com/2010/03/construire-une-chaine-de-traitement.html"&gt;construire une chaîne de traitement sous Eclipse sous la forme d'un &lt;i&gt;Aggregate d'Analysis Engine&lt;/i&gt;&lt;/a&gt; (&lt;i&gt;AAE&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;Savoir&lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html"&gt; exécuter une chaîne de traitement&lt;/a&gt; (sous Eclipse, en ligne de commande ou via le DocumentAnalyzer GUI)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Tel que l'explique ces précédents posts, il faudra avoir au préalable construit et avoir à disposition une chaîne que nous appellerons de &lt;i&gt;pré-traitement&lt;/i&gt; et qui sera composée des Apache UIMA addons suivant :&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;WhiteSpaceTokenizer qui découpe en mots, TokenAnnotation, et phrases, SentenceAnnotation, un texte fourni en entrée&lt;/li&gt;&lt;li&gt;Tagger qui rajoute un trait posTag aux TokenAnnotation&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Qu'est ce qu'un composant UIMA de type Analysis Engine et à quoi cela sert ?&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Un &lt;i&gt;Analysis Engine&lt;/i&gt; (AE) est le&amp;nbsp;composant élémentaire d'une chaîne de traitements UIMA. Il a généralement pour objet une tâche d'&lt;i&gt;analyse&lt;/i&gt; (par exemple reconnaître si une phrase est une expression d'une opinion) sur ce que l'on appelle un &lt;i&gt;artifact&lt;/i&gt; (par exemple un texte). Il reçoit les &lt;i&gt;résultats d'analyse&lt;/i&gt; de précédents composants (par exemple un découpage en phrases, en mots, la reconnaissance des étiquettes grammaticales (nom, verbe, adjectif...)) qui lui servent de base pour ses traitements afin qu'il puisse à son tour associer à l'artifact le résultat d'analyse qu'il produit (par exemple les opinions). On appelle les résultats d'analyse, des &lt;i&gt;meta-données ou des annotations&lt;/i&gt;. L'ensemble formé par l'artifact et les méta-données constitue la &lt;i&gt;structure commune d'analyse (CAS ou Common Analysis Structure&lt;/i&gt;) et est LA structure de donnée qui transite d'un composant à un autre.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;De quoi est constitué un composant UIMA ?&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Un composant UIMA est logiquement constitué de trois éléments :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;la définition des types des données que le composant manipule (lit et crée), on appelle cela le&lt;i&gt; système de types (TS ou type system),&lt;/i&gt;&lt;/li&gt;&lt;li&gt;le code métier qui réalise&amp;nbsp;la fonction souhaitée,&lt;/li&gt;&lt;li&gt;un descripteur indiquant au framework UIMA comment utiliser le composant.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Le système de types et le descripteur du composant sont des fichiers XML que l'on peut éditer avec des interfaces graphiques via les plugins Eclipse de UIMA. La définition du système de type entraîne la génération automatique d'une API pour manipuler les types de données définis au sein du code métier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;L'ensemble de ces éléments doit se trouver accessible via le CLASSPATH de l'application qui exécute. En général, on encapsule ces éléments au sein d'une même archive Jar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Préparer un projet Java sous Eclipse pour&amp;nbsp;accueillir&amp;nbsp;le développement de votre composant&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Il vous faut un projet Java sous Eclipse pour accueillir&amp;nbsp;le développement de votre composant. Différentes options :&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;vous pouvez utiliser celui précédemment créé pour la chaîne de prétraitement&amp;nbsp;&lt;/li&gt;&lt;li&gt;ou bien vous &lt;a href="http://enicolashernandez.blogspot.com/2010/03/creer-un-projet-eclipse-pour-le.html"&gt;créez un nouveau projet comme&amp;nbsp;indiquer ici&lt;/a&gt;&amp;nbsp;mais il vous faudra alors déclarer une dépendance vers soit le projet qui contient votre chaîne de prétraitement soit vers le jar que vous aurez exporté à partir de celle-ci. Pour déclarer la dépendance au projet, &lt;i&gt;Click&amp;nbsp;&lt;/i&gt;droit sur le projet&lt;i&gt;, Build path, Configure build path, &lt;/i&gt;Onglet&lt;i&gt; Projects, Add&lt;/i&gt; les projets&lt;i&gt;, Ok, OK...&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Les étapes du développement&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://enicolashernandez.blogspot.com/2012/01/definir-les-types-de-donnees-type.html"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Définition des types de données (type system) à manipuler au sein d'un composant UIMA&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;a href="http://enicolashernandez.blogspot.com/2012/01/implementer-le-code-metier-dun.html"&gt;Implémentation du code métier d'un composant Analysis Engine&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;a href="http://enicolashernandez.blogspot.com/2012/01/definition-dun-descripteur-primitif.html"&gt;Définition d'un descripteur primitif d'Analysis Engine&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Exécuter votre AE au sein d'un Aggregate&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Au sein du répertoire&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;desc/opinionRecognizer &lt;/span&gt;créer un descripteur aggregate qui ajoute en pipeline le descripteur de pretraitement et le descripteur de votre AE. N'oubliez pas de changer les capabilities.&lt;br /&gt;Et exécutez le.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Pour aller plus loin&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;la création et la récupération de vues,&lt;/li&gt;&lt;li&gt;la définition des paramètres au sein du descripteur et leur accès au sein du code,&amp;nbsp;&lt;/li&gt;&lt;li&gt;la déclaration et la manipulation de ressources partagées par plusieurs instances d'un même AE,&lt;/li&gt;&lt;li&gt;le parcours d'index d'annotations à l'aide de contraintes&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Remerciement&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Le contenu décrit sur cette page s'inspire, adapte, étend le support créé pour le tutoriel qui a eu lieu à &lt;a href="http://uima.apache.org/lsm09.html"&gt;UIMA@RMLL'09&lt;/a&gt;&amp;nbsp;ainsi que le&amp;nbsp;&lt;a href="http://uima.apache.org/d/uimaj-2.4.0/tutorials_and_users_guides.html#ugr.tug.aae.getting_started"&gt;tutoriel Getting started de la documentation d'Apache UIMA&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;Je vous invite à consulter ces différentes sources pour des informations complémentaires&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-1974750794831408912?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/1974750794831408912/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/developper-son-premier-composant-uima.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1974750794831408912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1974750794831408912'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2012/01/developper-son-premier-composant-uima.html' title='Développer son premier composant UIMA : l&apos;Analysis Engine (AE)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-8446885359341852434</id><published>2011-12-10T15:58:00.000-08:00</published><updated>2011-12-11T05:53:32.084-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sofa name mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='interoperability'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Mise en correspondance de vues via un Aggregate pour interconnecter des composants UIMA (view et sofa name mapping)</title><content type='html'>Après avoir rappelé quelques notions (que le lecteur averti peut ne pas lire), le post expose brièvement le problème et présente avec un exemple la mise en oeuvre d'une solution de mise en correspondance de vues au sein d'un Aggregate.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bref rappel de quelques notions&lt;/b&gt;&lt;br /&gt;&lt;div&gt;Les chapitres 5 et 6 de la documentation UIMA tutorials_and_users_guides [1;2] rappellent les définitions des notions d'&lt;i&gt;Artifact, Sofa et View&lt;/i&gt;.&lt;br /&gt;Brièvement &lt;i&gt;l'Artifact&lt;/i&gt; est la chose non structurée que l'on souhaite analyser. Le &lt;i&gt;Sofa (Subject of Analysis&lt;/i&gt;) est une représentation de&amp;nbsp;&lt;i&gt;l'Artifact&lt;/i&gt;&amp;nbsp;(e.g. HTML). Une &lt;i&gt;annotation metadata&lt;/i&gt; est de l'information associée à un&amp;nbsp;&lt;i&gt;Sofa&lt;/i&gt;&amp;nbsp;particulier pour en décrire une sous région. La notion de&amp;nbsp;&lt;i&gt;View&lt;/i&gt;&amp;nbsp;simplifie les choses quand plusieurs versions de&amp;nbsp;&lt;i&gt;l'Artifact&lt;/i&gt;&amp;nbsp;sont nécessaire à différentes étapes de l'analyse (e.g. une version sans balise d'un document XML). Les notions de&amp;nbsp;&lt;i&gt;Sofa&lt;/i&gt;&amp;nbsp;et de&lt;i&gt; CAS View&lt;/i&gt; sont liées. Dans l'implémentation Apache actuelle (2.4), à chaque&amp;nbsp;&lt;i&gt;Sofa&lt;/i&gt;&amp;nbsp;est associé une seule&amp;nbsp;&lt;i&gt;View&lt;/i&gt;&amp;nbsp;et à chaque&amp;nbsp;&lt;i&gt;View&lt;/i&gt;&amp;nbsp;un seul&amp;nbsp;&lt;i&gt;Sofa&lt;/i&gt;. Le nom qui désigne une vue particulière est&amp;nbsp;&lt;i&gt;Sofa&lt;/i&gt;&amp;nbsp;name pour des raisons historiques mais cela s'applique indifféremment à&amp;nbsp;&lt;i&gt;View&lt;/i&gt;&amp;nbsp;aussi.&lt;br /&gt;&lt;div&gt;L'analyse d'un composant UIMA (AE - Analysis Engine) porte toujours sur une vue. Il peut y en avoir plusieurs. L'AE peut en créer. Les résultats d'analyse peuvent être associés sur les vues traitées ou bien sur les vues créées.&lt;/div&gt;&lt;div&gt;Un AE qui travaille seulement sur une seule vue est appelée "&lt;i&gt;single-view component"&lt;/i&gt; et dans le cas contraire "&lt;i&gt;multi-view/multi-sofa&amp;nbsp;component"&lt;/i&gt;.&lt;br /&gt;Par défaut, si rien n'est spécifié il y a qu'une seule view et celle-ci a le sofa name de "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;_InitialView&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problème d'interopérabilité pour interconnecter des composants développés indépendamment&lt;/b&gt;&lt;br /&gt;Le développeur d'AE est libre de choisir le nom qu'il souhaite pour désigner ses vues d'entrée et ses vues de sortie.&lt;br /&gt;Cela conduit naturellement à quelques petits soucis lorsque l'on veut interconnecter des composants ayant des noms de vue différents.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Le mécanisme de mise en correspondance des vues au niveau d'un Aggregate&lt;/b&gt;&lt;br /&gt;La section 6.4 de la documentation explique et présente différentes situations de mises en correspondance : au sein d'un Aggregate, d'un CPE, d'une application UIMA, pour des services distants.&amp;nbsp;Je rapporte et illustre la solution au sein d'un AE Aggregate.&lt;br /&gt;&lt;br /&gt;Pour cela, j'utilise deux composants :&lt;i&gt;&amp;nbsp;l'XmlDetagger&lt;/i&gt; présent dans les exemples fournis avec Apache UIMA [4] et le &lt;i&gt;Whitespace Tokenizer&lt;/i&gt; des addons de la Sandbox d'Apache UIMA [5].&lt;br /&gt;&lt;br /&gt;&lt;i&gt;L'XmlDetagger&lt;/i&gt; est un composant multiple vues qui retire les balises d'un document XML. Il lit l'XML d'une vue input nommée&amp;nbsp;"&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;xmlDocument&lt;/span&gt;". Le contenu textuel est écrit dans une nouvelle vue output appelée&amp;nbsp;"&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;plainTextDocument&lt;/span&gt;".&lt;br /&gt;Le&amp;nbsp;&lt;i&gt;Whitespace Tokenizer&lt;/i&gt;&amp;nbsp;est un composant simple vue qui travaille sur la vue par défaut (i.e.&amp;nbsp;&amp;nbsp;"&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;_InitialView&lt;/span&gt;") et qui ajoute à celle-ci des annotations de phrases et de tokens.&lt;br /&gt;&lt;br /&gt;Rapidement, je mets en place un projet&amp;nbsp;Java sous Eclipse. J'y ajoute la UIMA Nature, déclare les répertoires &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;desc&lt;/span&gt; et &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;resources&lt;/span&gt; dans le &lt;i&gt;build path&lt;/i&gt; ainsi que les bibliothèques de UIMA&amp;nbsp;[6]. Je rajoute au&amp;nbsp;&amp;nbsp;le&amp;nbsp;&lt;i&gt;build path&lt;/i&gt;&amp;nbsp;les bibliothèques&lt;i&gt; uima-examples&lt;/i&gt;&amp;nbsp;[10]&amp;nbsp;et &lt;i&gt;addon&amp;nbsp;whitespace tokenizer&lt;/i&gt;&amp;nbsp;[9]&amp;nbsp;qui vont servir pour notre chaîne.&lt;br /&gt;&lt;br /&gt;Je crée un descripteur d'AE Aggregate&amp;nbsp;[7]&amp;nbsp;et j'y ajoute &lt;i&gt;by name&lt;/i&gt; en pipeline : d'abord&amp;nbsp;&lt;i&gt;l'XmlDetagger&lt;/i&gt;&amp;nbsp; puis&amp;nbsp;le&amp;nbsp;&lt;i&gt;Whitespace Tokenizer &lt;/i&gt;(je déclare les bons types à produire en output dans les &lt;i&gt;capabilities&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;A la sauvegarde le message suivant s'affiche&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;Error in AE Descriptor&lt;br /&gt;The Descriptor is invalid for the following reason:&lt;br /&gt;ResourceInitializationException: The output Sofa "plainTextDocument" in component "XmlDetagger" is not mapped to any output Sofa in its containing aggregate, "demoSofaNameMappingAAE". (Descriptor path ...)&amp;nbsp;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Ce n'est pas réellement une erreur si l'on sait ce que l'on fait. Une vue qui n'est pas utilisée par exemple n'a pas besoin d'être mise en correspondance dans l'Aggregate.&lt;br /&gt;En l'état si on exécute cet AE avec le&amp;nbsp;DocumentAnalyzer [8] sur un document XML quelconque, on obtiendra l'erreur suivante :&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator processing failed.   Caused by: org.apache.uima.cas.CASRuntimeException: No sofaFS with name xmlDocument found.&lt;/i&gt;&amp;nbsp;&lt;/blockquote&gt;Vraissemblablement ici il y a des vues qui requièrent d'être mise en correspondance et cela va se faire au niveau de l'Aggregate.&lt;br /&gt;&lt;br /&gt;La première chose à faire&amp;nbsp;est d'indiquer que la vue sur laquelle travaille&amp;nbsp;en entrée&amp;nbsp;&lt;i&gt;XmlDetagger,&lt;/i&gt;&amp;nbsp;à savoir &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;xmlDocument&lt;/span&gt;, correspond à &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;_InitialView&lt;/span&gt; dans l'Aggregate. Autrement dit, la vue d'entrée par défaut de l'Aggregate, &amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;_InitialView,&amp;nbsp;&lt;/span&gt;doit être mise en correspondance avec la vue d'entrée,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;xmlDocument,&amp;nbsp;&lt;/span&gt;de l'&lt;i&gt;XmlDetagger.&lt;/i&gt;&lt;br /&gt;Au sein du descripteur de l'Aggregate, c'est dans la section&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;capabilities&lt;/span&gt;&amp;nbsp;que l'on déclare les vues sur lesquelles on travaille (sous section&lt;i&gt;&amp;nbsp;component capabilities&lt;/i&gt;) et celles entre lesquelles on réalise des mises en correspondance (sous section&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;i&gt;sofaMappings&lt;/i&gt;&lt;i&gt;)&lt;/i&gt;.&lt;br /&gt;On ajoute d'abord la vue&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;xmlDocument&lt;/span&gt;&amp;nbsp;comme input (entrée) en faisant un &lt;i&gt;add sofa&lt;/i&gt; dans la&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;i&gt;component capabilities&lt;/i&gt;&lt;i&gt;.&lt;/i&gt;&lt;br /&gt;Ensuite&amp;nbsp;on indique&amp;nbsp;dans la sous section&amp;nbsp;&lt;i&gt;sofaMappings&lt;/i&gt;&amp;nbsp;que pour le composant (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;componentKey&lt;/span&gt;)&amp;nbsp;&lt;i&gt;XmlDetagger&lt;/i&gt;&amp;nbsp;sa vue (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;componentSofaName&lt;/span&gt;)&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;xmlDocument&lt;/span&gt;&amp;nbsp;correspond à la vue dans l'aggregate (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;aggregateSofaName&lt;/span&gt;)&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;_InitialView.&lt;/span&gt;&lt;br /&gt;Par les éléments &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;componentKey&lt;/span&gt; et &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;componentSofaName&lt;/span&gt; on désigne le composant et la vue souhaitée chez celui-ci comme devant intervenir dans un mapping.&amp;nbsp;L'élément&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;aggregateSofaName&lt;/span&gt;&amp;nbsp;est la clé partagée entre les éléments sofaMapping.&lt;br /&gt;Cette dernière opération doit se faire pour partie à la main en éditant le source (personnellement je n'y arrive pas via l'éditeur du formulaire). Cela donne&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;capability&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;nbsp; &amp;lt;inputSofas&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;sofaName&amp;gt;xmlDocument&amp;lt;/sofaName&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/inputSofas&amp;gt;&lt;br /&gt;&amp;nbsp; ...&lt;/span&gt;&lt;/blockquote&gt;et&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;lt;sofaMappings&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;sofaMapping&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;componentKey&amp;gt;XmlDetagger&amp;lt;/componentKey&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;componentSofaName&amp;gt;xmlDocument&amp;lt;/componentSofaName&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;aggregateSofaName&amp;gt;_InitialView&amp;lt;/aggregateSofaName&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/sofaMapping&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/sofaMappings&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;Si on réexécute l'AE on se rend compte que ce n'est pas encore l'idéal car&amp;nbsp;le&amp;nbsp;&lt;i&gt;Whitespace Tokenizer&lt;/i&gt;&amp;nbsp;travaille sur l'&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;_InitialView&lt;/span&gt;&amp;nbsp;par défaut et traite donc ce qui correspond à l'&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;xmlDocument&lt;/span&gt;&amp;nbsp;au lieu du &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;plainTextDocument.&lt;/span&gt;&lt;br /&gt;On rajoute dans l'élément &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;inputSofas&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;sofaName&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;_InitialView&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;/sofaName&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;et l'élément suivant&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;lt;sofaMapping&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;componentKey&amp;gt;WhitespaceTokenizer&amp;lt;/componentKey&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;componentSofaName&amp;gt;_InitialView&amp;lt;/componentSofaName&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;aggregateSofaName&amp;gt;plainTextDocument&amp;lt;/aggregateSofaName&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/sofaMapping&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;La vue&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;plainTextDocument&lt;/span&gt;&amp;nbsp;du &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;XmlDetagger&lt;/span&gt; n'a pas été redéfinie dans l'Aggregate, il n'y a pas d'ambiguité. Ce que produit le&amp;nbsp;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;XmlDetagger&amp;nbsp;&lt;/span&gt;&lt;/i&gt;au sein de sa vue output&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;plainTextDocument&amp;nbsp;&lt;/span&gt;est accessible sous ce même nom au sein de l'Aggregate qui le met en correspondance avec la vue input du&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;WhitespaceTokenizer.&lt;/span&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;L'exécution fonctionne comme attendu finalement. &amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quelques commentaires supplémentaires&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Au niveau de l'Aggregate après mise en correspondance, le nom de la vue du&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;componentSofaName&lt;/span&gt;&lt;br /&gt;sera renommé en le nom de la vue déclarée dans&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;aggregateSofaName.&lt;/span&gt;&lt;br /&gt;Les vues avec leur nom précédent ne seront plus accessibles. Une fois sérialisée en XMI, on constatera sela en cherchant la valeur de l'attribut &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;sofaID&lt;/span&gt;.&lt;br /&gt;Les composants d'Apache OpenNLP sont des composants multiples vues et requièrent en général l'usage de mises en correspondance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Liens&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://uima.apache.org/d/uimaj-2.4.0/tutorials_and_users_guides.html#ugr.tug.aas"&gt;5. Annotations, Artifacts &amp;amp; Sofas&lt;/a&gt; &lt;br /&gt;[2] &lt;a href="http://uima.apache.org/d/uimaj-2.4.0/tutorials_and_users_guides.html#ugr.tug.mvs"&gt;6. Multiple CAS Views&lt;/a&gt; &lt;br /&gt;[3]&amp;nbsp;&lt;a href="http://uima.apache.org/d/uimaj-2.4.0/tutorials_and_users_guides.html#ugr.tug.mvs"&gt;6.4. Sofa Name Mapping&lt;/a&gt;&lt;br /&gt;[4] UIMA_HOME/examples/descriptors/analysis_engine/XmlDetagger.xml&lt;br /&gt;[5]&amp;nbsp;&lt;a href="http://uima.apache.org/sandbox.html#whitespace.tokenizer"&gt;http://uima.apache.org/sandbox.html#whitespace.tokenizer&lt;/a&gt;&lt;br /&gt;[6]&amp;nbsp;&lt;a href="http://enicolashernandez.blogspot.com/2010/03/creer-un-projet-eclipse-pour-le.html"&gt;Créer un projet Eclipse pour le développement d'un composant UIMA&lt;/a&gt;&lt;br /&gt;[7]&amp;nbsp;&lt;a href="http://enicolashernandez.blogspot.com/2010/03/construire-une-chaine-de-traitement.html"&gt;Construire une chaîne de traitement UIMA à partir de composants existants&lt;/a&gt;&lt;br /&gt;[8]&amp;nbsp;&lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html"&gt;Exécuter un traitement ou une chaîne de traitement sous UIMA (avec UIMAJ et en local)&lt;/a&gt;&lt;br /&gt;[9] UIMA_HOME/addons/annotator/WhitespaceTokenizer/lib/uima-an-wst.jar&lt;br /&gt;[10] UIMA_HOME/lib/uima-examples.jar&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-8446885359341852434?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/8446885359341852434/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/mise-en-correspondance-de-vues-via-un.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8446885359341852434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8446885359341852434'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/mise-en-correspondance-de-vues-via-un.html' title='Mise en correspondance de vues via un Aggregate pour interconnecter des composants UIMA (view et sofa name mapping)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-4016612801612201922</id><published>2011-12-07T15:04:00.000-08:00</published><updated>2011-12-07T15:06:58.152-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='discourse'/><title type='text'>Création d'un portail collaboratif "Texte, Discours et Document"</title><content type='html'>&lt;div style="background-color: transparent;"&gt;&lt;div dir="ltr" id="internal-source-marker_0.3867933815345168" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="background-color: transparent;"&gt;&lt;div dir="ltr" id="internal-source-marker_0.3867933815345168" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Partisan du &lt;/span&gt;&lt;a href="http://fr.wikipedia.org/wiki/Travail_collaboratif"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 16px; vertical-align: baseline; white-space: pre-wrap;"&gt;travail collaboratif &lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;au niveau scientifique, je tente la création d’un (Google) document publié sur le Web et visible en édition par tous (sans nécessité de compte) pour construire un &lt;/span&gt;&lt;a href="https://docs.google.com/document/pub?id=1hKTG8PEH7EafYx8nr5tG2p5y6-616y5v3gIe5TMQGaE"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;portail de ressources&lt;/span&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; ayant trait à l&lt;/span&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;’étude, la modélisation, la reconnaissance automatique et les exploitations applicatives des mécanismes d’organisation de l’information au niveau du &lt;/span&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;”Texte, Discours et Document”&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" id="internal-source-marker_0.3867933815345168" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Cette page est avant tout un outil personnel. Peut être cela servira t elle à d’autres ? J’invite dans tous les cas toute personne intéressée à contribuer ! &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Par ressources, j’entends appels à communication, journaux majeurs, (web|bibli)ographie, personnes, équipes, projets, outils, corpus, etc. &lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Les objectifs sont la veille &lt;/span&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;au niveau national et international &lt;/span&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;et la cartographie du domaine selon les disciplines (traitement automatique des langues, linguistique, psycholinguistique, ingénierie des documents...) et courants théoriques.&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Les approches ayant une visée de traitement automatique seront privilégiées.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Le portail se trouve &lt;a href="https://docs.google.com/document/pub?id=1hKTG8PEH7EafYx8nr5tG2p5y6-616y5v3gIe5TMQGaE"&gt;ici&lt;/a&gt; !&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-4016612801612201922?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/4016612801612201922/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/creation-dun-portail-collaboratif-texte.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4016612801612201922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4016612801612201922'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/creation-dun-portail-collaboratif-texte.html' title='Création d&apos;un portail collaboratif &quot;Texte, Discours et Document&quot;'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-8218030735491943466</id><published>2011-12-07T13:25:00.000-08:00</published><updated>2011-12-07T13:25:14.572-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='forge'/><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCode'/><category scheme='http://www.blogger.com/atom/ns#' term='commons-based peer production'/><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Ajouter un dépot (repository) Maven à votre forge Google Code  grâce à Subversion</title><content type='html'>&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-size: medium;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;Discutés aux deux adresses ci-dessous mais l'alternative d'utiliser un dépot public est conseillée&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;a href="http://stackoverflow.com/questions/1280470/maven-repository-for-google-code-project"&gt;http://stackoverflow.com/questions/1280470/maven-repository-for-google-code-project&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;a href="http://www.thewebsemantic.com/2009/04/11/your-very-own-google-code-maven-repo/"&gt;http://www.thewebsemantic.com/2009/04/11/your-very-own-google-code-maven-repo/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-8218030735491943466?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/8218030735491943466/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/ajouter-un-depot-repository-maven-votre.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8218030735491943466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8218030735491943466'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/ajouter-un-depot-repository-maven-votre.html' title='Ajouter un dépot (repository) Maven à votre forge Google Code  grâce à Subversion'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-1585224073389125575</id><published>2011-12-07T13:20:00.000-08:00</published><updated>2011-12-07T13:20:05.454-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='forge'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCode'/><category scheme='http://www.blogger.com/atom/ns#' term='commons-based peer production'/><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><title type='text'>Mesurer le nombre de visites sur votre projet hébergé sous Google Code grâce à Google Analytics</title><content type='html'>Ce post décrit la procédure pour "track visits to Google code projects in &lt;a href="http://www.google.com/analytics/"&gt;Google Analytics&lt;/a&gt;".&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Anyone may sign up for a free Google Analytics account. Once you have an account&lt;/li&gt;&lt;li&gt;Add a profile for a new domain and specify URL   &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;http://code.google.com/&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Edit the profile that you just created to change its Website URL to &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;http://code.google.com/p/votre-nom-de-projet/&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Paste your Google Analytics profile's Web Property ID below and save changes.&amp;nbsp;&lt;/li&gt;&lt;li&gt;About 24 hours after you add your Web Property ID, your profile should begin to indicate that it is receiving data.&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-1585224073389125575?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/1585224073389125575/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/mesurer-le-nombre-de-visites-sur-votre.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1585224073389125575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1585224073389125575'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/mesurer-le-nombre-de-visites-sur-votre.html' title='Mesurer le nombre de visites sur votre projet hébergé sous Google Code grâce à Google Analytics'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-5560709433880378771</id><published>2011-12-07T13:11:00.000-08:00</published><updated>2011-12-07T13:11:58.160-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='forge'/><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCode'/><category scheme='http://www.blogger.com/atom/ns#' term='commons-based peer production'/><category scheme='http://www.blogger.com/atom/ns#' term='javadoc'/><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><title type='text'>Publier une Javadoc sous forge Google Code</title><content type='html'>La procédure est la suivante&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Récupérez la racine du projet&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;svn checkout&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;https://&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;votre-nom-de-projet&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;.googlecode.com/svn/&amp;nbsp;votre-nom-de-projet&amp;nbsp;--username votre.username&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;cd&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;votre-nom-de-projet&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Ajoutez un répertoire javadoc&amp;nbsp;au versionning&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;svn mkdir&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;javadoc&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Réalisez l'export de la javadoc via Eclipse se sera plus simple&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Ajoutez les fichiers javadoc au versionning&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;svn add javadoc/*&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Ajoutez les propriétés adéquates pour que svn interprète les fichiers de la javadoc &amp;nbsp;avec le bon type mime&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;find &amp;nbsp;javadoc -name "*.html" -exec svn propset svn:mime-type text/html &amp;nbsp;{} + ;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;find &amp;nbsp;javadoc -name "*.css" -exec svn propset svn:mime-type text/css &amp;nbsp;{} + ;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;find &amp;nbsp;javadoc -name "*.jpeg" -exec svn propset svn:mime-type&amp;nbsp;image/jpeg&amp;nbsp; {} + ;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Commitez vos ajouts&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;svn commit javadoc/ -m "ajout de la javadoc"&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Votre javadoc devrait être désormais accessible via l'url&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;http://votre-nom-de-projet.googlecode.com/svn/javadoc/index.html&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;; ajoutez ce lien dans la section de links de&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Administer &amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Project Summary&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-5560709433880378771?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/5560709433880378771/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/publier-une-javadoc-sous-forge-google.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5560709433880378771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5560709433880378771'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/publier-une-javadoc-sous-forge-google.html' title='Publier une Javadoc sous forge Google Code'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-7089730133286184003</id><published>2011-12-07T08:37:00.000-08:00</published><updated>2011-12-07T08:37:10.664-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='commons-based peer production'/><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><title type='text'>Publier sur le Web et partager les droits d'édition à tous d'un Google document</title><content type='html'>&lt;div&gt;Dans la quête de la recherche d'outils facilitant le travail collaboratif je tente d'utiliser un Google Document qui désormais offrent des fonctionnalités de partage des droits d'édition à tous (sans nécessité de posséder un compte) ainsi que de publication Web.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;La procédure ci-dessous est légèrement différente de celle trouvée sur des réponses officielles (&lt;a href="https://docs.google.com/support/bin/answer.py?answer=37579"&gt;publication de vos documents&lt;/a&gt;&amp;nbsp;et &lt;a href="https://docs.google.com/support/bin/answer.py?answer=47134"&gt;publication sur le web&lt;/a&gt;). Peut être est ce dû à un retard de mise à jour de la documentation ?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La procédure a été testée avec un Google Document, mais reste valable a priori pour tout type de documents (document, feuille de calcul, présentation...).&amp;nbsp;Ici vous trouverez un&amp;nbsp;&lt;a href="https://docs.google.com/document/pub?id=1hKTG8PEH7EafYx8nr5tG2p5y6-616y5v3gIe5TMQGaE"&gt;exemple de Google Document publié et ouvert à l'édition&lt;/a&gt;&amp;nbsp;(il s'agit d'un site sérieux merci de ne pas le modifier à moins que vous souhaitiez y contribuer).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Les deux actions, &lt;i&gt;partage de la visibilité&lt;/i&gt; et &lt;i&gt;publication sur le web&lt;/i&gt;, supposent que vous venez d'ouvrir ou de créer votre Google Document.&lt;br /&gt;&lt;br /&gt;Pour &lt;b&gt;partager la visibilité (notamment en édition)&amp;nbsp;&lt;/b&gt;&lt;div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Cliquer sur l'icone "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Share&lt;/span&gt;".&amp;nbsp;Une fenêtre de configuration intitulée "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Share settings&lt;/span&gt;" apparaît.&lt;/li&gt;&lt;li&gt;Cliquer sur "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Change&lt;/span&gt;" &amp;nbsp;au niveau de la première&amp;nbsp;ligne du tableau "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Who has access&lt;/span&gt;"&amp;nbsp;(par défaut l'accès est limité : "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Private - Only the people listed below can access&lt;/span&gt;"). Une fenêtre intitulée "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Visibility options&lt;/span&gt;" apparaît&lt;/li&gt;&lt;li&gt;Sélectionner &amp;nbsp;"&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Public on the web.&amp;nbsp;Anyone on the Internet can find and access. No sign-in required.&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;Et enfin changer l'accès de "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Can view&lt;/span&gt;" à "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Can edit&lt;/span&gt;" au niveau de la ligne "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Access:Anyone (no sign-in required)&lt;/span&gt;" qui a dû apparaître.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Pour &lt;b&gt;publier sur le Web un Google document&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Dans le menu File, cliquer sur "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Publish to the Web&lt;/span&gt;". Une fenêtre "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Control publishing&lt;/span&gt;" s'affiche.&lt;/li&gt;&lt;li&gt;Laisser coché "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Automatically republish when changes are made&lt;/span&gt;".&lt;/li&gt;&lt;li&gt;Cliquer sur "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;Start publishing&lt;/span&gt;" et confirmer.&amp;nbsp;Vous obtiendrez un lien vers le document publié&lt;/li&gt;&lt;li&gt;Par ailleurs, le lien par lequel vous éditiez votre document est désormais public. Vous pouvez le faire circuler.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Remarques&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Attention, il est important de noter que la publication sur le Web et sa visibilité sont deux concepts indépendants.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Les contributeurs du Web n'auront pas accès aux options de partage mais pourront intervenir sur la publication.&lt;/li&gt;&lt;li&gt;Ils n'auront pas non plus accès à l'historique des modifications ("&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;File &amp;gt; Revision history&lt;/span&gt;")&lt;/li&gt;&lt;li&gt;Ils pourront télécharger le document dans divers formats (notamment PDF)&lt;/li&gt;&lt;li&gt;Ils ne pourront pas changer les notifications qui sont propres à un compte à moins qu'ils ne soient connectés.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-7089730133286184003?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/7089730133286184003/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/publier-sur-le-web-et-partager-les.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7089730133286184003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7089730133286184003'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/12/publier-sur-le-web-et-partager-les.html' title='Publier sur le Web et partager les droits d&apos;édition à tous d&apos;un Google document'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-68538986948880523</id><published>2011-07-22T08:35:00.000-07:00</published><updated>2011-07-22T08:35:38.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='discourse'/><title type='text'>Sélection d'articles de TALN'2011</title><content type='html'>Le programme de la conférence est disponible à &lt;a href="http://taln2011.org/"&gt;http://taln2011.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Les articles suivant ont été sélectionnés pour leurs accointances avec le traitement automatique du discours&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Laurence Danlos.&amp;nbsp;Analyse discursive et informations de factivité&amp;nbsp;&lt;/li&gt;&lt;li&gt;Patrick Saint-Dizier.&amp;nbsp;TextCoop: un analyseur de discours basé sur les grammaires logiques&lt;/li&gt;&lt;li&gt;Charlotte Roze.&amp;nbsp;Vers une algèbre des relations de discours pour la comparaison de structures discursives&lt;/li&gt;&lt;li&gt;Laurence Longo (Université de Strasbourg), Amalia Todirascu (Université de Strasbourg).&amp;nbsp;RefGen, outil d'identification automatique des chaînes de référence en français&lt;/li&gt;&lt;li&gt;Delphine Bernhard and Anne-Laure Ligozat.&amp;nbsp;Analyse automatique de la modalité et du niveau de certitude : application au domaine médical&amp;nbsp;&lt;/li&gt;&lt;li&gt;Laurence Danlos and Charlotte Roze.&amp;nbsp;Traduction (automatique) des connecteurs de discours&lt;/li&gt;&lt;li&gt;Maxime Amblard, Michel Musiol and Manuel Rebuschi. Une analyse basée sur la S-DRT pour la modélisation de dialogues pathologiques&lt;/li&gt;&lt;li&gt;Yann Mathet (Université de Caen), Antoine Widlöcher (Université de Caen).&amp;nbsp;GlozzQL : un langage de requêtes incrémental pour les textes annotés&lt;/li&gt;&lt;li&gt;Marion Laignelet, Mouna Kamel and Nathalie Aussenac-Gilles.&amp;nbsp;Enrichir la notion de patron par la prise en compte de la structure textuelle - Application à la construction d'ontologie&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-68538986948880523?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/68538986948880523/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/07/selection-darticles-de-taln2011.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/68538986948880523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/68538986948880523'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/07/selection-darticles-de-taln2011.html' title='Sélection d&apos;articles de TALN&apos;2011'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-6265667164672631005</id><published>2011-06-08T06:09:00.000-07:00</published><updated>2011-06-10T07:45:13.844-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>UIMA sur HADOOP</title><content type='html'>Faire tourner des applications UIMA sur HADOOP.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.isabel-drost.de/hadoop/slides/uimaHadoopHofer.pdf"&gt;http://www.isabel-drost.de/hadoop/slides/uimaHadoopHofer.pdf&lt;/a&gt; (dans&amp;nbsp;&lt;a href="http://wiki.apache.org/hadoop/HadoopPresentations"&gt;http://wiki.apache.org/hadoop/HadoopPresentations&lt;/a&gt; ; illustration avec une application simple et UIMA 2.2.1)&lt;/li&gt;&lt;li&gt;&lt;a href="https://cwiki.apache.org/UIMA/running-uima-apps-on-hadoop.html"&gt;https://cwiki.apache.org/UIMA/running-uima-apps-on-hadoop.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://cwiki.apache.org/UIMA/running-uima-apps-on-hadoop.html"&gt;&lt;/a&gt;&lt;a href="https://github.com/jnioche/behemoth"&gt;Behemoth&lt;/a&gt; (is an Apache Licensed open source platform for large scale document processing which allows deploying UIMA applications within Hadoop)&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;En Février dernier (2011), IBM a fait un gros coup de pub avec son système&amp;nbsp;Watson qui a gagné le jeu Jeopardy aux Etats-Unis contre des joueurs&amp;nbsp;humains (il s'agit de retrouver la question à partir d'une réponse soumise). Le système utilisait UIMA et HADOOP...&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://blogs.apache.org/foundation/entry/apache_innovation_bolsters_ibm_"&gt;https://blogs.apache.org/foundation/entry/apache_innovation_bolsters_ibm_&lt;/a&gt;s (annonce officielle)&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.reddit.com/2011/02/ibm-watson-research-team-answers-your.html"&gt;http://blog.reddit.com/2011/02/ibm-watson-research-team-answers-your.html&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.enterpriseirregulars.com/32391/beyond-jeopardy-with-ibm-watson-%E2%80%93-quick-analysis"&gt;http://www.enterpriseirregulars.com/32391/beyond-jeopardy-with-ibm-watson-%E2%80%93-quick-analysis&lt;/a&gt;&amp;nbsp;(Question/Réponses sur Watson)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Pour aller plus loin&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.quora.com/IBM-Watson/Whats-the-system-architecture-of-the-IBM-Watson"&gt;http://www.quora.com/IBM-Watson/Whats-the-system-architecture-of-the-IBM-Watson&lt;/a&gt;&amp;nbsp;(une comparaison des architectures entre Watson et&amp;nbsp;&lt;a href="http://www.wolframalpha.com/"&gt;Wolfram&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://maggon.posterous.com/uima-and-gate-applications-over-hadoop"&gt;http://maggon.posterous.com/uima-and-gate-applications-over-hadoop&lt;/a&gt;&amp;nbsp;(UIMA et GATE sur HADOOP)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-6265667164672631005?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/6265667164672631005/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/06/uima-sur-hadoop.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/6265667164672631005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/6265667164672631005'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/06/uima-sur-hadoop.html' title='UIMA sur HADOOP'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-3188677714649828320</id><published>2011-05-25T08:29:00.000-07:00</published><updated>2011-10-07T06:13:04.386-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hmm tagger'/><category scheme='http://www.blogger.com/atom/ns#' term='uima-addons'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Construire des modélisations du French Treebank pour le UIMA HMM Tagger</title><content type='html'>&lt;i&gt;Mise à jour le 1 juin. Précision sur le traitement des mots composés du French Treebank&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Ce post décrit la procédure que j'ai mise en place pour construire des modélisations de type HMM (&lt;i&gt;Hidden Markov Model&lt;/i&gt;) utilisées par le &lt;a href="http://uima.apache.org/sandbox.html#tagger.annotator"&gt;Tagger de la UIMA sandbox&lt;/a&gt; à partir d'un&lt;i&gt; corpus XML&lt;/i&gt; qui porte des annotations sur des &lt;i&gt;tokens mots, &lt;/i&gt;à savoir le&amp;nbsp;&lt;a href="http://www.llf.cnrs.fr/Gens/Abeille/French-Treebank-fr.php"&gt;corpus&amp;nbsp;French Treebank&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Ci-dessous je présente&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;les données d'entraînement&amp;nbsp;utilisées&lt;/li&gt;&lt;li&gt;la procédure&amp;nbsp;d'entraînement&amp;nbsp;et sa mise en oeuvre&lt;/li&gt;&lt;li&gt;les composants requis&lt;/li&gt;&lt;li&gt;le paramétrage des composants&amp;nbsp;&lt;/li&gt;&lt;li&gt;le contenu d'un projet Eclipse autonome que je distribue et qui illustre la phase d'entraînement de modélisations et la phase d'étiquetage à partir de modélisations construites.&lt;/li&gt;&lt;li&gt;les opérations à réaliser au sein du projet Eclipse pour entraîner une modélisation ou étiqueter des textes à partir d'une modélisation existante&lt;/li&gt;&lt;li&gt;des problèmes qu'il reste à rêgler pour améliorer les modélisations&lt;/li&gt;&lt;li&gt;une FAQ&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://pagesperso.lina.univ-nantes.fr/~hernandez-n/pub/demo-frenchTreebank-hmmTrainerTagger-v110525.tgz"&gt;Le projet Eclipse est téléchargeable ici&lt;/a&gt;. Il s'agit de l'importer dans Eclipse. La donnée d'entraînement n'est pas distribuée (consulter&amp;nbsp;&lt;a href="http://www.llf.cnrs.fr/Gens/Abeille/French-Treebank-fr.php"&gt;la page dédiée au corpus pour cela&lt;/a&gt;, seul un exemple que j'ai construit est distribué). Les modélisations construites à partir du corpus sont présentes et sont distribuées sous licence Apache v2. Toutes les dépendances requises à l'exécution sont présentes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Corpus d'entraînement : le French Treebank (&lt;i&gt;training data set&lt;/i&gt;)&lt;/b&gt;&lt;br /&gt;J'ai utilisé une version&amp;nbsp;UTF-8&amp;nbsp;de Juillet 2010 du &lt;a href="http://www.llf.cnrs.fr/Gens/Abeille/French-Treebank-fr.php"&gt;corpus&amp;nbsp;French Treebank&lt;/a&gt;. Ce corpus a été&amp;nbsp;construit à l'Université de Paris 7. Consulter Abeille et al, 2003, Building a treebank for French, in Treebanks, Kluwer pour plus de détails. Contacter A. Abeille pour obtenir une version de ce corpus.&lt;br /&gt;&lt;br /&gt;L'information annotée dans ce corpus permet de construire (entre autres) des modélisations pour&amp;nbsp;l'analyse morphosyntaxique de token mots telles que de&lt;br /&gt;&lt;ul&gt;&lt;li&gt;l'étiquetage grammatical (&lt;i&gt;part&amp;nbsp;of speech (pos) tagging&lt;/i&gt;),&amp;nbsp;&lt;/li&gt;&lt;li&gt;de la morphologie flexionnelle (&lt;i&gt;inflection analysis (mph)&lt;/i&gt;),&amp;nbsp;&lt;/li&gt;&lt;li&gt;de la sous-catégorisation grammaticale (&lt;i&gt;subcategorization analysis (subcat)&lt;/i&gt;)&amp;nbsp;&lt;/li&gt;&lt;li&gt;et de la lemmatisation (&lt;i&gt;lemmatization (lemma)&lt;/i&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Je précise que la&amp;nbsp;&lt;i&gt;procédure décrite ici est indépendante du format XML de la donnée&amp;nbsp;&lt;/i&gt;&lt;i&gt;d'entraînement&lt;/i&gt;&amp;nbsp;dans la mesure où la seule contrainte soit que l'annotation à apprendre doit être décrite à l'aide d'un balisage en ligne XML (c'est-à-dire couvrant la zone de texte annotée). Le composant d'importation (uima-connectors) que j'utilise me permet cela.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Procédure de construction de modélisation (&lt;i&gt;training process&lt;/i&gt;)&lt;/b&gt;&lt;br /&gt;La procédure de construction de modélisation est la suivante&lt;br /&gt;&lt;ol&gt;&lt;li&gt;importation des informations portées par les éléments et attributs XML en annotations génériques au sein d'un CAS représentant le document.&lt;/li&gt;&lt;li&gt;entraînement&amp;nbsp;d'une modélisation HMM à partir de ces annotations&lt;/li&gt;&lt;/ol&gt;La mise en oeuvre de la procédure&lt;br /&gt;&lt;ul&gt;&lt;li&gt;utilise un &lt;i&gt;composant générique pour l'importation&lt;/i&gt; des informations XML -les informations sont importées sous la forme d'annotations génériques- et implique l'utilisation d'&lt;i&gt;un composant assurant la&amp;nbsp;transformation des annotations génériques en annotations à même d'être prise en compte par le composant suivant&amp;nbsp;&lt;/i&gt;d'apprentissage.&lt;/li&gt;&lt;li&gt;utilise les paramètres des différents composants pour spécifier&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;les &lt;i&gt;vues&lt;/i&gt; sur lesquelles travailler : la vue dans laquelle est chargée le document XML et celle où se trouve seulement le contenu textuel avec les annotations importées&lt;/li&gt;&lt;li&gt;les &lt;i&gt;featurePath&lt;/i&gt; qui pointent le trait de l'annotation dont il faut considérer la valeur pour l'apprentissage&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Composants utilisés (&lt;i&gt;components&lt;/i&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;En pratique j'ai utilisé trois&amp;nbsp;&lt;i&gt;Analysis Engines (AE)&lt;/i&gt; appartenant à trois projets distincts pour la phase de construction&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;le premier,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XML2CAS&lt;/span&gt; de&amp;nbsp;&lt;i&gt;&lt;a href="http://code.google.com/p/uima-connectors/"&gt;uima-connectors&lt;/a&gt;,&lt;/i&gt;&amp;nbsp;permet de parcourir des documents XML et de transformer les éléments et attributs XML en annotations des zones de texte couvertes.&lt;/li&gt;&lt;li&gt;le second,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;annotationMapper&lt;/span&gt; de&amp;nbsp;&lt;a href="http://code.google.com/p/uima-type-mapper/"&gt;&lt;i&gt;uima-type-mapper&lt;/i&gt;&lt;/a&gt;, permet de sélectionner et transformer les annotations produites par le uima-connectors en annotations que prendra en entrée le dernier composant d'entraînement (ce projet est aussi appelé &lt;i&gt;uima-annotation-mapper&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;le troisième,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;hmmModelTrainer&lt;/span&gt; de&amp;nbsp;&lt;i&gt;&lt;a href="http://uima.apache.org/sandbox.html#tagger.annotator"&gt;uima-tagger&lt;/a&gt;&amp;nbsp;de la sandbox Apache UIMA,&amp;nbsp;&lt;/i&gt;permet d'entraîner une modélisation.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Et j'ai utilisé deux AE distincts pour la phase d'étiquetage&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;le premier,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;whitespaceTokenizer&lt;/span&gt;&amp;nbsp;de&amp;nbsp;&lt;i&gt;&lt;a href="http://uima.apache.org/sandbox.html#whitespace.tokenizer"&gt;whitespace tokenizer&lt;/a&gt;,&lt;/i&gt;&amp;nbsp;permet de découper un texte en phrases et mots.&lt;/li&gt;&lt;li&gt;le second,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;tagger&lt;/span&gt;&amp;nbsp;de&amp;nbsp;&lt;i&gt;&lt;a href="http://uima.apache.org/sandbox.html#tagger.annotator"&gt;uima-tagger&lt;/a&gt;&amp;nbsp;&lt;/i&gt;&lt;i&gt;de la sandbox Apache UIMA&lt;/i&gt;, permet d'étiqueter un texte à l'aide d'une modélisation.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;A propos de l'Apache UIMA Sandbox HMM Tagger&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;J'ai utilisé la version présente dans UIMA Annotator Addons 2.3.1 qui corrige une anomalie&amp;nbsp;&lt;a href="https://issues.apache.org/jira/browse/UIMA-2106"&gt;https://issues.apache.org/jira/browse/UIMA-2106&lt;/a&gt;&amp;nbsp;(rapport d'anomalie + correctif).&amp;nbsp;Cette version qui applique le correctif n'est pas encore distribuée à l'heure de l'écriture de ce message, mais se trouve présente dans le répertoire subversion du Tagger dès la version&amp;nbsp;1088626. Une version compilée avec les sources est fournie.&lt;/li&gt;&lt;li&gt;La partie apprentissage portée par l'AE&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;hmmModelTrainer&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;permet de spécifier le trait de l'annotation (&lt;i&gt;featurePath&lt;/i&gt;) à prendre en compte pour l'entraînement.&amp;nbsp;Néanmoins celui-ci ne permet pas de spécifier des contraintes notamment sur la valeur d'autres traits présents dans l'annotation dont on a défini le&amp;nbsp;&lt;i&gt;featurePath&lt;/i&gt;. Or ici nous en avons besoin pour sélectionner seulement certaines des annotations&amp;nbsp;produites par le&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XML2CAS&lt;/span&gt;.&amp;nbsp;&lt;/li&gt;&lt;li&gt;La partie étiquetage&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;portée par l'AE&amp;nbsp;&lt;/span&gt;tagger&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;ne permet pas à l'heure actuelle de spécifier le trait à annoter. En l'état, quelle que soit&amp;nbsp;la modélisation, le Tagger affecte la valeur prédite au&amp;nbsp;&lt;i&gt;featurePath&lt;/i&gt;&amp;nbsp;suivant&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;org.apache.uima.TokenAnnotation:posTag&lt;/span&gt;. Ce n'est pas très embêtant si l'on sait ce que l'on fait.&amp;nbsp;Le&amp;nbsp;patch&amp;nbsp;&lt;a href="https://issues.apache.org/jira/browse/UIMA-2110"&gt;https://issues.apache.org/jira/browse/UIMA-2110&lt;/a&gt;&amp;nbsp; soumis à Apache vise à rendre plus générique le Tagger et résoudre notamment cette limite. Entre autre il permet de spécifier sous forme d'un&amp;nbsp;&lt;i&gt;featurePath&lt;/i&gt;&amp;nbsp;le trait de l'annotation auquel il faut donner la valeur prédite par la modélisation. Ce patch n'a pas encore accepté par Apache.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Paramétrage des composants utilisés (&lt;i&gt;parameter settings&lt;/i&gt;)&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;L'AE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XML2CASAE&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;produit&amp;nbsp;&lt;/span&gt;&lt;/span&gt;des annotations&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XMLElementAnnotation&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;&amp;nbsp;et&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XMLAttributeAnnotation&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;pour chaque élément XML rencontré.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;Les traits de&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XMLElementAnnotation&lt;/span&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;permettent de connaître le nom de l'élément XML et les noms et les valeurs de ses attributs. Deux structures de données sont disponibles pour cela, l'une d'elle est un tableau de référence vers des annotations&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XMLAttributeAnnotation&lt;/span&gt;&amp;nbsp;correspondant à chacun de leurs attributs. Les&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XMLAttributeAnnotation&lt;/span&gt;&amp;nbsp;correspondent à une annotation pour chaque attribut. Elles déclarent le nom de l'élément XML qu'elles caractérisent ainsi que le nom et la valeur de l'attribut.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;nbsp;prend les paramètres suivants&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;nom de la vue à créer avec seulement le contenu textuel du document XML&lt;/i&gt;&amp;nbsp;(&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;PlainTextOutputView&lt;/span&gt;). La vue où se trouve le document textuel peut aussi être spécifiée si elle est différente de celle par défaut. Ici&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;PlainTextDocument&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;/span&gt;&lt;i&gt;nom des éléments XML à transformer en annotations dans le CAS&lt;/i&gt;&amp;nbsp;&amp;nbsp;(&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XmlTagsToTurnIntoAnnotation&lt;/span&gt;). Ici&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;w&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, qui correspond à la balise du French Treebank pour &lt;i&gt;mot&lt;/i&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;L'AE&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;annotationMapper&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;prend en paramètre un &lt;i&gt;fichier de règles qui assurent la transformation d'une annotation en une autre&lt;/i&gt; (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;RulesFile&lt;/span&gt;).&amp;nbsp;&lt;/li&gt;&lt;li&gt;Globalement ici la règle permet d'une part de sélectionner&amp;nbsp;les annotations &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XMLAttributeAnnotation&lt;/span&gt; qui correspondent à des attributs de mots (balises &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;w&lt;/span&gt;) et qui ont un attribut non nul dont on désire utiliser la valeur comme base d'apprentissage&amp;nbsp;(&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;cat, subcat, lemma, mph, ee, ...&lt;/span&gt;), et d'autre part de créer pour chacune de ces annotations une annotation manipulable par le composant d'apprentissage avec un trait initialisé à la valeur à apprendre.&lt;/li&gt;&lt;li&gt;Ici la règle crée des&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;org.apache.uima.TokenAnnotation&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; et instancie la valeur du trait&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;posTag&lt;/span&gt;. On pourrait pour chaque caractéristique apprise changer le trait à considérer. Ce n'est pas très pertinent pour notre construction. Un même trait peut acceillir tour à tour les valeurs du corpus pour chaque entraînement.&lt;/li&gt;&lt;li&gt;A noter qu'il est possible de spécifier avec le&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;hmmModelTrainer&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;le &lt;i&gt;featurePath&lt;/i&gt; à considérer comme base d'entraînement. Néanmoins celui-ci ne permet pas de spécifier des contraintes notamment sur la valeur d'autres traits présents dans l'annotation dont on a défini le &lt;i&gt;featurePath&lt;/i&gt;. Or ici nous en avons besoin pour sélectionner un sous ensemble des&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XMLAttributeAnnotation&amp;nbsp;&lt;/span&gt;parmi celles produites par le &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XML2CAS&lt;/span&gt;. C'est cette situation qui justifie notamment l'utilisation de &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;l'annotationMapper&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;L'AE&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;hmmModelTrainer&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;prend en paramètre&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;le&amp;nbsp;&lt;i&gt;&amp;nbsp;featurePath&amp;nbsp;qui pointe le trait de l'annotation dont il faut considérer la valeur pour l'apprentissage&lt;/i&gt; (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FeaturePathPOS&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;le &lt;i&gt;nom et chemin du fichier de modélisation à créer&lt;/i&gt; (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;ModelExportFile&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;L'AE&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;tagger&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;prend en paramètre&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;le&amp;nbsp;&lt;i&gt;&amp;nbsp;featurePath&amp;nbsp;qui pointe le trait de l'annotation qu'il faut instancier avec la valeur prédite par la modélisation&lt;/i&gt;&amp;nbsp;(&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;TokenFeaturePath&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;le&amp;nbsp;&lt;i&gt;nom et chemin du fichier de modélisation à utiliser&lt;/i&gt;&amp;nbsp;(&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;ModelFile&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Le descripteur qui met en oeuvre cet AE l'utilise plusieurs fois consécutivement avec des jeux de valeurs différentes pour appliquer les différents modélisations.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Nous avons étendu le type&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;org.apache.uima.TokenAnnotation&lt;/span&gt; à cet effet. Consulter le fichier &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;desc/FrenchTreebankTS.xml&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Contenu du projet Eclipse (&lt;i&gt;Eclipse project description&lt;/i&gt;)&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Le projet Eclipse est globalement un projet java ayant la &lt;i&gt;UIMA Nature&lt;/i&gt; et ses sous répertoires&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;desc&amp;nbsp;&lt;/span&gt;et&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp;resources&lt;/span&gt;&amp;nbsp; déclarés comme appartenant au &lt;i&gt;build path&lt;/i&gt;. Le post suivant décrit comment &lt;a href="http://enicolashernandez.blogspot.com/2010/03/creer-un-projet-eclipse-pour-le.html"&gt;créer un projet Eclipse en rajoutant dans le build path les dépendances minimales UIMA requises pour exécuter une chaîne de traitement UIMA&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le répertoire &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;lib&lt;/span&gt; contient toutes les dépendances requises, celles de uima, celles des AE de notre chaîne &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;(uima-common,&amp;nbsp;uima-connectors, jxpath et&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;uima-type-mapper&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;)&lt;/span&gt;&amp;nbsp;avec notamment le&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;whitespace&amp;nbsp;tokenizer&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;(uima-an-wst)&lt;/span&gt; de la UIMA Sandbox et la version&amp;nbsp;patchée du &lt;span class="Apple-style-span" style="font-family: inherit;"&gt;HMMTagger (&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;uima-an-tagger&lt;/span&gt;). Ces dépendances ont été déclarées dans le &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;.classpath&lt;/span&gt;. Elles seront accessibles lors de l'import du projet.&lt;/li&gt;&lt;li&gt;Le répertoire &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;data/input&lt;/span&gt; contient un sous répertoire &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreebank&lt;/span&gt; avec un fichier exemple qui reprend la structure XML d'un fichier du corpus original. Ce fichier a en fait été construit a posteriori à partir d'analyses produites. Il peut dans le cas présent servir de base d'exemple de la chaîne d'entraînement. Le répertoire contient aussi un sous répertoire &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;text-fr&lt;/span&gt; avec des textes en français qui peuvent servir pour tester l'étiquetage à partir des modélisations construites.&lt;/li&gt;&lt;li&gt;Le répertoire&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;data/output&lt;/span&gt;&amp;nbsp;accueille les résultats d'exécution des chaînes de traitement, aussi bien les xmi&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;(xmi)&amp;nbsp;&lt;/span&gt;que les modélisations&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;(models).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Le répertoire &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;resources/models&lt;/span&gt; contient les modélisations construites sur le corpus FrenchTreebank (&lt;a href="http://www.llf.cnrs.fr/Gens/Abeille/French-Treebank-fr.php"&gt;les jeux d'étiquettes (ou &lt;i&gt;tagset&lt;/i&gt;) sont décrits ici&lt;/a&gt;)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreebankPosUimaHmmTaggerModel.dat&lt;/span&gt;&lt;i&gt;: part of speech (pos) tagging ('cat' attribute in the French Treebank)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreebankMphUimaHmmTaggerModel.dat&lt;/span&gt;&lt;i&gt;: inflection analysis&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreebankSubcatUimaHmmTaggerModel.dat&lt;/span&gt;&lt;i&gt;: subcategorization analysis&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreebankEeUimaHmmTaggerModel.dat&lt;/span&gt;&lt;i&gt;: combination of part of speech (pos) tagging, subcategorization analysis and inflection analysis&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreebankLemmaUimaHmmTaggerModel.dat&lt;/span&gt;: lemmatization&amp;nbsp;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;Le répertoire&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;resources&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;contient aussi un fichier de règle pour la transformation d'annotations en autres. Cela permet de faire le pont entre le composant d'importation et le HMMTrainer. Son nom ici est&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XML2CAS-to-HMMTagger_annotationMapperRules.xml&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Le répertoire &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;desc&lt;/span&gt; contient&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;le descripteur de la chaîne utile pour la construction des modélisations à savoir&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;XML2CAS-annotationMapper-HMMTrainModel-FrenchTreeBank-AAE.xml&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;un descripteurs de chaîne pour l'étiquetage à partir d'une modélisation à savoir &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;wst-FrenchTreebank-HmmTagger-AAE.xml.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; Celle disponible par défaut dans l'addon convient très bien mais requiert quelques manipulations pour spécifier le bon fichier de modélisation et étiquetera toujours le &lt;/span&gt;&lt;i style="font-family: inherit;"&gt;featurePath&lt;/i&gt; &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;org.apache.uima.TokenAnnotation:posTag&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;/span&gt;un descripteur qui sert pour déclarer l'importation d'un &lt;i&gt;Type System&lt;/i&gt; étendant le type TokenAnnotation avec de nouveaux attributs susceptibles d'accueillir le résultat d'étiquetage de différentes modélisations (morphologie, lemmatisation, ...) à savoir&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreebankAE.xml&amp;nbsp;&lt;/span&gt;qui importe&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreebankTS.xml.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Réaliser la construction d'une modélisation (r&lt;i&gt;unning the training process&lt;/i&gt;)&lt;/b&gt;&lt;br /&gt;&lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html"&gt;Le post suivant explique comment exécuter une chaîne de traitement UIMA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pour réaliser la construction d'une modélisation, utiliser le descripteur&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;desc/XML2CAS-annotationMapper-HMMTrainModel-&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;FrenchTreeBank-&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;AAE.xml&amp;nbsp;&lt;/span&gt;qui constitue un&amp;nbsp;&lt;i&gt;aggregate&lt;/i&gt;&amp;nbsp;d'AE présentés ci-dessus en&amp;nbsp;&lt;i&gt;pipeline&lt;/i&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Placer votre corpus sous la forme d'un seul fichier dans le répertoire &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;data/input/FrenchTreebank&lt;/span&gt;. Un fichier exemple est fourni. Une manipulation est décrite ci-dessous pour produire un seul fichier à partir des différents fichiers du French Treebank.&lt;/li&gt;&lt;li&gt;Spécifier dans le fichier de règles de l'annotationMapper le nom de l'attribut XML du corpus French Treebank sur lequel vous souhaitez réaliser l'apprentissage (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;cat, subcat, lemma, mph, ee, ...&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Spécifier le nom du fichier de modélisation à produire dans le paramètre du descripteur&amp;nbsp;&lt;/li&gt;&lt;li&gt;Lancer le &lt;i&gt;documentAnalyzer&lt;/i&gt; (par exemple) pour exécuter la chaîne en spécifiant surtout l'input&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Réaliser l'étiquetage à partir d'une modélisation&amp;nbsp;&lt;/b&gt;&lt;b&gt;(&lt;i&gt;running the tagging process&lt;/i&gt;)&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Pour cela utiliser le descripteur &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;desc/&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;wst-FrenchTreebank-HmmTagger-AAE.xml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Les données traitées doivent être des fichiers textes&lt;/li&gt;&lt;li&gt;Spécifier le fichier de modélisation dans le paramètre du descripteur&lt;/li&gt;&lt;li&gt;Spécifier le &lt;i&gt;featurePath&lt;/i&gt; de l'annotation à créer avec la valeur prédite par la modélisation&lt;/li&gt;&lt;li&gt;Lancer le &lt;i&gt;documentAnalyzer&lt;/i&gt; (par exemple) pour exécuter la chaîne&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Limites actuelles des modélisations&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Le corpus compte des mots simples et des mots composés, tout deux balisés avec le même élément. Les mots composés imbriquent des mots simples. Ceux-ci n'ont pas avec les mêmes traits que leurs homologues non imbriqués. La construction de ces modélisations a considéré les mots composés mais non les mots simples imbriqués.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Les mots composés sont de la forme suivante&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;lt;w cat="D" ee="D-def-fp" ei="Dfp" lemma="le" mph="fp" subcat="def"&amp;gt;&amp;lt;/w&amp;gt; &amp;lt;w cat="N" ee="N-C-fp" ei="NCfp" lemma="banque centrale" mph="fp" subcat="C"&amp;gt; &amp;lt;w catint="N"&amp;gt;banques&amp;lt;/w&amp;gt; &amp;lt;w catint="A"&amp;gt;centrales&amp;lt;/w&amp;gt; &amp;lt;/w&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;/span&gt;ou bien&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;lt;w cat="ADV" ee="ADV" ei="ADV" lemma="à tout prix"&amp;gt; &amp;lt;w catint="P"&amp;gt;à&amp;lt;/w&amp;gt; &amp;lt;w catint="D"&amp;gt;tout&amp;lt;/w&amp;gt; &amp;lt;w catint="N"&amp;gt;prix&amp;lt;/w&amp;gt; &amp;lt;/w&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;/span&gt;La règle de sélection utilisée par l'&lt;i&gt;annotation mapper&lt;/i&gt; met des contraintes sur la présence de certains traits. Pour rappel, la contrainte est&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;constraint&gt;&amp;lt;Contrainte&lt;/constraint&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;.[@elementName='w' and @attributeName='cat' and @attributeValue!=""]&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;constraint&gt;&amp;lt;/Contrainte&lt;/constraint&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;/span&gt;En conséquence, les mots simples composants les mots composés ne sont pas considérés.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;A l'inverse, si l'on ne souhaite pas considérer les mots composés mais les mots simples on peut écrire une contrainte comme celle-ci (on filtre sur la présence d'un caractère blanc)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;constraint&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;constraint&gt;&amp;lt;Contrainte&lt;/constraint&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;.[@elementName='w' and not(contains(@coveredText,' '))]&lt;/constraint&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;constraint&gt;&amp;lt;/Contrainte&lt;/constraint&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;Mais là effectivement nous n'avons plus accès aux traits du mots composés. Cela ne pose pas de problème pour de l'entrainement de découpeur en mots ou en phrases.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;L'apprentissage d'un étiqueteur morphosyntaxique sur des mots composés ne semble pas non plus poser problème.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;Si vraiment on voulait ne pas considérer les mots simples, on pourrait imaginer une contrainte avec alternative qui exclurait les mots composés et considèrerait les traits des mots simples mais cela ne concernerait pas tous les traits (ici seulement les étiquettes grammaticales : cat et catint).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le processus de lemmatisation via l'algorithme utilisé présente des abérations lorsqu'il ne connaît pas le mot à lemmatiser. En effet, il va lui affecter le lemme d'un mot qu'il connaît et avec lequel il partage le plus grand suffixe commun.&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Un seul "gros" fichier&amp;nbsp;d'entraînement&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Le corpus French Treebank est un ensemble de fichiers XML. Utilisant un AE et non un Collection Reader (CR) de uima-connector, il me fallait un seul fichier XML contenant toute la collection. Une petite ligne de shell me résoud le problème&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;echo '&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;' &amp;gt; frenchTreebank.xml ; echo "&amp;lt;ftb&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;ft&gt;" &amp;gt;&amp;gt;&amp;nbsp;frenchTreebank.xml ; for f in `ls lmf*.xml`; do echo $f; export HEAD=`head -1 $f`; if [ "$HEAD" == '&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&amp;lt;text&lt;text&gt;&amp;gt;' ]; then echo "&lt;/text&gt;&lt;/ft&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;text&lt;text&gt;&amp;gt;&lt;/text&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;ft&gt;&lt;text&gt;&lt;text&gt;" &amp;gt;&amp;gt;&amp;nbsp;frenchTreebank.xml; fi; &amp;nbsp;cat $f |grep -v "xml version" &amp;gt;&amp;gt;&amp;nbsp;frenchTreebank.xml; done ; echo "&amp;lt;/ftb&amp;gt;&lt;/text&gt;&lt;/text&gt;&lt;/ft&gt;" &amp;gt;&amp;gt;&amp;nbsp;frenchTreebank.xml&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Environnement d'exécution&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;J'ai réalisé mes traitements sur un système linux via Eclipse.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;J'ai eu à augmenter les capacités de la machine virtuelle Java lors de l'exécution de la chaîne de traitement. Via Eclipse, j'ai rajouté la valeur&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;-Xmx2048m&lt;/span&gt;&amp;nbsp;dans le menu&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;Run Configurations &amp;gt; Arguments &amp;gt; VM Arguments&lt;/span&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;La machine que j'utilisais offre 16 Go de RAM et un processeur Intel Xeon W3565 @ 3.20GHz.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Implémentation&amp;nbsp;de l'algorithme Viterbi du HMM Tagger&lt;/b&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;L'implémentation actuelle (&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;src/main/java/org/apache/uima/examples/tagger/Viterbi.java&lt;/span&gt;) fonctionne grosso modo de la sorte (il y a ici d'autres détails techniques cachés) :&lt;br /&gt;Pour chaque mot phrase d'une phrase on cherche à lui attribuer une probabilité d'étiquette pour cela :&amp;nbsp;&lt;/div&gt;on regarde si on connaît la probabilité du mot ou de sa forme en minuscule sinon on cherche le suffixe le plus long en commun avec un mot connu sinon on lui attribue la probabilité d'un mot prédéfini.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-3188677714649828320?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/3188677714649828320/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/05/construire-des-modelisations-du-french.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/3188677714649828320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/3188677714649828320'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/05/construire-des-modelisations-du-french.html' title='Construire des modélisations du French Treebank pour le UIMA HMM Tagger'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-2025439648553387928</id><published>2011-03-28T05:36:00.000-07:00</published><updated>2011-03-28T05:43:06.640-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='discourse'/><title type='text'>Sélection d'articles de COLING'2010</title><content type='html'>Le programme entier est disponible à&amp;nbsp;&lt;a href="http://nlp.stanford.edu/coling10/full-program.html#discourse-2"&gt;http://nlp.stanford.edu/coling10/full-program.html&lt;/a&gt;&lt;br /&gt;Les articles téléchargeables de&amp;nbsp;&lt;a href="http://www.aclweb.org/anthology/C/C10/"&gt;http://www.aclweb.org/anthology/C/C10/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deux sessions de 4 présentations chacune sur le Discours. Des communications aussi lors de la session poster. &amp;nbsp;Importance des questions de modélisation des structures (générale du discours et en particulier temporel) et de la résolution des anaphores/co-référence. On trouve notamment 2 contextes applicatifs du moment : Opinion Mining et Event Extraction. Au moins 2 articles (outils, protocoles d'annotation) sur le&amp;nbsp;PDT (Prague Dependency Treebank - corpus&amp;nbsp;Czech).&lt;br /&gt;&lt;br /&gt;Quelques articles qui m'intéressent&lt;br /&gt;&lt;ul&gt;&lt;li&gt;C10-1001 [bib]: Stergos Afantenos; Nicholas Asher&amp;nbsp;Testing SDRT’s Right Frontier&lt;/li&gt;&lt;li&gt;C10-2118 [bib]: Rashmi Prasad; Aravind Joshi; Bonnie Webber&amp;nbsp;Realization of Discourse Relations by Other Means: Alternative Lexicalizations&lt;/li&gt;&lt;li&gt;C10-2172 [bib]: Zhi-Min Zhou; Yu Xu; Zheng-Yu Niu; Man Lan; Jian Su; Chew Lim Tan&amp;nbsp;Predicting Discourse Connectives for Implicit Discourse Relation Recognition&lt;/li&gt;&lt;li&gt;C10-1087 [bib]: Shachar Mirkin; Jonathan Berant; Ido Dagan; Eyal Shnarch&amp;nbsp;Recognising Entailment within Discourse&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-2025439648553387928?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/2025439648553387928/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/03/selection-darticles-de-coling2010.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2025439648553387928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2025439648553387928'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/03/selection-darticles-de-coling2010.html' title='Sélection d&apos;articles de COLING&apos;2010'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-1405268782560449320</id><published>2011-03-16T06:13:00.002-07:00</published><updated>2011-03-16T08:24:26.754-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules-based analyzer'/><category scheme='http://www.blogger.com/atom/ns#' term='textmarker'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><category scheme='http://www.blogger.com/atom/ns#' term='information extraction'/><title type='text'>Utiliser TextMarker au sein d'un Analysis Engine (i.e. hors Eclipse)</title><content type='html'>Ce post vient compléter le post précédent où je traduisais les manipulations à réaliser pour &lt;a href="http://enicolashernandez.blogspot.com/2010/02/installer-et-utiliser-uima-textmarker.html"&gt;installer et utiliser TextMarker au sein d'Eclipse&lt;/a&gt;. Vous n'avez pas besoin de lire ce précédent post pour comprendre et réaliser les opérations décrites dans le présent post.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/"&gt;TextMarker&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;est avant tout une&amp;nbsp;&lt;/span&gt;&lt;a href="https://sourceforge.net/projects/textmarker" style="font-weight: normal;"&gt;bibliothèque libre&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;(licence LGPL)&amp;nbsp;pour le développement d'applications d'extraction d'information à base de règles&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;b style="font-weight: normal;"&gt;sur des éléments de surface et des annotations existantes&lt;/b&gt;&lt;/b&gt;&lt;b&gt;&lt;b style="font-weight: normal;"&gt;. En tant que bibliothèque il peut s'utiliser relativement simplement au sein d'un Analysis Engine (AE) d'Apache UIMA.&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;C'est aussi un environnement de développement au sein d'Eclipse base sur le&amp;nbsp;&lt;a href="http://www.eclipse.org/dltk"&gt;framework&amp;nbsp;DLTK&lt;/a&gt;&amp;nbsp;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;(Dynamic Languages Toolkit)&amp;nbsp;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.&lt;/div&gt;&lt;span style="font-size: small;"&gt;Il est développé par&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: small;"&gt;Peter Kluegl and Martin Atzmueller and Frank Puppe à l'université de Wuerzburg (de).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La &lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=FAQ"&gt;FAQ de TextMarker&lt;/a&gt; indique comment développer une application Java qui utilise TextMarker. De l'explication, on en déduit certains éléments pour utiliser au sein d'un AE.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DEUX PRE-REQUIS : des bibliothèques et le projet exemple&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;L'utilisation de TextMarker requiert deux bibliothèques. Il s'agit de&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;AntLR 3.1.3&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;&lt;i style="color: inherit;"&gt;de.uniwue.tm.textmarker.engine&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;AntLR se trouve disponible soit&lt;a href="http://www.antlr.org/download/antlr-3.3-complete.jar"&gt; directement sur le site officiel&lt;/a&gt; soit dans le plugin Eclipse de TextMarker via l'update site mais pas dans l'&lt;a href="http://downloads.sourceforge.net/project/textmarker/TextMarker%20%28contains%20CEV%29/alpha/TextMarkerEclipsePlugins_1.0.0.201002231423.zip?use_mirror=waix"&gt;archive dédiée à l'installation manuelle&lt;/a&gt;&amp;nbsp;(tout au moins il semble manquer des éléments dans le jar supposé &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 16px;"&gt;plugins/de.uniwue.dltk.textmarker.antlr_3.1.3.201102241433.jar&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;car j'obtiens un &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;java.lang.ClassNotFoundException: org.antlr.runtime.CharStream&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;) .&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Pour rappel, on ajoute un&amp;nbsp;&lt;i&gt;update site&lt;/i&gt;&amp;nbsp;à Eclipse&amp;nbsp;via le menu&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;Help &amp;gt; Install new softwares (sélectionner et installer les éléments présentés)&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: small;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: small;"&gt;La bibliothèque&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;&lt;i style="color: inherit;"&gt;de.uniwue.tm.textmarker.engine&lt;/i&gt;&lt;span style="color: inherit;"&gt; se trouve disponible indifféremment via Eclipse update site ou via l'archive pour l'installation manuelle (la première est en générale plus récente). Ces bibliothèques se trouveront dans le répertoire&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;ECLIPSE_HOME/plugins.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le &lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/attach/ExampleProject/ExampleProject.zip"&gt;projet exemple&lt;/a&gt;&amp;nbsp;fournit des exemples de descripteurs d'AE et de TS. Le récupérer. Je vous invite à consulter les différents fichiers du répertoire &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;script&lt;/span&gt; et bien entendu la &lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=Introduction"&gt;documentation en ligne (menu de gauche chapitre Langage)&lt;/a&gt; pour comprendre. Globalement l'ensemble de scripts sert à annoter différents éléments d'un référence bibliographique...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;VOTRE PREMIER AE AVEC TEXTMARKER&lt;/b&gt;&lt;br /&gt;Afin de réaliser un premier AE, le plus simple est de&lt;br /&gt;&lt;ul&gt;&lt;li&gt;créer dans Eclipse un&lt;i&gt; Java Project&lt;/i&gt;&lt;/li&gt;&lt;li&gt;y copier les répertoires &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;descriptor, script, resources, input et output&lt;/span&gt; du projet Exemple&lt;/li&gt;&lt;li&gt;ajouter&amp;nbsp;dans le&amp;nbsp;&lt;i&gt;build path&lt;/i&gt;&amp;nbsp;les bibliothèques d'UIMA habituelle pour faire fonctionner un AE (dans &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;UIMA_HOME/lib&lt;/span&gt;, sélectionner &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;uima-core, uima-cpe, uima-document-annotation, uima-tools&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;ajouter&amp;nbsp;dans le&amp;nbsp;&lt;i&gt;build path&lt;/i&gt;&amp;nbsp;les deux bibliothèques requises par TextMarker et qui ont été récupérés selon la manipulation décrite ci-dessus. Ci l'on s'appuie sur l&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;ECLIPSE_HOME/plugins/de.uniwue.dltk.textmarker.antlr_3.1.3.201103101605/antlr-3.1.3.jar&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;ECLIPSE_HOME/plugins/de.uniwue.tm.textmarker.engine_1.0.0.201103101605.jar&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;ajouter dans le &lt;i&gt;build path&lt;/i&gt; les répertoires &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;descriptor, script et resources&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Avant d'exécuter, je jète un oeil aux descripteurs d'AE en &lt;i&gt;ouvrant avant&amp;nbsp;le Component Descriptor Editor&lt;/i&gt;&amp;nbsp;et constate une erreur...&lt;br /&gt;Les descripteurs se trouvent dans &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;descriptor.de.uniwue.example.&lt;/span&gt;&amp;nbsp;Il s'agit de&lt;br /&gt;&lt;ul&gt;&lt;li&gt;AuthorEngine.xml,&amp;nbsp;MainEngine.xml,&amp;nbsp;TestEngine.xml,&amp;nbsp;TitleEngine.xml,&amp;nbsp;YearEngine.xml&lt;/li&gt;&lt;/ul&gt;Seul TestEngine s'édite sans souci...&lt;br /&gt;...&amp;nbsp;Les autres se plaignent qu'il manque la déclaration du&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;configurationParameter "descriptorPaths"&lt;/span&gt;, je le rajoute donc pour chacun à la mano à l'aide du Text Editor&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;configurationParameter&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;name&amp;gt;descriptorPaths&amp;lt;/name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;type&amp;gt;String&amp;lt;/type&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;multiValued&amp;gt;true&amp;lt;/multiValued&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;mandatory&amp;gt;false&amp;lt;/mandatory&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/configurationParameter&amp;gt;&lt;/span&gt;&lt;br /&gt;et le place sous l'élément&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;configurationparameters searchstrategy="language_fallback"&gt;&lt;/configurationparameters&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;configurationParameters searchStrategy="language_fallback"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;Je lance enfin l'exécution à l'aide du&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;documentAnalyser&lt;/span&gt; en spécifiant l'input et &amp;nbsp;l'output. Tour à tour je teste les différents descripteurs. Ceux ci peuvent s'exécuter indépendamment les uns des autres.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;AuthorEngine.xml&lt;/span&gt;&amp;nbsp;et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;TitleEngine.xml&lt;/span&gt; fonctionne&amp;nbsp;directement sans souci, des annotations peuvent être visualisées dans le XMI produit.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;YearEngine.xml&lt;/span&gt; et&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;MainEngine.xml&lt;/span&gt; requièrent de modifier leurs capabilities dans leur descripteur afin de spécifier les types des annotations que je désire visualiser... il y en a pas mal.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;TestEngine.xml&lt;/span&gt;, ne fonctionne pas (null exception)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;POUR ALLER PLUS LOIN&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;TODO&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Comment créer son propre AE utilisant TextMarker ?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=AnalysisEngine&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Comment écrire un script TextMarker ?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Menu de gauche Langage avec la première section http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=Introduction&lt;/li&gt;&lt;li&gt;http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=Dictionaries&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-1405268782560449320?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/1405268782560449320/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/03/utiliser-uima-textmarker-au-sein-dun.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1405268782560449320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1405268782560449320'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/03/utiliser-uima-textmarker-au-sein-dun.html' title='Utiliser TextMarker au sein d&apos;un Analysis Engine (i.e. hors Eclipse)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-3258426846754618649</id><published>2011-03-14T09:03:00.000-07:00</published><updated>2011-05-26T05:41:43.012-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='document'/><title type='text'>Rédaction d'un rapport de stage</title><content type='html'>&lt;i&gt;Mise à jour le 23 mars 2011&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Ce document doit encore être modifié notamment pour indiquer les livrables attendues à chaque étape du déroulement d'un projet.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A l'attention de mes étudiants, une compilation de conseils que j'ai glanés ces dernières années (merci à mes collègues).&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Conseils de rédaction&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Faites des &lt;i&gt;phrases courtes&lt;/i&gt; ou des listes plutôt que des longues phrases.&lt;/li&gt;&lt;li&gt;Pour chaque &lt;i&gt;phrase ou paragraphe&lt;/i&gt;, réfléchissez à l'effet que vous voulez produire sur le &lt;i&gt;lecteur&lt;/i&gt;. Mettez vous à sa place et demandez vous si ce que vous avez écrit lui permet de comprendre le message que vous souhaitez lui faire passer.&lt;/li&gt;&lt;li&gt;Faites suivre systématiquement la première apparition d'un&lt;i&gt;&amp;nbsp;terme spécifique à votre domaine&lt;/i&gt;&amp;nbsp;d'une définition et d'un exemple illustrant ce qui tombe sous votre définition et ce qui n'est pas couvert par votre définition&lt;/li&gt;&lt;li&gt;Expliquez toujours un &lt;i&gt;acronyme&lt;/i&gt;&amp;nbsp;lors de sa première occurrence&lt;/li&gt;&lt;li&gt;Des &lt;i&gt;schémas&lt;/i&gt; sont toujours bon car ils permettent souvent de comprendre plus rapidement.&lt;/li&gt;&lt;li&gt;Pensez à faire des schémas assez légers. Les gros schémas peuvent toujours être simplifiés en regroupant des parties qui sont explicitées/détaillées ailleurs.&lt;/li&gt;&lt;li&gt;Vous pouvez être amené à décrire le travail réalisé par quelqu'un d'autre que vous. Il faut que cela soit clairement dit. Vous avez le droit de faire des &lt;i&gt;citations&lt;/i&gt; et le devoir de citer les sources dans une &lt;i&gt;bibliographie&lt;/i&gt; en fin de votre document.&lt;/li&gt;&lt;li&gt;La compréhension de votre rapport principal ne doit pas nécessiter de se reporter constamment aux &lt;i&gt;annexes&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;N'hésitez pas à mettre quelques &lt;i&gt;notes de bas de page&lt;/i&gt;. Ceux-ci ne doivent pas contenir des informations nécessaires à la compréhension seulement des complémentaires.&lt;/li&gt;&lt;li&gt;Chaque &lt;i&gt;figure&lt;/i&gt; doit avoir un titre (éventuellement une légende explicative), un numéro, et être référencée dans le texte.&amp;nbsp;Une figure non citée par la suite fait perdre la piste de lecture.&lt;/li&gt;&lt;li&gt;Préférez une numérotation des &lt;i&gt;titres&lt;/i&gt; avec des chiffres plutôt que farfelue qui mélange lettres, chiffres et numération romaine&lt;/li&gt;&lt;li&gt;Ayez un style sobre, aéré et consistant (choisissez vous une norme dès le départ, par exemple : ligne de code en "&lt;span class="Apple-style-span" style="font-family: 'Courier New', monospace;"&gt;Courier New"&amp;nbsp;&lt;/span&gt;ou&lt;span class="Apple-style-span" style="font-family: 'Courier New', monospace;"&gt;&amp;nbsp;"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'DejaVu Sans Mono', monospace;"&gt;DejaVu sans mono"&amp;nbsp;&lt;/span&gt;taille&amp;nbsp;10 aligné à gauche, texte normal en "&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;arial"&lt;/span&gt;&amp;nbsp;taille 10 ou 11 justifié, etc.).&lt;/li&gt;&lt;li&gt;Numérotez vos pages.&lt;/li&gt;&lt;li&gt;en tête et pied de page bien venu avec nom du projet (éventuellement abrégé) et noms des étudiants&lt;/li&gt;&lt;li&gt;Pensez à faire une &lt;i&gt;table des matières&lt;/i&gt;&amp;nbsp;(éventuellement deux : une sommaire au début et complète à la fin)&lt;/li&gt;&lt;li&gt;Faites un &lt;i&gt;glossaire&lt;/i&gt; si nécessaire&lt;/li&gt;&lt;li&gt;Ne recopiez pas introduction, résumé en français et en anglais, présentation de l'entreprise, conclusion d'anciens rapports de stage. Le plus souvent, ce sont de très mauvais textes qui sont recopiés !&lt;/li&gt;&lt;li&gt;N'écrivez pas des choses que vous ne comprenez pas.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Contenu d'un rapport&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Pour mes étudiants en DUT 2eme année, 30 pages environ.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Page de garde&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;titre de votre projet&lt;/li&gt;&lt;li&gt;date de réalisation (éventuellement numéro de version)&lt;/li&gt;&lt;li&gt;noms des étudiants et leur groupe&lt;/li&gt;&lt;li&gt;nom de l'encadrant&lt;/li&gt;&lt;li&gt;logo des entités encadrantes ou commanditaires&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Introduction&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Globalement 1 page avec un paragraphe par item.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;contexte du projet&lt;/li&gt;&lt;li&gt;présentation du sujet qui doit être compréhensible pour quelqu'un qui n'est pas du domaine&lt;/li&gt;&lt;li&gt;annonce du plan du rapport&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Environnement&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;1-2 pages&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Situation de l'établissement où vous avez fait votre stage, au sein de l'entreprise&lt;/li&gt;&lt;li&gt;Fonctionnalités de cet établissement (production, administration, etc.)&lt;/li&gt;&lt;li&gt;Situation du service où vous avez fait votre stage, au sein de l'établissement de l'entreprise où vous avez fait votre stage&lt;/li&gt;&lt;li&gt;Environnement matériel et logiciel dans lequel vous avez travaillé&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Expression du besoin&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Autour de 5 pages (essentiellement sur le détail de l'expression du besoin)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Contexte détaillé : problèmes ayant amenés le client à proposer ce sujet, enjeux qui pourraient être solutionnés par votre travail&lt;/li&gt;&lt;li&gt;Présentation de l'existant et de ses limites&lt;/li&gt;&lt;li&gt;Situation de ce que vous avez réalisé au sein des applications existantes dans la solution utilisée auparavant par l'entreprise&lt;/li&gt;&lt;li&gt;Brève description de ce qui vous a été fourni : documents ? ressources logicielles ?&amp;nbsp;&lt;/li&gt;&lt;li&gt;L'expression des besoins qui vous a été fournie. Si celle-ci vous a été donnée sous forme écrite, la fournir entre guillemets.&amp;nbsp;&lt;/li&gt;&lt;li&gt;L'environnement matériel et logiciel que vous deviez utiliser&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;b&gt;Spécification (documents d'analyse)&lt;/b&gt;&lt;br /&gt;10-12 pages&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Choix d'orientation : ce que vous avez décidé de faire/ne pas faire dans le projet, et la justification (faisabilité, temps, coût, complexité,...)&lt;/li&gt;&lt;li&gt;Couche/package de votre architecture en dissociant les aspects métiers, IHM et interaction avec la base de donnée&lt;/li&gt;&lt;li&gt;Modèle des données&amp;nbsp;&lt;/li&gt;&lt;li&gt;Modèle des objets :&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;1 ou + diagrammes de classe (découpage en package). Les attributs et rôles en français, les invariants en français. Si certaines relations d'héritage nécessitent des commentaires, vous pouvez les insérer dans le document&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Prototypage de l'interface homme machine&lt;/li&gt;&lt;li&gt;Cas d'utilisation : 1 ou + diagrammes de cas d'utilisation&lt;/li&gt;&lt;li&gt;Scénarios d'utilisation : diagrammes de séquence (scénario normal, avec alternatives et avec erreurs). Tests d'acceptation (suite d'opérations et résultats attendus dans une situation donnée)&lt;/li&gt;&lt;li&gt;Diagramme d'états pour modéliser le comportement de chaque algo important&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Conception&lt;/b&gt;&lt;br /&gt;5-7 pages&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Choix d'implantation :&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;comment se traduit la spécification formelle en terme de langage objet ; pour chaque élément de l'analyse (classe, opération, relations), décrivez comment il sera réalisé (attribut de classe, méthode d'objet, méthode statique, instance de classe existante, nouvelle classe, etc.)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;chaque classe de l'analyse doit être identifiée avec soit une nouvelle classe, soit une classe existante&lt;/li&gt;&lt;li&gt;chaque opération doit être associée à une classe pour en faire une méthode&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;de même pour la mise en oeuvre au niveau de la base de donnée&lt;/li&gt;&lt;li&gt;et de la conception de l'IHM&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Structure de fichiers du projet, les fichiers les plus importants&lt;/li&gt;&lt;li&gt;Diagrammes d'interaction : pour chaque cas d'utilisation, donner 1 ou + diagrammes de séquence en utilisant les classes et méthodes définies dans les choix d'implantation.&lt;/li&gt;&lt;li&gt;Description des opérations : pour chaque méthode critique, décrire son fonctionnement en pseudo-code ou en utilisant une machine à états.&lt;/li&gt;&lt;li&gt;Description des cycles de vie : pour chaque classe qui le nécessite (dès l'instant que le cycle de vie n'est pas trivial), décrire le cycle de vie de ses objets par une machine à états.&lt;/li&gt;&lt;li&gt;Tests unitaires : pour chaque classe, donner un jeu de test unitaire et de tests d'intégration. Préciser aussi l'ordre d'intégration des classes&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Test de votre logiciel&lt;/b&gt;&lt;br /&gt;0-4 pages&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Test boîte blanche vs test boîte noire, stratégie de test. Comment ont été constitués les jeux de test. Qui les a constitué ? Résultat des tests.&lt;/li&gt;&lt;li&gt;Tests unitaires : trace d'exécution (ne doivent apparaître que les erreurs) + commentaires&lt;/li&gt;&lt;li&gt;Tests de scénarios de l'analyse : mise à jour et complément éventuels des scénarios + résultats des tests + commentaires&lt;/li&gt;&lt;li&gt;Synthèse : analyse de l'ensemble des tests, comparaison des résultats avec ce qui était prévu dans l'analyse et la conception&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Démarche que vous avez suivie&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;2-4 pages&lt;/div&gt;&lt;ul&gt;&lt;li&gt;La démarche de travail que vous avez suivi entre vous et avec votre encadrant&lt;/li&gt;&lt;li&gt;Répartition formelle : qui est sensé faire quoi dans le groupe de projet, description précise du découpage des tâches pour la phase en cours&lt;/li&gt;&lt;li&gt;Répartition effective : qui a fait quoi et quand (soit de manière hebdomadaire soit en découpant en 4 périodes : "avant le début officiel du projet en janvier au retour des vacances de noël", "depuis début Janvier et avant la semaine dédiée au projet et les vacances d'Hiver", "durant la semaine de projet", "après la semaine de projet et avant le rendu du rapport" . Si vous travaillez séparément, désignez un coordinateur.&lt;/li&gt;&lt;li&gt;Compte rendu sur l'activité d'analyse, de conception, de codage et de test&lt;/li&gt;&lt;ul&gt;&lt;li&gt;notamment les difficultés rencontrées : problèmes qui vous ont particulièrement gêné pendant l'analyse, la conception, la réalisation et les tests, autres&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Compte rendu sur le travail général&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;1 à 3 pages&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;bilan de ce qui a été réalisé en regard de l'existant et de ce qui était attendu&lt;/li&gt;&lt;ul&gt;&lt;li&gt;analyse et conception réalisée&lt;/li&gt;&lt;li&gt;développement produit&amp;nbsp;&lt;/li&gt;&lt;li&gt;test réalisé&lt;/li&gt;&lt;li&gt;efforts pour la communication et la réutilisation&lt;/li&gt;&lt;ul&gt;&lt;li&gt;commentaire du code&lt;/li&gt;&lt;li&gt;packaging&lt;/li&gt;&lt;li&gt;documentation produite (javadoc, guide utilisateur, ...)&lt;/li&gt;&lt;li&gt;site web mise en place&lt;/li&gt;&lt;li&gt;vidéo démo (&lt;a href="http://doc.ubuntu-fr.org/recordmydesktop"&gt;sous ubuntu réalisable simplement à l'aide de&amp;nbsp;recordmydesktop&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;perspectives pour poursuivre&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Annexes&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Eventuellement le cahier des charges&lt;/li&gt;&lt;li&gt;Manuel Utilisateur&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Description des procédures pour réaliser&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;l'installation,&lt;/li&gt;&lt;li&gt;la configuration&lt;/li&gt;&lt;li&gt;et l'utilisation de l'application&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;les aspects généraux de(s) l'interface(s)&amp;nbsp;ou bien intégration des copies d'écran&lt;/li&gt;&lt;li&gt;les différentes opérations disponibles dans l'application et comment les exécuter&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Description des problèmes courants&lt;/li&gt;&lt;li&gt;Mini foire aux questions&lt;/li&gt;&lt;li&gt;Paquetage des fichiers sources&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Livrables&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;une archive contenant&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;les sources du code src,&amp;nbsp;&lt;/li&gt;&lt;li&gt;javadoc (documentez avec la syntaxe JAVADOC chaque classe, attribut, méthode ou exception. Générez la doc HTML et empaquetez le tout (doc + classes squelettes))&lt;/li&gt;&lt;li&gt;doc/userGuide (binaire et source)&lt;/li&gt;&lt;li&gt;doc/rapport&amp;nbsp;(binaire et source)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;tar zcf&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;nom-du-projet&gt;-`date +%Y%m%d`-`date +%H%M`.tgz projet/ &amp;nbsp;&lt;/nom-du-projet&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-3258426846754618649?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/3258426846754618649/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/03/redaction-dun-rapport-de-stage.html#comment-form' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/3258426846754618649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/3258426846754618649'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/03/redaction-dun-rapport-de-stage.html' title='Rédaction d&apos;un rapport de stage'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-230274106419395324</id><published>2011-02-23T03:52:00.000-08:00</published><updated>2011-07-29T02:25:26.764-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules-based analyzer'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Utiliser le Regular Expression Annotator (Apache addon)</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: small;"&gt;Mise à jour : &lt;i&gt;29/07/2011&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Ce post fait partie d'une série destinée à présenter les instruments d'analyse disponibles avec UIMA et utiles en Traitement Automatique des Langues (TAL). Parmi les instruments de cette catégorie on peut trouver des projections de dictionnaires (DictionnaryAnnotator, ConceptMapper), des analyseurs à base de règles, notamment pour reconnaître des motifs d'annotations (TypeMapper) et des analyseurs à base d'apprentissage automatique (ClearTK...).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1. Le RegexAnnotator qu'est ce que c'est ?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Le&amp;nbsp;&lt;i&gt;&lt;b&gt;Regular Expression Annotator&lt;/b&gt;&lt;/i&gt; d'Apache (aussi appelé &lt;i&gt;RegexAnnotator&lt;/i&gt;) est un analyseur qui permet &amp;nbsp;de reconnaître des motifs de chaines de caractères qui peuvent être décrits à l'aide d'&lt;b&gt;expressions régulières&lt;/b&gt; tels que les emails, les urls, les numéros de téléphones, certaines entités nommées...&lt;br /&gt;&lt;br /&gt;Utiliser le &lt;i&gt;RegexAnnotator&lt;/i&gt; revient à écrire un (ou plusieurs) fichiers de définition de &lt;b&gt;concepts&lt;/b&gt; et les déclarer dans le paramètre dédié du composant (appelé &lt;i&gt;conceptFiles&lt;/i&gt;).&lt;br /&gt;Définir un concept revient à écrire une ou plusieurs&lt;b&gt; règles de reconnaissance de motifs &lt;/b&gt;décrivant le concept et à associer une opération de &lt;b&gt;création d'annotations&lt;/b&gt;&amp;nbsp;ou de &lt;b&gt;mise à jour&lt;/b&gt; de valeurs des traits d'une annotation à réaliser lorsqu'un motif est reconnu.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2. Où se trouve la documentation de référence ?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;en ligne &lt;a href="http://uima.apache.org/downloads/sandbox/RegexAnnotatorUserGuide/RegexAnnotatorUserGuide.html"&gt;http://uima.apache.org/downloads/sandbox/RegexAnnotatorUserGuide/RegexAnnotatorUserGuide.html&lt;/a&gt; &lt;/li&gt;&lt;li&gt;en  local après installation du composant  &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;UIMA_HOME/addons/annotator/RegularExpressionAnnotator/docs/html/RegexAnnotatorUserGuide/RegexAnnotatorUserGuide.html&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;3. Récupérer le composant&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Le composant se trouve dans la distribution des "&lt;i&gt;UIMA Annotator Addons &amp;amp; Simple Server &amp;amp; Pear packaging tools&lt;/i&gt;".&lt;br /&gt;Ceux-ci s'installe (désarchive) dans le répertoire de &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;UIMA_HOME&lt;/span&gt;.&amp;nbsp;Le binaire suffit pour l'utilisation.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;le binaire et les sources de la distribution&amp;nbsp;&lt;a href="http://uima.apache.org/downloads.cgi"&gt;http://uima.apache.org/downloads.cgi&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;le dépot svn des sources du composant&amp;nbsp;&lt;a href="http://svn.apache.org/repos/asf/uima/sandbox/trunk/RegularExpressionAnnotator"&gt;http://svn.apache.org/repos/asf/uima/sandbox/trunk/RegularExpressionAnnotator&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;4. Utiliser le composant&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;L'explication est donnée via Eclipse mais peut se faire sans.&lt;br /&gt;&lt;b&gt;4.1. Créer un projet Eclipse&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://enicolashernandez.blogspot.com/2010/03/creer-un-projet-ecgmaillipse-pour-le.html%20"&gt;Créer un nouveau projet Eclipse en  suivant les consignes suivantes&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Ajouter  ensuite à votre &lt;i&gt;build_path&lt;/i&gt; le jar du &lt;i&gt;RegexAnnotator&lt;/i&gt; qui se trouve à  cette adresse &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;UIMA_HOME/addons/annotator/RegularExpressionAnnotator/lib&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Créer  ensuite un descripteur d'AE dans votre repertoire &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;desc&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Editez le descripteur et déclarez  le en &lt;i&gt;aggregate&lt;/i&gt; (premier onglet), ajoutez le descripteur du  &lt;i&gt;RegexAnnotator.xml (&lt;/i&gt;onglet aggregate&lt;i&gt;)&lt;/i&gt;, étendez le paramètre &lt;i&gt;conceptFiles (&lt;/i&gt;onglet parameter&lt;i&gt;),&lt;/i&gt; et indiquez le  chemin vers le nom des fichiers de vos concepts (onglet parameter settings), définissez le système de type que vous utilisez dans la  définition de vos concepts (onglet type system), et déclarez les dans les capabilities du  composant (onglet capabilities).&lt;/li&gt;&lt;/ul&gt;Ici la démarche expliquée pour d'autres composants  &lt;a href="http://enicolashernandez.blogspot.com/2010/03/construire-une-chaine-de-traitement.html"&gt;http://enicolashernandez.blogspot.com/2010/03/construire-une-chaine-de-traitement.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.&lt;/b&gt;&lt;b&gt;2. Spécifier les paramètres du composant&lt;/b&gt;&lt;br /&gt;Les concepts sont déclarés dans des fichiers XML qui doivent être  accessibles dans le &lt;i&gt;classpath&lt;/i&gt; (ou &lt;i&gt;build path&lt;/i&gt; lorsqu'on  travaille sous Eclipse). On indique ensuite le chemin relatif de ces  fichiers dans le parameter &lt;i&gt;conceptFiles&lt;/i&gt; du descripteur du  composant. Généralement on ajoute le répertoire &lt;i&gt;resources&lt;/i&gt; dans le  &lt;i&gt;buildpath&lt;/i&gt;, on place les fichiers de règles dans ce répertoire et  on indique simplement le nom de ces fichiers au niveau du parametre &lt;i&gt;conceptFiles&lt;/i&gt;.&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.&lt;/b&gt;&lt;b&gt;3. Executer la chaîne construite&lt;/b&gt; (&lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html%20"&gt;regarder la section Executer via Eclipse&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;5. Définir des concepts&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Afin d'illustrer la définition de concepts et la construction de règles de reconnaissance associées, nous chercherons à définir le concept de "lieu" et construire une règle de reconnaissance selon le motif "prépositions de lieu suivi d'un nom propre (mot débutant par une majuscule)"&amp;nbsp;e.g. à Paris, en Aquitaine...&lt;br /&gt;&lt;br /&gt;Les concepts sont déclarés dans des fichiers XML. Le repertoire &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;UIMA_HOME/addons/annotator/RegularExpressionAnnotator/resources&lt;/span&gt; de l'addon fournit le &lt;i&gt;XSCHEMA&lt;/i&gt; (&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;concepts.xsd&lt;/span&gt;) de ce type de fichier ainsi qu'un fichier exemple (&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;concepts.xml&lt;/span&gt;).&lt;br /&gt;Vous pouvez y jeter un oeil rapidement sur les versions en ligne du svn &lt;a href="http://svn.apache.org/repos/asf/uima/sandbox/trunk/RegularExpressionAnnotator/resources/"&gt;http://svn.apache.org/repos/asf/uima/sandbox/trunk/RegularExpressionAnnotator/resources/&lt;/a&gt;.&lt;br /&gt;Le format du fichier est bien explicité dans la &lt;a href="http://uima.apache.org/downloads/sandbox/RegexAnnotatorUserGuide/RegexAnnotatorUserGuide.html"&gt;documentation&lt;/a&gt; en voici une brève synthèse pour une première prise en main.&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;La définition des concepts est cadrée par un élément racine &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;conceptSet :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;conceptSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://incubator.apache.org/uima/regex" xsi:schemaLocation="concept.xsd"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--ici la définition des concepts... --&amp;gt;&lt;br /&gt;&amp;lt;/conceptSet&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Un concept a un jeu de règles associées ainsi qu'une opération de création ou de mise à jour définie lors de la reconnaissance d'un motif par une des règles. Ici je ne montre qu'un exemple de création d'annotation.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;concept name="XXX" processAllRules="true"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;rules&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;rule ruleId="XXX"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;regEx="XXX"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;matchStrategy="matchAll" matchType="XXX" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;/rules&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;createAnnotations&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;annotation type="XXX"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;begin group="0" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;end group="0" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;/annotation&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;/createAnnotations&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;lt;/concept&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;b&gt;5.1. Dans un premier temps, il s'agit de définir les éléments du motif requis à minima&lt;/b&gt; dans une règle. Dans le cas de notre exemple il s'agit de&lt;br /&gt;&lt;ul&gt;&lt;li&gt;locationPreposition&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;À|à|aux?|en&lt;/span&gt;&lt;/span&gt;La définition étant une alternative il conviendra de la mettre entre parenthèse dans le motif afin d'éviter d'inclure d'autres parties du motif comme des éléments des alternatives d'extrémité.&amp;nbsp;&lt;/li&gt;&lt;li&gt;properName&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;\p{Lu}\p{Ll}\p{Ll}* &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Lettre unicode en majuscule, suivi d'une lettre unicode en minuscule et de zéro ou plusieurs lettre unicode en minuscule ; on pourrait discuter de l'intérêt de spécifier ou non la casse pour les caractères suivant le premier&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;\p{L}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;table border="0" cellpadding="1" cellspacing="0" summary="Regular expression constructs, and what they match"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td headers="matches"&gt;On choisit de séparer nos éléments obligatoires par un &lt;i&gt;whitespace character (&lt;/i&gt;&lt;tt&gt;[ \t\n\x0B\f\r]&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;) qui peut être répété zéro ou n fois (*) ; on utilise la classe prédéfinie \s pour le désigner.&lt;br /&gt;&lt;br /&gt;Ce qui donne le concept suivant. Le nom (&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;) du concept est arbitraire. Le nom de la règle (&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;ruleId&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;) est aussi arbitraire mais peut être récupéré au niveau de la manipulation de l'annotation créée/mise à jour. L'attribut&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;regex &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;accueille la définition du motif recherchée.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MatchType&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt; défini l'espace de recherche et donc d'application de la règle, il s'agit d'une annotation&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;uima.tcas.Annotation&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt; avec un &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;begin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt; et un &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;. Le &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;type&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt; d'annotation déclare l'annotation à créer. Celle-ci est supposée être définie dans un type système accessible au composant. La valeur&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt; dans l'attribut &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;group&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt; des éléments &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;begin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt; et &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt; déclare que l'annotation à créer couvrira la zone délimitée par le motif reconnu.&lt;/span&gt;&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;concept name="location" processAllRules="true"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;rules&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;rule ruleId="locationPreposition_properName"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;regEx="(À|à|aux?|en)\s*\p{Lu}\p{Ll}\p{Ll}*"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;matchStrategy="matchAll" matchType="uima.tcas.DocumentAnnotation" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;/rules&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;createAnnotations&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;annotation type="fr.univnantes.lina.uima.types.NamedEntity"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;begin group="0" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;end group="0" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;/annotation&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;/createAnnotations&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;/concept&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;Le concept ainsi défini fonctionne relativement bien même si l'on constate quelques effets de bord. En effet nos règles ramènent les cas suivants&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;Le Stade Toulousain enlève la quatrième Heinek&lt;b&gt;en Cup&lt;/b&gt; de son histoire.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;Juli&lt;b&gt;en Peyrelongue&lt;/b&gt; sur une récupération dans un ruck, trouve une très belle touche dans les 22 mètres toulousains.&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;5.&lt;/b&gt;&lt;b&gt;2. On peut spécifier notre motif aux bornes pour&amp;nbsp;éviter ces effets de bord.&lt;/b&gt; Par exemple en ajoutant&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;[\p{Punct}\p{Space}]&lt;/span&gt;&lt;/span&gt; ou &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;[\P{L}]&lt;/span&gt;&lt;/span&gt; (noter le grand P pour désigner les caractères complémentaires (cad ici ceux qui ne sont pas des &lt;i&gt;Letters&lt;/i&gt;)) au début du &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;regex&lt;/span&gt;&lt;/span&gt;. Là encore il faudrait réfléchir pour traiter aussi le cas de la reconnaissance de ce motif en début de fichier...&lt;br /&gt;Désormais les cas précédents ne sont plus reconnus néanmoins un caractère contextuel est nouvellement inclu dans la zone couverte par l'annotation créée ; ce qui ne nous convient pas bien entendu...&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt;&lt;b&gt;3. Pour annoter seulement la partie du motif qui nous intéresse (et exclure les caractères contextuels par exemple) on peut utiliser la notion de groupe pour cadrer les parties qui nous intéresse&lt;/b&gt;. Un groupe de caractères se définit à l'aide d'un &lt;i&gt;parenthésage&lt;/i&gt;. Chaque groupe hérite d'un indice qui permet de s'y référer par la suite. Il suffit de faire précéder la parenthèse ouvrante par &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;?:&lt;/span&gt;&lt;/span&gt; pour ne pas comptabiliser un groupe.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;A&lt;/span&gt;insi l'on peut définir les sous motifs suivants&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;(?:À|à|aux?|en)&lt;/span&gt;&lt;/span&gt; et&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;(\p{Lu}\p{Ll}\p{Ll}*)&lt;/span&gt;&lt;/span&gt;, et déclarer la valeur &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;1&lt;/span&gt;&lt;/span&gt; pour l'attribut &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;group&lt;/span&gt;&lt;/span&gt; des éléments &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;begin&lt;/span&gt;&lt;/span&gt; et &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;L&lt;/span&gt;a valeur du regex sera donc&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;regEx="[\P{L}](?:À|à|aux?|en)\s*(\p{Lu}\p{Ll}\p{Ll}*)"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt;&lt;b&gt;4. Il est possible d'utiliser&amp;nbsp;des variables pour simplifier la lecture du regex.&lt;/b&gt; En amont et au même niveau des définitions de concepts il s'agit de déclarer des variables (des éléments &lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;variable&lt;/span&gt;&lt;/span&gt; au sein d'un élément &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;variables&lt;/span&gt;)&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;   &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt; &amp;lt;variables&amp;gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;variable name="locPrep" value="À|à|aux?|en" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;   &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt; &amp;lt;/variables&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;On pourra faire appel à la variable&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;locutionPreposition&lt;/span&gt; &lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;dans la regex à l'aide de l'écriture&lt;/span&gt; &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;\v{locutionPreposition}&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; où &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; white-space: normal;"&gt;locutionPreposition&lt;/span&gt; est le nom d'une variable définie.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;Lorsque les variables désigneront des mots dont la casse n'est pas descriminante on pourra placer le flag &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;(?iu)&lt;/span&gt; pour spécifier de ne pas tenir compte de la casse (i, case-insensitive) pour le groupe courant et ce pour n'importe quel caractère unicode (u, unicode).&lt;/span&gt;&lt;br /&gt;Ce flag s'ajoutera naturellement à celui de ne pas comptabiliser ce groupe ce qui donnera &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;(?:(?iu)\v{locutionPreposition})&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Si l'on rajoute aussi la variable suivante &lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;lt;variable name="compoundProperName" value="(?:\p{Lu}(?:\p{Lu}|\p{Ll})(?:(?:\p{Lu}|\p{Ll}|-|')*(?:\p{Lu}|\p{Ll}))?)(?:(?:(?:\s*(?:(?iu)des?|de\s*la|de\s*l'|du|d'|van|von|of|da|dal|della|el|al|al-))?)\s*(?:\p{Lu}(?:\p{Lu}|\p{Ll})(?:(?:\p{Lu}|\p{Ll}|-|')*(?:\p{Lu}|\p{Ll}))?))*" /&amp;gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;On obtient&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;variables&amp;gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;variable name="locutionPreposition" value="À|à|aux?|en" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;variable name="compoundProperName" value="(?:\p{Lu}(?:\p{Lu}|\p{Ll})(?:(?:\p{Lu}|\p{Ll}|-|')*(?:\p{Lu}|\p{Ll}))?)(?:(?:(?:\s*(?:(?iu)des?|de\s*la|de\s*l'|du|d'|van|von|of|da|dal|della|el|al|al-))?)\s*(?:\p{Lu}(?:\p{Lu}|\p{Ll})(?:(?:\p{Lu}|\p{Ll}|-|')*(?:\p{Lu}|\p{Ll}))?))*" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;/variables&amp;gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; Ce qui donne au niveau de la regex &lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;regEx="[\P{L}](?:(?iu)\v{locutionPreposition})\s*(\v{compoundProperName})"&lt;/span&gt;&lt;/div&gt;Attention de penser à placer aussi des flags "ne comptabilise pas" au sein des définitions des variables lorsque l'on utilise des groupes en leur sein.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt;&lt;b&gt;5. On peut affecter des valeurs statiques à des traits de l'annotation à créer&lt;/b&gt; (autres que &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;begin&lt;/span&gt; et &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;end&lt;/span&gt;). Ces traits (&lt;i&gt;features&lt;/i&gt;) doivent être définis dans le système de type utilisé (ici de &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span"&gt;fr.univnantes.lina.uima.types.NamedEntity&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;Au même niveau que les éléments &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;begin&lt;/span&gt; et &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;end&lt;/span&gt; d'annotations... On peut rajouter des lignes comme la suivante, laquelle attribue la valeur "&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;location&lt;/span&gt;&lt;/span&gt;" à un trait &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;category&lt;/span&gt; de type &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;String&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;setFeature name="category" type="String" normalization="Trim"&amp;gt;location&amp;lt;/setFeature&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;6. On peut affecter des valeurs à&lt;/span&gt; des traits de l'annotation à créer à partir de valeurs correspondant à des sous-chaînes du motif reconnu.&lt;/b&gt; Pour ce faire il s'agit de préfixer les groupes de la regex dont on souhaite récupérer la valeur par &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;\m{locationValue}&lt;/span&gt; où ici &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;locationValue&lt;/span&gt; correspond au nom que l'on a choisi pour désigner cette zone là. Pour faire référence ensuite à cette valeur, on utilisera l'écriture &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;${locationValue}.&lt;/span&gt; Ci-dessous la regex avec le préfixe&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;regEx="[\P{L](?:(?iu)\v{locutionPreposition})\s*\m{locationValue}(\v{compoundProperName})"&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;Et là un exemple d'utilisation &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;lt;setFeature name="value" type="String" normalization="Trim"&amp;gt;${locationValue}&amp;lt;/setFeature&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;b&gt;7. On peut récupérer le nom de la règle qui a reconnu le concept.&lt;/b&gt; Pour cela il faut que votre Type system déclare l'attribut &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;ruleId&lt;/span&gt; dans votre annotation à créer. Vous pouvez alors récupérer la valeur de la règle qui a matché avec un &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;setFeature&lt;/span&gt; via le type &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;RuleId.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;lt;setFeature name="ruleId" type="RuleId"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;Au final vous obtenez    &lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;variables&amp;gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;variable name="locutionPreposition" value="À|à|aux?|en" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;variable name="compoundProperName" value="(?:\p{Lu}(?:\p{Lu}|\p{Ll})(?:(?:\p{Lu}|\p{Ll}|-|')*(?:\p{Lu}|\p{Ll}))?)(?:(?:(?:\s*(?:(?iu)des?|de\s*la|de\s*l'|du|d'|van|von|of|da|dal|della|el|al|al-))?)\s*(?:\p{Lu}(?:\p{Lu}|\p{Ll})(?:(?:\p{Lu}|\p{Ll}|-|')*(?:\p{Lu}|\p{Ll}))?))*" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;/variables&amp;gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;concept name="location" processAllRules="true"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;rules&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;   &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;rule ruleId="locationPreposition_properName"&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;regEx="[\P{L}](?:(?iu)\v{locutionPreposition})\s*\m{locationValue}(\v{compoundProperName})"&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;matchStrategy="matchAll" matchType="uima.tcas.DocumentAnnotation" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;/rules&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;createAnnotations&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;   &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;annotation type="fr.univnantes.lina.uima.types.NamedEntity"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;begin group="1" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;end group="1" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;setFeature name="category" type="String" normalization="Trim"&amp;gt;location&amp;lt;/setFeature&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;setFeature name="value" type="String" normalization="Trim"&amp;gt;${locationValue}&amp;lt;/setFeature&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;    &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;setFeature name="ruleId" type="RuleId"/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;   &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;/annotation&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt;  &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;/createAnnotations&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: xx-small; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;/concept&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt;&lt;b&gt;8. Il est possible d'établir un ordre de priorité entre les règles d'un même concept&lt;/b&gt;.&amp;nbsp;Le&amp;nbsp;&lt;i&gt;RegexAnnotator&lt;/i&gt;&amp;nbsp;prévoit deux mécanismes. Le premier permet effectivement de commander l'exécution d'une règle plutôt qu'une autre. Le second exécute toutes les règles et laisse le travail de filtrage à réaliser ultérieusement dans d'autres composants... à développer. En ce sens, le second n'est qu'une ébauche.&lt;br /&gt;&lt;br /&gt;Le premier mécanisme fonctionne à l'aide de l'attribut booléen&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;processAllRules&lt;/span&gt; de l'élément &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;concept.&lt;/span&gt; Quand il est à vrai alors toutes les règles sont appliquées, et quand il est faux les règles sont appliquées par ordre d'apparition jusqu'à ce qu'une reconnaisse un motif&lt;concept _moz-userdefined=""&gt;. La valeur par défaut est faux.&lt;/concept&gt;&lt;br /&gt;&lt;br /&gt;La priorisation est utile si l'on construit des motifs de règles avec différents niveaux de fiabilité. Dans l'exemple que nous avons manipuler, on pourrait construire une règle avec le seul motif équivalent à la variable &lt;i&gt;properName&lt;/i&gt;&amp;nbsp;qui aurait un plus grand rappel mais une moins bonne précision que celle que nous venons de définir. On pourrait alors établir un ordre dans la déclaration de ces règles ; cette dernière règle &amp;nbsp;construite apparaissant effectivement en dernier dans l'ordre d'apparition.&lt;br /&gt;&lt;br /&gt;Le&amp;nbsp;&lt;i&gt;RegexAnnotator&lt;/i&gt;&amp;nbsp;prévoit un second mécanisme à l'aide de l'attribut&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;confidence&lt;/span&gt;&amp;nbsp;de l'élément rule. Sa valeur est en effet affectée à une feature du même nom lors de la création d'annotation, et ce&amp;nbsp;de manière analogue à l'attribut&amp;nbsp;&lt;i&gt;ruleId&lt;/i&gt;. De manière similaire il faut aussi créer manuellement la feature dans le système de type que l'on utilise. Cette feature doit être de type&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;uima.cas.Float&lt;/span&gt;.&amp;nbsp;Le&amp;nbsp;&lt;i&gt;RegexAnnotator&lt;/i&gt;&amp;nbsp;ne gère pas de priorisation de validité d'annotations en fonction de cette feature, il laisse à l'utilisateur de développer un composant de post-traitement "qui saura quoi faire" de cette valeur de confiance pour chaque annotation qui aura été posée.&lt;br /&gt;&lt;br /&gt;Les &lt;i&gt;Match Type Filter,&amp;nbsp;&lt;/i&gt;les &lt;i&gt;Rules Exception&lt;/i&gt;&amp;nbsp;et le mécanisme d'&lt;i&gt;Annotation Validation&lt;/i&gt;&amp;nbsp;peuvent éventuellement être des moyens détournées d'établir des priorités de manière détournée. Consulter la documentation pour cela.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt;&lt;b&gt;9. De manière détournée,&amp;nbsp;on peut utiliser le&amp;nbsp;&lt;i&gt;RegexAnnotator&lt;/i&gt;&amp;nbsp;comme un &lt;/b&gt;&lt;i&gt;&lt;b&gt;projecteur de dictionnaires.&lt;/b&gt; &lt;/i&gt;Pour cela, on peut considérer les entrées du dictionnaire comme différentes valeurs alternatives dans une variable. La règle reprenant cette variable éventuellement on contraignant un peu le contexte d'occurrence.&lt;br /&gt;Il y aura bien entendu des problèmes de performances suivant la taille des dictionnaires et du fait que cela reste de la recherche d'expressions régulières.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;5.&lt;/b&gt;&lt;b&gt;10. Que peut vous apporter la documentation officielle après ce tutoriel ?&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;D'autres notions sont présentées parmi lesquelles : l'attribut&amp;nbsp;&lt;i&gt;matchStrategy&lt;/i&gt;&amp;nbsp;de l'élément&amp;nbsp;&lt;i&gt;rule&lt;/i&gt;, les&lt;i&gt;&amp;nbsp;Match Type Filter&lt;/i&gt;, les opérations de mise à jour d'annotations (&lt;i&gt;updateMatchTypeAnnotation&lt;/i&gt;), la gestion d'exceptions de règles (&lt;i&gt;Rules Exception)&lt;/i&gt;, la prévalidation d'annotation avant leur création à l'aide de code java (&lt;i&gt;Annotation Validation&lt;/i&gt;), la définition d'une zone d'annotation par rapport à des positions à l'intérieur d'un groupe (&lt;i&gt;Annotation Boundaries&lt;/i&gt;)...&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;6. Quelles limites présentent le composant ?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Par définition, il fait &lt;b&gt;seulement de la reconnaissance de motif de chaîne de caractères&lt;/b&gt; et non de motifs qui incluent des contraintes sur la présences d'annotations&lt;/li&gt;&lt;li&gt;Le composant offre &lt;b&gt;au plus deux-trois niveaux d'analyse.&lt;/b&gt; Les regex variables sont le premier niveau d'analyse motif textuel, les rules (qui s'appuient sur les regex variables) sont un second niveau d'analyse. On peut éventuellement considérer les capturing groups (lesquels sont définis autour de parties des motifs des règles et servent pour définir certaines valeurs de features d'annotations à créer/mettre à jour) comme un autre niveau.&lt;/li&gt;&lt;li&gt;Il est possible d'établir un ordre de &lt;b&gt;priorité entre les règles d'un même concept mais pas entre concepts.&lt;/b&gt; Si l'on a des concepts distincts (nom de personne et nom d'entreprise ou nom de lieu par exemples) qui peuvent avoir des motifs de reconnaissance similaires on ne peut établir de priorités entre eux. Une première solution est de les concidérer comme un unique concept et arbitraitement d'établir des priorités entre les règles de reconnaissance. Outre le côté arbitraire, le concept et le fichier de concept peuvent devenir très complexes. Une seconde solution est de réaliser un post-traitement, c'est-à-dire développer un composant) qui "saura" quoi faire pour deux annotations posées sur la même zone...&lt;/li&gt;&lt;li&gt;La notion de &lt;b&gt;variable peut jouer le rôle de dictionnaires&lt;/b&gt; ou lexiques d'éléments possibles pour certains champs variables des règles. La valeur d'une variable est une regex. On peut utiliser l'alternative | pour indiquer différents éléments du lexique ; les éléments pouvant eux-mêmes être des regex. La gestion au sein d'un même fichier des règles et des lexiques n'est pas évidente dans un mode édition ou bien dans un souci de maintenance.&lt;/li&gt;&lt;li&gt;Il n'est pas possible de définir une seule fois des variables et de les faire partager entre plusieurs &amp;nbsp;fichiers de règles.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;7. Pour mettre au point vos expressions&amp;nbsp;régulières en java&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Le présent post suppose une connaissance de l'écriture des regex notamment la notion de classes de caractères, les constructions spéciales (non capturante de groupe)... Pour en savoir plus :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html"&gt;http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Character.html"&gt;http://download.oracle.com/javase/6/docs/api/java/lang/Character.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.regular-expressions.info/unicode.html"&gt;http://www.regular-expressions.info/unicode.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-230274106419395324?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/230274106419395324/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/02/utiliser-le-regular-expression.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/230274106419395324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/230274106419395324'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/02/utiliser-le-regular-expression.html' title='Utiliser le Regular Expression Annotator (Apache addon)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-719471839888895928</id><published>2011-02-10T02:45:00.000-08:00</published><updated>2011-02-14T05:50:01.587-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lego nxt lejos'/><title type='text'>Installer LeJOS NXJ 8.5beta sous Linux Ubuntu 10.04 LTS (Lynx Lucide) via usb/bluetooth</title><content type='html'>Cette page décrit les opérations qu'il m'a fallu réaliser pour flasher ma brique lego NXT afin d'installer le firmware LEJOS à partir d'un système Linux Ubuntu 10.04. Le cas échant je précise les droits qu'il faut pour réaliser les opérations.&lt;br /&gt;&lt;br /&gt;Attention bien que je décrive complètement toutes les opérations, il est important de consulter avant tout la page officielle&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedLinux.htm"&gt;http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedLinux.htm&lt;/a&gt;&amp;nbsp;qui explique et que je complète (et non remplace) avant tout&lt;/li&gt;&lt;/ul&gt;Outre la page officielle et mon expérience personnelle, cette page s'appuie aussi sur le site suivant&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://videmos.blogspot.com/2009/01/lejos-nxj-installation-on-linux.html"&gt;http://videmos.blogspot.com/2009/01/lejos-nxj-installation-on-linux.html&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;et celle-ci pour la partie bluetooth&amp;nbsp;&lt;a href="http://vikram.eggwall.com/computers/nxt-bluetooth-setup.html"&gt;http://vikram.eggwall.com/computers/nxt-bluetooth-setup.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Les pages précédentes contiennent des éléments pour l'installation du plugin Eclipse. Voir aussi les liens suivant&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #638c9c; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #638c9c; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;RCX&amp;nbsp;&lt;a class="urlextern" href="http://www.pobot.org/Java-pour-Mindstorms-RCX.html" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(https://wiki.iut-nantes.univ-nantes.fr/lib/tpl/sidebar/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://www.pobot.org/Java-pour-Mindstorms-RCX.html"&gt;http://www.pobot.org/Java-pour-Mindstorms-RCX.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #638c9c; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;a class="urlextern" href="http://www.pobot.org/Java-pour-Mindstorms-RCX.html" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(https://wiki.iut-nantes.univ-nantes.fr/lib/tpl/sidebar/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://www.pobot.org/Java-pour-Mindstorms-RCX.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 19px;"&gt;NXT (sous windows)&amp;nbsp;&lt;a class="urlextern" href="http://www.bartneck.de/2008/03/04/java-lego-nxt-eclipse-tutorial/" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(https://wiki.iut-nantes.univ-nantes.fr/lib/tpl/sidebar/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://www.bartneck.de/2008/03/04/java-lego-nxt-eclipse-tutorial/"&gt;http://www.bartneck.de/2008/03/04/java-lego-nxt-eclipse-tutorial/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Prérequis&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-size: small; font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small; font-weight: normal;"&gt;(requiert des droits sudo ou root pour installer)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-size: small; font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;1. Avoir un&amp;nbsp;Java Development Kit (JDK)&amp;nbsp;1.5 ou 1.6&amp;nbsp;installé sur sa machine et non un Java Runtime Environment (JRE) qui n'est pas suffisant car ne vous permet pas de compiler des programmes java. Conseille le 1.6 pour certains exemples et testé seulement sur le JDK sun.&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;aptitude install&amp;nbsp;sun-java6-jdk&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Mettre à jour ces variables d'environnement PATH pour pointer vers le répertoire&amp;nbsp;JDK bin (&lt;a href="http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedLinux.htm#11"&gt;Setting up environment variables&lt;/a&gt;) ainsi que&amp;nbsp;JAVA_HOME où se trouve installé le JDK&lt;br /&gt;&lt;br /&gt;2. Le programme&amp;nbsp;&lt;a href="http://ant.apache.org/"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ant&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;permettra la compilation de LeJOS (il peut être rapproché de&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;make&lt;/span&gt;&lt;/span&gt;)&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;aptitude install ant&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;3. Afin de pouvoir compiler sans souci et utiliser les connexions usb et bluetooth, assurez vous aussi d'avoir les dépendances (principalement des driver/pilotes) suivantes installées&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;aptitude install libusb libusb-dev bluez libbluetooth-dev&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;A noter que&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;bluez&amp;nbsp;&lt;/span&gt;n'est utile que si on utilise le driver&amp;nbsp;NXTCommBluez à la place de celui par default NXTCommBluecove. La documentation officielle&amp;nbsp;&lt;a href="http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedLinux.htm"&gt;http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedLinux.htm&lt;/a&gt;&amp;nbsp;signale que l'on peut le retirer du&amp;nbsp;&amp;nbsp;&lt;em&gt;build/build.xml&lt;/em&gt;&amp;nbsp;si l'on n' en a pas besoin. Perso je l'ai compilé aussi.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Installation de Lejos&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;(ce qui suit peut se réaliser dans un simple compte utilisateur)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Récupérez et désarchivez l'archive &lt;a href="http://lejos.sourceforge.net/nxj-downloads.php"&gt;lejos_NXJ_0_8_5beta.tar.gz&amp;nbsp;(http://lejos.sourceforge.net/nxj-downloads.php)&lt;/a&gt;&amp;nbsp;;&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;tar -xvzf lejos_NXJ_0_8_5beta.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;vous obtenez le répertoire&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;lejos_nxj&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;2. Donnez les droits d'exécution au sous répertoire &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;bin&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;cd&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;lejos_nxj&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;chmod a+x bin&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;3. Puis compilez&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;cd build&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ant&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Cette opération&amp;nbsp;copie deux drivers créés, libjbluez.so et&amp;nbsp;libjlibnxt.so, dans le répertoire lejos_nxj/bin. D'autres résultats de compilation peuvent se trouver les répertoires lejos_nxj_native/src (jbluez libnxt &amp;nbsp;nxtvm).&lt;br /&gt;&lt;br /&gt;4. Après compilation il vous faut déclarer et mettre à jour quelques variables d'environnement (si vous êtes toujours dans le répertoire&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;lejos_nxj&amp;nbsp;&lt;/span&gt;et que vous ne travaillerez que dans ce terminal jusqu'à sa fermeture&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export NXJ_HOME=`pwd`&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export PATH=${NXJ_HOME}/bin:${PATH}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":${NXJ_HOME}/bin&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Pour péreniser la modification, éditer votre fichier &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;~/.bashrc&lt;/span&gt;&lt;/span&gt; et rajouter les lignes ci-dessus en changeant la valeur de&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;NXJ_HOME&amp;nbsp;&lt;/span&gt;par la valeur réelle du chemin. Désormais ces variables seront définies pour tout nouveau terminal ouvert. N'oubliez pas de faire un &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;source&amp;nbsp;~/.bashrc&lt;/span&gt;&lt;/span&gt; si vous souhaitez bénéficier de ces modifications dans le terminal où vous venez de faire ces manipulations.&lt;br /&gt;&lt;br /&gt;5. L'étape suivante consiste à flasher votre brique lego, en tapant dans un terminal&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;nxjflash&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Si vous obtenez le message suivant&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;VM file:/.../lejos_nxj/bin/lejos_nxt_rom.bin&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Menu file: /.../lejos_nxj/bin/StartUpText.bin&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;VM size: 52752 bytes.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Menu size: 38016 bytes.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Total image size 91008/94208 bytes.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Locating device in firmware update mode.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;No devices in firmware update mode were found.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Searching for other NXT devices.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;No NXT found. Please check that the device is turned on and connected.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;Alors branchez le cable usb de votre machine à la brique...&lt;br /&gt;&lt;br /&gt;Si vous obtenez l'erreur suivante&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Error Cannot load a comm driver&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;Alors&amp;nbsp;réinitaliser la brique manuellement en pressant le bouton caché dans un des trous d'emboitement&amp;nbsp;à l'arrière en haut à gauche de la brique. Puis tapez la commande&amp;nbsp;pendant le toc répétitif.&lt;br /&gt;&lt;br /&gt;Si maintenant vous obtenez l'erreur suivante&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;Error: Failed to open %%NXT-SAMBA%% in SAMBA mode&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Alors réalisez l'opération en tant que root (n'oubliez pas de déclarer les variables d'environnement).&lt;br /&gt;&lt;br /&gt;Si la manipulation en tant que root ne fonctionne pas&lt;br /&gt;Alors, avec l'aide du post suivant &lt;a href="http://ubuntuforums.org/showthread.php?t=1123633"&gt;http://ubuntuforums.org/showthread.php?t=1123633&lt;/a&gt;, réalisez en tant que root les commandes suivantes&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rmmod cdc_acm&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;nxjflash&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;modprobe -i cdc_acm&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Vous obtiendrez un beau Lejos sur votre brique si tout a bien fonctionné.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Tester votre installation&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Rajouter les lignes suivantes à la suite de votre&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;~/.bashrc&lt;/span&gt;&lt;/span&gt;&amp;nbsp;en réalisant les opérations de pérénisation décrites ci-dessus.&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export CLASSPATH=${NXJ_HOME}/lib/classes.jar:${NXJ_HOME}/lib/jtools.jar:${NXJ_HOME}/lib/pccomm.jar:${NXJ_HOME}/lib/pctools.jar:${CLASSPATH}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;export CLASSPATH=${NXJ_HOME}/3rdparty/lib/bcel.jar:${NXJ_HOME}/3rdparty/lib/bluecove-gpl.jar:${NXJ_HOME}/3rdparty/lib/bluecove.jar:${NXJ_HOME}/3rdparty/lib/commons-cli.jar:${NXJ_HOME}/3rdparty/lib/cpptasks.jar:${CLASSPATH}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Compilez un programme (ici le programme View qui permet de tester les moteurs et les capteurs via une interaction directe sur la brique) avec &lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;cd projects/samples/View&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;nxjc View.java&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Téléchargez le programme compilé sur la brique avec&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;nxj -r View&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Si vous obtenez le message suivant via une connexion usb (en supposant que le bluetooth n'est pas activé)&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;leJOS NXJ&amp;gt; Linking...&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;leJOS NXJ&amp;gt; Uploading...&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;leJOS NXJ&amp;gt; Searching for any NXT using Bluetooth inquiry&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;BlueCove version 2.1.0 on bluez&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;leJOS NXJ&amp;gt; Failed to find any NXTs&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;leJOS NXJ&amp;gt; Failed to connect to any NXT&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;an error occurred: No NXT found - is it switched on and plugged in (for USB)?&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;BlueCove stack shutdown completed&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div&gt;Alors recommencer la manipulation en tant que root...&lt;br /&gt;ou bien rajouter des un groupe qui a des droits sur le port usb (la doc officielle indique comment)&lt;br /&gt;Il vous faudra recompiler le programme en tant que root (donner les droits d'écriture/exécution sur le répertoire et fichiers).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Via bluetooth, après avoir&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;installé les paquets bluez et libbluetooth-dev&lt;/li&gt;&lt;li&gt;compilé lego_nxt&lt;/li&gt;&lt;li&gt;déclaré les variables d'environnement ci-dessus&lt;/li&gt;&lt;li&gt;et allumé et activé le bluetooth &amp;gt; power et la visibility sur la brique&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Cela (nxjc et nxj) fonctionnent en simple utilisateur...&lt;br /&gt;... lors de l'upload avec nxj il faudra indiquer le pin (défini dans le menu bluetooth de la brique, par défaut 1234)&lt;br /&gt;Et voilà&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Pour utiliser le programme&lt;/b&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Sur la brique&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Bouton orange pour allumer et sélectionner une option qui&amp;nbsp;s'affiche sur l'écran (descend dans l'arborescence)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;les flèches de gauche et de droite pour naviguer dans le menu&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;le bouton rectangulaire pour revenir en arrière (remonter dans&amp;nbsp;l'arborescence) et éteindre si vous êtes au niveau le plus haut&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt; Dans Files vous verrez les programmes disponibles sur la&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #70bd36; background-image: initial; background-origin: initial; color: #eeffe2;"&gt;brique&lt;/span&gt;&amp;nbsp;(il y&amp;nbsp;en a 1 qui s'appelle "view"), il peut être mis en "default"&lt;br /&gt;&lt;br /&gt;Quand vous exécutez "view", vous pourrez tester les sensors et les motors. Allez y ca marche !&lt;br /&gt;&lt;br /&gt;Le mode bluetooth est à activer si besoin est !&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt; &lt;br /&gt;Le volume du son peut être fixé et coupé.&lt;br /&gt;&lt;br /&gt;Ne toucher à qu'il y a dans system si seulement vous savez ce que vous faites !!!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;D'autres programmes&lt;/div&gt;&lt;div&gt;http://lejos.sourceforge.net/nxt/nxj/tutorial/WheeledVehicles/WheeledVehicles.htm&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-719471839888895928?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/719471839888895928/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2011/02/installer-lejos-nxj-85beta-sous-linux.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/719471839888895928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/719471839888895928'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2011/02/installer-lejos-nxj-85beta-sous-linux.html' title='Installer LeJOS NXJ 8.5beta sous Linux Ubuntu 10.04 LTS (Lynx Lucide) via usb/bluetooth'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-2802020089219050958</id><published>2010-11-21T06:15:00.000-08:00</published><updated>2010-11-21T06:16:21.900-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><title type='text'>Nombre d'occurrences et fréquence d'un terme</title><content type='html'>Le &lt;i&gt;nombre d'occurrences&lt;/i&gt; d'une forme (dans un document, une collection) correspond au nombre de fois que cette forme apparaît.&lt;br /&gt;&lt;br /&gt;La &lt;i&gt;fréquence&lt;/i&gt; (sous entendu d'occurrence) d'une forme d'un document correspond au nombre d'occurrences de la forme dans le document relativement à la somme du nombre d'occurrences de toutes les formes (éventuellement * 100 pour avoir un poucentage) du document (on pourrait changer document par collection)&lt;br /&gt;&lt;br /&gt;Souvent la notion de fréquence est &lt;i&gt;abusivement&lt;/i&gt; confondue avec le nombre d'occurrences.&lt;br /&gt;&lt;br /&gt;La somme du nombre d'occurrences de toutes les formes constitue une &lt;i&gt;normalisation&lt;/i&gt; du nombre d'occurrences. &amp;nbsp;Le nombre d'occurrence rend compte de "l'importance" d'un terme. La normalisation du nombre d'occurrences d'un terme rend possible la comparaison de deux documents de longueurs différentes.&lt;br /&gt;&lt;br /&gt;On peut aussi normaliser par un $log_10$ : de [1 occurrence;+inf) dans [0;4[ (à peu près).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-2802020089219050958?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/2802020089219050958/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/11/nombre-doccurrences-et-frequence-dun.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2802020089219050958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2802020089219050958'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/11/nombre-doccurrences-et-frequence-dun.html' title='Nombre d&apos;occurrences et fréquence d&apos;un terme'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-2008858086117744139</id><published>2010-10-21T14:40:00.000-07:00</published><updated>2010-10-22T22:06:16.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><title type='text'>Alimenter son LinkedIn, Twitter, Dokuwiki... avec un flux RSS</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;Dernière mise à jour : vendredi 22 octobre 2010&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;En tant que chercheur il est important de communiquer sur ses activités aux différentes communautés auxquelles on appartient.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Le propre du Web 2.0 est de facilement diffuser du contenu et d'en construire de nouveaux à partir d'existants (ainsi que d'en modifier aisément leur forme). C'est le principe de base des réseaux sociaux.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.linkedin.com/"&gt;LinkedIn&lt;/a&gt;,&amp;nbsp;&lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;&amp;nbsp;et &lt;a href="http://www.dokuwiki.org/"&gt;Dokuwiki&lt;/a&gt; font parties de ces vecteurs de communication du moment.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Néanmoins on ne peut passer son temps à alimenter ces vecteurs, a fortiori quand il s'agit de diffuser la même information sur chacun d'eux !&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;La solution que j'ai choisie pour communiquer et éviter de perdre du temps dans la recopie des informations que je souhaite communiquer est de tenir ce blog et d'offrir un accès à son contenu à l'aide d'une syndication RSS que j'inscris aux différents réseaux sociaux que j'utilise.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Une&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;seule entrée et autant de sorties que les applications le permettent. Une bonne application web 2.0 doit pouvoir se nourrir de flux RSS (éventuellement filtrés par le biais des tags) ainsi que pouvoir alimenter d'autres applications.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Pour LinkedIn : au moins deux moyens&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;soit avec l'application &lt;a href="http://www.linkedin.com/opensocialInstallation/preview?_ch_panel_id=1&amp;amp;_applicationId=1500"&gt;blog link&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;soit &amp;nbsp;en créant un groupe, et par le menu "Manage News Feeds" ajouter le flux RSS que vous souhaitez "manger"&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Pour twitter&amp;nbsp;&lt;/span&gt;&lt;a href="http://twitterfeed.com/"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://twitterfeed.com/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Pour Dokuwiki, &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.dokuwiki.org/fr:rss?&amp;amp;#syntaxe"&gt;il suffit d'insérer le code suivant&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{{rss&amp;gt;http://enicolashernandez.blogspot.com/feeds/posts/default 8 author date 1h }}&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Ici&amp;nbsp;&lt;a href="http://niouzeo.wordpress.com/2010/02/09/6-raisons-qui-font-de-votre-blog-votre-meilleur-outil-social/"&gt;6 raisons qui font de votre blog votre meilleur outil social&amp;nbsp;&lt;/a&gt;&amp;nbsp;et là &lt;a href="http://niouzeo.wordpress.com/2009/12/09/blog-twitter-facebook-linkedin-quelles-passerelles-pour-simplifier-la-promotion-de-ses-contenus/"&gt;quelques passerelles entre d'autres outils sociaux&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-2008858086117744139?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/2008858086117744139/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/alimenter-son-linkedin-twitter-avec-un.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2008858086117744139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2008858086117744139'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/alimenter-son-linkedin-twitter-avec-un.html' title='Alimenter son LinkedIn, Twitter, Dokuwiki... avec un flux RSS'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-1081075899429350721</id><published>2010-10-14T07:48:00.000-07:00</published><updated>2010-11-09T22:20:31.135-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><title type='text'>Conférences et journaux sur les aspects ingénierie de la langue</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;a href="http://e.nicolas.hernandez.free.fr/pro/doku.php?id=misc:mailinglist#ressources_logicielles_et_linguistiques_ingenierie_du_document_et_de_l_information"&gt;Une version statique et perenne de ce post ici&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conférences&lt;/b&gt;&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;ICTAI&lt;/b&gt;&amp;nbsp;: International Conference on Tools with Artificial Intelligence&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;IAAI&lt;/b&gt;: Innovative Applications in AI&lt;/li&gt;&lt;li&gt;&lt;b&gt;DocEng&lt;/b&gt;: ACM Symposium on Document Engineering&lt;/li&gt;&lt;li&gt;&lt;b&gt;LREC&lt;/b&gt;: Language Resources and Evaluation Conference&lt;/li&gt;&lt;li&gt;&lt;b&gt;AIMSA&lt;/b&gt;: Artificial Intelligence: Methodology, Systems, Applications&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.worldscinet.com/ijait/"&gt;IJAIT&lt;/a&gt;&lt;/b&gt;:&amp;nbsp;International Journal on Artificial Intelligence Tools (rang 2)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Journaux&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; font-size: 13px; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cambridge.org/journals/journal_ifc.asp?mnemonic=NLE"&gt;&lt;b&gt;Natural Language Engineering&lt;/b&gt;&lt;/a&gt;&amp;nbsp;meets the needs of&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;professionals and researchers&lt;/em&gt;&amp;nbsp;working in all areas of&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;computerised language processing, whether from the perspective of theoretical or descriptive linguistics, lexicology, computer science or engineering&lt;/em&gt;. Its aim is to bridge the gap between traditional computational linguistics research and the implementation of practical applications with potential real-world use. As well as publishing research articles on a broad range of topics ¿ from text analysis, machine translation, information retrieval and speech analysis and generation to integrated systems and multi modal interfaces ¿ it also publishes&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;special issues&lt;/em&gt;&amp;nbsp;on specific areas and technologies within these topics, an industry watch column and book reviews.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.springer.com/linguistics/computational+linguistics/journal/10579"&gt;&lt;b&gt;Language Resources and Evaluation&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;is the first publication devoted to the acquisition, creation, annotation, and use of language resources, together with methods for evaluation of resources, technologies, and applications. Language resources include language data and descriptions in machine readable form used to assist and augment language processing applications, such as written or spoken corpora and lexica, multimodal resources, grammars, terminology or domain specific databases and dictionaries, ontologies, multimedia databases, etc., as well as basic software tools for their acquisition, preparation, annotation, management, customization, and use. Evaluation of language resources concerns assessing the state-of-the-art for a given technology, comparing different approaches to a given problem, assessing the availability of resources and technologies for a given application, benchmarking, and assessing system usability and user satisfaction.&amp;nbsp;&lt;/li&gt;&lt;li&gt;La revue&amp;nbsp;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Document Numérique&lt;/strong&gt;&amp;nbsp;publie des articles qui concernent la&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;gestion des documents&lt;/em&gt;. Dans ce cadre, il s'agit des&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;documents vus comme supports ou comme finalité d'un processus&lt;/em&gt;. Cet aspect concerne les&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;étapes du processus éditorial technique de workflow et de groupware et de reengineering des processus…&lt;/em&gt;&amp;nbsp;Les documents sont considérés sous leurs représentations les plus diverses : document image, document révisable, document structuré, document composé d'objets. Les supports jouent un rôle important. Les outils nécessaires à chacune des étapes du processus éditorial sont décrits, ainsi que les aspects juridiques des documents numériques et les méthodes de mise en oeuvre.&amp;nbsp;&lt;a class="urlextern" href="http://dn.revuesonline.com/" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://e.nicolas.hernandez.free.fr/pro/lib/tpl/default/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://dn.revuesonline.com/"&gt;http://dn.revuesonline.com/&lt;/a&gt;&amp;nbsp;(Hermes / Lavoisier -&amp;nbsp;&lt;a class="urlextern" href="http://www.revuesonline.com/" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://e.nicolas.hernandez.free.fr/pro/lib/tpl/default/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://www.revuesonline.com/"&gt;http://www.revuesonline.com/&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;La revue d'&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Ingénierie des Systèmes d'Information&lt;/strong&gt;&amp;nbsp;(ISI) est constituée de&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;numéros thématiques&lt;/em&gt;&amp;nbsp;faisant chacun le point sur un aspect traditionnel ou émergent dans le domaine des&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;bases de données et des systèmes d'information&lt;/em&gt;. Le domaine des systèmes d'information représente « l'étude des utilisations efficaces de l'information et de son impact potentiel sur les systèmes logiciels et sur les technologies de l'information sur le monde des humains, de l'organisation et du social » (Cushing et Lucas, 1990). La revue d'Ingénierie des Systèmes d'Information est donc destinée à faire le point&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;plusieurs fois par an&lt;/em&gt;&amp;nbsp;sur un aspect spécifique des systèmes d'information. Dans cette optique, une personnalité reconnue du domaine sera sollicitée pour prendre la responsabilité d'un numéro spécial.&amp;nbsp;&lt;a class="urlextern" href="http://isi.revuesonline.com/" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://e.nicolas.hernandez.free.fr/pro/lib/tpl/default/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://isi.revuesonline.com/"&gt;http://isi.revuesonline.com/&lt;/a&gt;Publication en français et en anglais (Hermes / Lavoisier -&amp;nbsp;&lt;a class="urlextern" href="http://www.revuesonline.com/" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://e.nicolas.hernandez.free.fr/pro/lib/tpl/default/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://www.revuesonline.com/"&gt;http://www.revuesonline.com/&lt;/a&gt;&amp;nbsp;; Revues des Sciences et Technologies de l'Information (RSTI))&lt;/li&gt;&lt;li&gt;Revue&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;pluridisciplinaire&lt;/em&gt;&amp;nbsp;destinée à offrir un&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;outil de synthèse aux chercheurs et industriels&lt;/em&gt;&amp;nbsp;français en informatique, la revue de&amp;nbsp;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Technique et Science Informatiques&lt;/strong&gt;&amp;nbsp;(TSI) favorise la&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;publication rapide&lt;/em&gt;&amp;nbsp;des travaux et fournit un support de transfert bidirectionnel des connaissances entre recherche et industrie. Les articles sont regroupés en trois rubriques scientifiques : synthèse, application et recherche. TSI, la seule revue française de haut niveau en informatique scientifique et technique : rend compte plus rapidement des évolutions scientifiques, couvre de manière plus active les différents champs de connaissance : architectures, bases de données et de connaissances,&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;intelligence artificielle&lt;/em&gt;, génie logiciel, concurrence, communication, parallélisme,… réalise des numéros thématiques qui présentent systématiquement des synthèses des domaines scientifiques concernés.&amp;nbsp;&lt;a class="urlextern" href="http://tsi.revuesonline.com/" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://e.nicolas.hernandez.free.fr/pro/lib/tpl/default/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://tsi.revuesonline.com/"&gt;http://tsi.revuesonline.com/&lt;/a&gt;&amp;nbsp;(Hermes / Lavoisier -&amp;nbsp;&lt;a class="urlextern" href="http://www.revuesonline.com/" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: url(http://e.nicolas.hernandez.free.fr/pro/lib/tpl/default/images/link_icon.gif); background-origin: initial; background-position: 0px 1px; background-repeat: no-repeat no-repeat; color: #436976; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 16px; padding-right: 0px; padding-top: 1px; text-decoration: none;" title="http://www.revuesonline.com/"&gt;http://www.revuesonline.com/&lt;/a&gt;&amp;nbsp;; Revues des Sciences et Technologies de l'Information (RSTI))&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-1081075899429350721?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/1081075899429350721/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/conferences-et-journaux-sur-les-aspects.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1081075899429350721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1081075899429350721'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/conferences-et-journaux-sur-les-aspects.html' title='Conférences et journaux sur les aspects ingénierie de la langue'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-7459632093055421763</id><published>2010-10-14T07:39:00.000-07:00</published><updated>2010-10-22T22:08:52.477-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='discourse'/><title type='text'>Sélection d'articles de ACL'2010</title><content type='html'>Sélection d'articles d'&lt;a href="http://aclweb.org/anthology-new/P/P10/"&gt;ACL'2010&lt;/a&gt; sur l'analyse du discours en général&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Discours&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;P10-2028 [bib]: Minwoo Jeong; Ivan Titov&amp;nbsp;Unsupervised Discourse Segmentation of Documents with Inherently Parallel Structure&amp;nbsp;&lt;/li&gt;&lt;li&gt;P10-1120 [bib]: Amit Dubey&amp;nbsp;The Influence of Discourse on Syntax: A Psycholinguistic Model of Sentence Processing&amp;nbsp;&lt;/li&gt;&lt;li&gt;P10-1073 [bib]: WenTing Wang; Jian Su; Chew Lim Tan&amp;nbsp;Kernel Based Discourse Relation Recognition with Temporal Ordering Information&amp;nbsp;&lt;/li&gt;&lt;li&gt;P10-5003 [bib]: Bonnie Webber; Markus Egg; Valia Kordoni&amp;nbsp;Discourse Structure: Theory, Practice and Use&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Co-reference&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;P10-1142 [bib]: Vincent Ng&amp;nbsp;Supervised Noun Phrase Coreference Research: The First Fifteen Years&amp;nbsp;&lt;/li&gt;&lt;li&gt;P10-1144 [bib]: Marta Recasens; Eduard Hovy&amp;nbsp;Coreference Resolution across Corpora: Languages, Coding Schemes, and Preprocessing Information&amp;nbsp;&lt;/li&gt;&lt;li&gt;P10-1143 [bib]: Cosmin Bejan; Sanda Harabagiu&amp;nbsp;Unsupervised Event Coreference Resolution with Rich Linguistic Features&amp;nbsp;&lt;/li&gt;&lt;li&gt;P10-1128 [bib]: Ryu Iida; Syumpei Kobayashi; Takenobu Tokunaga&amp;nbsp;Incorporating Extra-Linguistic Information into Reference Resolution in Collaborative Task Dialogue&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-7459632093055421763?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/7459632093055421763/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/selection-darticles-de-acl2010.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7459632093055421763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7459632093055421763'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/selection-darticles-de-acl2010.html' title='Sélection d&apos;articles de ACL&apos;2010'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-8191353444914814863</id><published>2010-10-04T22:25:00.000-07:00</published><updated>2010-10-04T22:41:13.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reuse'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Réutiliser des outils externes via des commandes shell dans un composant UIMA</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Parce que de nombreux outils de TAL non-natifs UIMA sont utilisés par la communauté, parce que ces outils ont souvent requis des investissements&amp;nbsp;conséquents&amp;nbsp;en fonds financiers et en temps de développement, il est &amp;nbsp;nécessaire de se poser la question de la possibilité de &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;réutilisation&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt; de ces outils au sein de chaînes de traitement UIMA avant d'en développer des équivalents en natif.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Le présent composant&amp;nbsp;&lt;a href="http://code.google.com/p/uima-shell/"&gt;&lt;b&gt;UIMA shell&lt;/b&gt;&lt;/a&gt;&amp;nbsp;a&amp;nbsp;pour objet l'implémentation d'un &lt;i&gt;Analysis Engine&lt;/i&gt; permettant l'exécution d'une&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;commande &lt;i&gt;shell&lt;/i&gt; sur un élément du CAS (&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Common Analysis Structure&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;) et l'enrichissement du CAS avec le résultat du traitement&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;. L'entrée de la commande peut être soit le &lt;i&gt;SofaDataString&lt;/i&gt; d'une vue spécifiée, soit le texte couvert par un type d'annotation (lesquelles elles-même apparaîssent optionnellement dans certains contextes marqués par un autre type annotation). La sortie peut être produite soit sous la forme d'un &lt;i&gt;SofaDataString&lt;/i&gt; d'une nouvelle vue créée pour l'occasion ou bien comme valeur d'une &lt;i&gt;feature&lt;/i&gt; de type &lt;i&gt;String&lt;/i&gt; d'une annotation spécifiée elle aussi créée pour&amp;nbsp;l'occasion.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Son principal objectif est donc de permettre d'utiliser au sein d'une chaîne UIMA des outils accessibles en ligne de commande, lesquels réalisent leur traitement soit sur l'entrée standard (&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;stdin&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;) soit sur un fichier via son nom passé en argument et produisent leur résultat sur la sortie standard (&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;stdout&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;L'implémentation présente les caractéristiques suivantes :&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="max-width: 65em; padding-left: 40px;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;utilisation de l&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;'&lt;/span&gt;&lt;/i&gt;&lt;a href="http://blog.developpez.com/adiguba/p3035/java/5-0-tiger/runtime-exec-n-est-pas-des-plus-simple/"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;API shell de F Martini&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; (distribuée sous licence CeCILL-C), laquelle permet de simplifier l'exécution de programme et de ligne de commande depuis Java&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;gestion de &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;multiples formats des commandes&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; à exécuter où la donnée à traiter peut aussi bien provenir de l'entrée standard ou constituer un fichier texte passé en argument, être récupéré du système de fichier, pipé, redirigé...&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;traitement de la commande shell sous forme d'un &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;thread&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;paramétrage libre et générique des éléments du CAS (&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;view/annotation/feature)&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;d'entrée (à traiter) et de sortie (à créer) notamment&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;à l'aide de l'API&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;java.lang.reflect&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;(constitue des exemples de code générique)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;La suite de ce travail pourra être la conception d'un composant type connecteur permettant de récupérer sous forme de types des informations structurées contenues dans des fichiers au format CSV-like (Comma Separated Value), XML... quelle que soit la sémantique de leur structure.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Le code source du composant est disponible sur&amp;nbsp;&lt;/span&gt;&lt;a href="http://code.google.com/p/uima-shell/"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;http://code.google.com/p/uima-shell/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-8191353444914814863?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/8191353444914814863/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/reutiliser-des-outils-externes-via-des.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8191353444914814863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8191353444914814863'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/reutiliser-des-outils-externes-via-des.html' title='Réutiliser des outils externes via des commandes shell dans un composant UIMA'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-7209882915420126668</id><published>2010-10-03T14:27:00.000-07:00</published><updated>2010-10-08T12:39:32.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interoperability'/><category scheme='http://www.blogger.com/atom/ns#' term='rules-based analyzer'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>UIMA Type mapping</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;Lorsque l'on souhaite développer un composant à l'aide de l'architecture&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;a href="http://incubator.apache.org/uima" rel="nofollow" style="color: #0000cc;"&gt;Apache UIMA&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;, celle-ci requiert de définir les types d'information que l'on souhaite manipuler ainsi que leur organisation ; on appelle cela définir son&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;strong&gt;système de types&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;. D'un point de vue conception de log&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;iciel, cela permet notamment de réaliser un contrôle&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;syntaxique&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;des entrées et des sorties des composants.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Apache UIMA offre la liberté de définir son propre système de types et par conséquent plusieurs systèmes de types peuvent être proposés pour modéliser les mêmes informations. Cette&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;liberté de définition de systèmes de types peut donc conduire à des problèmes d'interopérabilité&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;entre des composants manipulant des informations conceptuellement identiques mais étant en pratique définies par des modélisations distinctes.&lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Par exemple,&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;word&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;mot&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;voire&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;token&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;sont des noms différents qui peuvent éventuellement être utilisés pour désigner le même type d'information.&lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Le &lt;/span&gt;&lt;a href="http://code.google.com/p/uima-type-mapper/"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;uima-type-mapper&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt; est un composant qui offre un&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;moyen de conversion d'annotations&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;définies par un système de type donné (appelé&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;type source&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;) vers des annotations définies par un autre système de types (appelés&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;types cibles&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;). En pratique, il permet de faire le pont entre des composants manipulant des annotations ayant des types d'information conceptuellement identiques mais de noms distincts. Les annotations produites par un premier composant peuvent être utilisées en entrée d'un second via notre composant qui réalise la conversion.&lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Les conversions sont déclarées à l'aide de règles qui spécifient pour des types source donnés de réaliser une&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;opération de création d'une ou plusieurs annotations de types cible&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;aux offsets des annotations de type source rencontrées. Il est possible de&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;spécifier des contraintes sur les caractéristiques de annotations de type source&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;. La cohérence sémantique des types à convertir est laissée libre à l'utilisateur.&lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;En pratique, l'implémentation repose sur&lt;/span&gt;&lt;/div&gt;&lt;ul style="max-width: 65em; padding-left: 40px;"&gt;&lt;li&gt;&lt;a href="http://www.w3.org/TR/xpath/" rel="nofollow" style="color: #0000cc;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;W3C XPath&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;comme langage déclaratif d'expression des contraintes sur la structure des types des annotations source&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://commons.apache.org/jxpath" rel="nofollow" style="color: #0000cc;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Apache JXPath&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;comme moteur qui implémente le traitement des règles&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/javase/6/docs/technotes/guides/reflection/index.html" rel="nofollow" style="color: #0000cc;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;java.lang.reflect API&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;pour rendre générique le composant en autorisant la désignation de tout type héritant de&amp;nbsp;&lt;/span&gt;&lt;tt&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;uima.tcas.Annotation&lt;/span&gt;&lt;/tt&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;pour faire l'objet de conversion&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="max-width: 65em;"&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;La fonction de spécification de contraintes sur les annotations à convertir peut conduire à utiliser ce composant comme un composant d'&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;analyse à base de règles des structures sémantiques UIMA&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;. En effet, le composant peut être utilisé pour réaliser de la&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;reconnaissance de motifs d'annotations au sein d'une structure d'annotations UIMA&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;et de la réalisation d'opérations sur les(/relativement aux) motifs reconnus telles que la création d'annotations, la mise à jour d'annotations, et la suppression d'annotations. Actuellement seule la première opération est gérée, mais les fonctions déjà implémentées dans le composant en font de lui une preuve de concept.&lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Si vous utilisez ce travail dans vos travaux de recherche, merci de citer l'article suivant&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="max-width: 65em;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="pln" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 11px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman';"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Nicolas Hernandez, Fabien Poulard, Matthieu Vernier, Jérôme Rocheteau, "&lt;/span&gt;&lt;a href="http://hal.archives-ouvertes.fr/hal-00481459/en/"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Building a French-speaking community around UIMA, gathering research, education and industrial partners, mainly in Natural Language Processing and Speech Recognizing domains&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;",&amp;nbsp;LREC 2010 Workshop 'New Challenges for NLP Frameworks', La Valleta : Malta&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Le code source du composant disponible sur&amp;nbsp;&lt;/span&gt;&lt;a href="http://code.google.com/p/uima-type-mapper/"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://code.google.com/p/uima-type-mapper/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-7209882915420126668?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/7209882915420126668/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/uima-type-mapping.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7209882915420126668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7209882915420126668'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/uima-type-mapping.html' title='UIMA Type mapping'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-8855870088944360038</id><published>2010-05-20T05:53:00.000-07:00</published><updated>2010-10-22T22:08:52.478-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='discourse'/><title type='text'>Sélection d'articles de LREC'2010</title><content type='html'>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.&lt;br /&gt;&lt;div&gt;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.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;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.&lt;br /&gt;&lt;br /&gt;J'essayerai d'être systématique sur le thème de l'analyse de discours.&lt;br /&gt;&lt;br /&gt;Ci-dessous une première sélection issue de &lt;a href="http://www.lrec-conf.org/lrec2010/?-Conference-Programme-"&gt;LREC'2010&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;58&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Nathanael Chambers and Dan Jurafsky &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;A Database of Narrative Schemas&lt;/li&gt;&lt;li&gt;330&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Raffaella Bernardi, Manuel Kirschner and Zorana Ratkovic &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Context Fusion: The role of Discourse Structure and Centering Theory&lt;/li&gt;&lt;li&gt;184&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Sara Tonelli, Giuseppe Riccardi, Rashmi Prasad and Aravind Joshi &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Annotation of Discourse Relations for Conversational Spoken Dialogs&lt;/li&gt;&lt;li&gt;336&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Xuchen Yao, Irina Borisova and Mehwish Alam &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;The PDTB XML: the XMLization of the Penn Discourse Treebank 2.0&lt;/li&gt;&lt;li&gt;479&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Amal Al-Saif and Katja Markert &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;The Leeds Arabic Discourse Treebank: Annotating Discourse Connectives for Arabic&lt;/li&gt;&lt;li&gt;481&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Ioana Vasilescu, Sophie Rosset and Martine Adda-Decker &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;On the role of discourse markers in interactive spoken question answering systems&lt;/li&gt;&lt;li&gt;582&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Stergos Afantenos, Pascal Denis and Philippe Muller &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Learning Recursive Segments for Discourse Parsing&lt;/li&gt;&lt;li&gt;796&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Markus Egg and Gisela Redeker &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;How complex is discourse structure?&lt;/li&gt;&lt;li&gt;820&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Rui Wang and Caroline Sporleder &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Constructing a Textual Semantic Relation Corpus Using a Discourse Treebank&lt;/li&gt;&lt;li&gt;935&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Rashmi Prasad and Aravind Joshi &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Shallow Discourse Parsing: Exploiting Sentence Position and Paragraph Structure for Classifying Connectives and Identifying their Arguments&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-8855870088944360038?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/8855870088944360038/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/selection-darticles-de-lrec2010.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8855870088944360038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/8855870088944360038'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/10/selection-darticles-de-lrec2010.html' title='Sélection d&apos;articles de LREC&apos;2010'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-5996141213443254284</id><published>2010-04-22T07:11:00.000-07:00</published><updated>2010-04-22T07:12:23.363-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Dans quel repertoire deposer ses ressources UIMA ?</title><content type='html'>Où déposer ses ressources ? Le post suit un rapport des &lt;a href="http://enicolashernandez.blogspot.com/2010/04/depot-de-ressources-uima-outils.html"&gt;répertoires de ressources UIMA existants&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Le &lt;a href="http://uima.lti.cs.cmu.edu/"&gt;CMU&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;Concenant le répertoire Apache, il est possible de &lt;a href="http://uima.apache.org/contribution-policy.html"&gt;déposer une contribution chez Apache moyennant le respect de certaines conditions et en suivant une certaine procédure.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Les 3 répertoires suivants,&lt;a href="http://www.ukp.tu-darmstadt.de/software/dkpro"&gt; DKPro&lt;/a&gt;, &lt;a href="http://www.julielab.de/Resources/Software/NLP_Tools.html"&gt;Julie lab&lt;/a&gt;, et &lt;a href="http://u-compare.org/components"&gt;U-Compare&lt;/a&gt;&lt;br /&gt;sont privés. On ne peut faire que de la récupération de l'existant.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Le répertoire de &lt;a href="http://uima-fr.org/"&gt;uima-fr.org&lt;/a&gt; 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-5996141213443254284?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/5996141213443254284/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/04/dans-quel-repertoires-deposer-ses.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5996141213443254284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5996141213443254284'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/04/dans-quel-repertoires-deposer-ses.html' title='Dans quel repertoire deposer ses ressources UIMA ?'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-5176033075625700927</id><published>2010-04-16T07:43:00.000-07:00</published><updated>2010-04-22T07:10:15.125-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Repertoires de ressources UIMA (outils, composants, documentations)</title><content type='html'>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.&lt;br /&gt;&lt;ul&gt;&lt;li&gt; the &lt;a href="http://uima.lti.cs.cmu.edu/"&gt;LTI repository at the Carnegie Mellon University&lt;/a&gt;&lt;/li&gt;&lt;li&gt;the &lt;a href="http://uima.apache.org/"&gt;Apache repository&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;the &lt;a href="http://www.ukp.tu-darmstadt.de/software/dkpro"&gt;DKPro repository at the Darmstadt University&lt;/a&gt;&amp;nbsp; * &lt;/li&gt;&lt;li&gt;the &lt;a href="http://www.julielab.de/Resources/Software/NLP_Tools.html"&gt;Julie lab repository at the Jena University&lt;/a&gt; ** &lt;/li&gt;&lt;li&gt; the &lt;a href="http://u-compare.org/components"&gt;U-Compare project repository&lt;/a&gt; *** &lt;/li&gt;&lt;li&gt;et bien entendu &lt;a href="http://uima-fr.org/"&gt;le depot de uima-fr.org promu notamment par le LINA de l'Université de Nantes&lt;/a&gt; ****&amp;nbsp;&amp;nbsp; &lt;i&gt;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;* Iryna Gurevych, Max Mühlhäuser, Christof M&lt;/i&gt;&lt;i&gt;ü&lt;/i&gt;&lt;i&gt;ller, J&lt;/i&gt;&lt;i&gt;ü&lt;/i&gt;&lt;i&gt;rgen Steimle, Markus Weimer, and Torsten Zesch and. 2007. Darm&lt;i&gt;stadt 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&lt;/i&gt;&lt;/i&gt;&lt;i&gt;ü&lt;/i&gt;&lt;i&gt;&lt;i&gt;bingen, Germany.&lt;/i&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;i&gt;&lt;/i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;i&gt;** &lt;/i&gt;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.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;i&gt;&lt;i&gt;*** &lt;/i&gt;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.&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: inherit;"&gt;&lt;i&gt;**** 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.&lt;/i&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-5176033075625700927?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/5176033075625700927/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/04/depot-de-ressources-uima-outils.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5176033075625700927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5176033075625700927'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/04/depot-de-ressources-uima-outils.html' title='Repertoires de ressources UIMA (outils, composants, documentations)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-7618545217245952862</id><published>2010-03-26T14:54:00.001-07:00</published><updated>2010-10-22T22:10:45.415-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Modifier le Build Path de votre projet Eclipse</title><content type='html'>Le Build Path peut se définir à la création du projet&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Créer un nouveau Projet Java : File &amp;gt; New &amp;gt; Java Project &amp;gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Donner un Project Name et vérifier le JRE (&amp;gt;=1.5) &amp;gt; Next &amp;gt; Libraries (vous pourrez toujours modifier par la suite ces déclarations grâce au menu Properties de votre projet, voir ci-dessous)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&amp;nbsp;Par la suite, vous pouvez le modifier selon différentes alternatives&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Dans la vue Package Explorer cliquer droit sur &lt;/li&gt;&lt;ol&gt;&lt;li&gt;la racine projet &amp;gt;&amp;nbsp;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Properties &amp;gt; Java Build Path &amp;gt; Libraries &lt;/li&gt;&lt;li&gt;ou Build Path &amp;gt; Configure Build Path &amp;gt; Libraries &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Referenced Libraries &amp;gt;  Build Path &amp;gt; Configure Build Path &amp;gt; Libraries&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&amp;nbsp;Dans Libraries, vous pouvez ajouter les packages&lt;/li&gt;&lt;ul&gt;&lt;li&gt;soit par Add External Jar &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;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&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-7618545217245952862?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/7618545217245952862/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/03/modifier-le-build-path-de-votre-projet.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7618545217245952862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7618545217245952862'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/03/modifier-le-build-path-de-votre-projet.html' title='Modifier le Build Path de votre projet Eclipse'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-6264504386315008230</id><published>2010-03-26T08:43:00.000-07:00</published><updated>2011-05-24T08:08:46.095-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Créer un projet Eclipse pour le développement d'un composant UIMA</title><content type='html'>Jérôme Rocheteau décrit en détail comment &lt;a href="http://jerome.rocheteau.free.fr/index/post/2009/10/29/Comment-cr%C3%A9er-un-projet-UIMA-sous-Eclipse#tab-1-post"&gt;mettre en place un projet Eclipse pour le développement d'un composant UIMA&lt;/a&gt;&amp;nbsp;en expliquant&amp;nbsp;comment activer la gestion de dépendances vers les bibliothèques &lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;uimaj-core&lt;/span&gt;&lt;/span&gt; et &lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;uimaj-tools&lt;/span&gt; avec Maven.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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&amp;nbsp;qui vont bien dans le projet Eclipse&amp;nbsp;et la déclaration des répertoires qui peut être utilise à ajouter au build path.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CREER UN PROJET ECLIPSE POUR LE DÉVELOPPEMENT D'UN COMPOSANT UIMA&lt;/b&gt; &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Créer un nouveau Projet Java : File &amp;gt; New &amp;gt; Java Project &amp;gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Donner un Project Name et vérifier le JRE (&amp;gt;=1.5) &amp;gt; Next &amp;gt; Libraries (vous pourrez toujours &lt;a href="http://enicolashernandez.blogspot.com/2010/03/modifier-le-build-path-de-votre-projet.html"&gt;modifier le Build Path de votre projet Eclipse&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Ajouter les dépendances &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;uima-core, uima-tools, uima-cpe&lt;/span&gt; et &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;uima-document-annotation&lt;/span&gt; présentes dans UIMA_HOME/lib :&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;soit par Add External Jar &lt;br /&gt;&lt;/li&gt;&lt;li&gt;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&lt;/li&gt;&lt;li&gt;Cette manipulation n'est pas nécessaire quand vous utilisez Maven&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Finish&lt;/li&gt;&lt;li&gt;Ajouter la UIMA Nature : Dans la vue Package Explorer cliquer droit sur le projet &amp;gt; Add UIMA Nature&lt;/li&gt;&lt;li&gt;Ajouter les répertoires &lt;i&gt;desc&lt;/i&gt; et &lt;i&gt;resources&lt;/i&gt; au &lt;i&gt;build path&lt;/i&gt; (Bouton droit sur les répertoires et Build Path&amp;nbsp;&amp;gt;&amp;nbsp; Add to Build Path)&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-6264504386315008230?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/6264504386315008230/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/03/creer-un-projet-eclipse-pour-le.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/6264504386315008230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/6264504386315008230'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/03/creer-un-projet-eclipse-pour-le.html' title='Créer un projet Eclipse pour le développement d&apos;un composant UIMA'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-4828110836359477789</id><published>2010-03-26T07:20:00.000-07:00</published><updated>2012-01-05T04:19:41.704-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima-addons'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Construire une chaîne de traitement UIMA à partir de composants existants</title><content type='html'>&lt;i&gt;Mis à jour le 5 Janvier 2012&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;&lt;ul&gt;&lt;li&gt;soit configuré comme &lt;b&gt;primitif&lt;/b&gt; si il désigne un traitement élémentaire. La classe implémentant le traitement sera alors désignée.&lt;/li&gt;&lt;li&gt;soit configuré comme &lt;b&gt;aggregate&lt;/b&gt; si le descripteur référence d'autres descripteurs de fichiers primitif ou aggregate.&lt;/li&gt;&lt;/ul&gt;C'est de cette manière que l'on peut réaliser de l'encapsulation de traitement.&lt;br /&gt;&lt;br /&gt;Le lien suivant explique comment &lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html"&gt;&lt;b&gt;exécuter une chaîne de traitement existantes avec UIMA&lt;/b&gt;&lt;/a&gt; (en ligne de commande, par un GUI hors Eclipse, au sein d'Eclipse).&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WhiteSpaceTokenizer qui découpe en mots, TokenAnnotation, et phrases, SentenceAnnotation, un texte fourni en entrée&lt;/li&gt;&lt;li&gt;SnowballAnnotator qui effectue une racinisation des TokenAnnotations et rajoute un trait stem aux TokenAnnotation&lt;/li&gt;&lt;li&gt;Tagger qui rajoute un trait posTag  aux TokenAnnotation&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Le lien suivant explique comment&amp;nbsp;&lt;a href="http://enicolashernandez.blogspot.com/2010/01/installer-les-uima-annotator-addons.html"&gt;installer les Apache UIMA Addons Annotators et Tools&lt;/a&gt;&amp;nbsp;(en gros il s'agit de récupérer le binary des addons de la page&amp;nbsp;&lt;a href="http://uima.apache.org/downloads.cgi"&gt;http://uima.apache.org/downloads.cgi&lt;/a&gt;&amp;nbsp;et de le désarchiver dans UIMA_HOME).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;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. &lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://enicolashernandez.blogspot.com/2010/03/creer-un-projet-eclipse-pour-le.html"&gt;Créer un projet Eclipse pour le développement d'un composant UIMA&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Rendre accessible à votre projet les jar des composants que vous souhaitez&amp;nbsp;utiliser :&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://enicolashernandez.blogspot.com/2010/03/modifier-le-build-path-de-votre-projet.html"&gt;ajouter dans votre build path&lt;/a&gt; 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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Dans la vue Package Explorer cliquer droit sur le répertoire desc du projet &amp;gt; New &amp;gt; Other &amp;gt; UIMA &amp;gt; optez pour "Analysis Engine Descriptor File" &amp;gt; Donner lui un nom&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;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).&amp;nbsp;&lt;/li&gt;&lt;li&gt;Astuce : &amp;nbsp;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.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Dans la vue Package Explorer cliquer droit sur le fichier descripteur que vous venez de créer &amp;gt; Open With &amp;gt; Component Descriptor Editor&lt;/li&gt;&lt;li&gt;Sur l'onglet "Overview", spécifier l'engine type : Aggregate&lt;/li&gt;&lt;li&gt;Sur l'onglet "Aggregate",&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;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".&lt;/li&gt;&lt;li&gt;Le Bouton "Add Remote" permet d'ajouter des composants déployés sur des machines distantes&lt;/li&gt;&lt;li&gt;Ajouter les descripteurs "WhiteSpaceTokenizer", "SnowballAnnotator" et "HmmTagger"dans cet ordre avec le boutton "Add" &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Sur l'onglet "Capabilities",&amp;nbsp; cliquer sur&amp;nbsp; "add Type" et cliquer sur les cases in/out de chaque type.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html"&gt;Exécuter la chaîne&lt;/a&gt; (voir la section Exécuter sous Eclipse)&lt;/li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;b&gt;TODO&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Installer et utiliser des composants par runPearInstaller.sh&amp;nbsp;&lt;/li&gt;&lt;li&gt;Déployer un composant pour un accès distant et ajouter des composants distants dans une chaîne locale&lt;/li&gt;&lt;li&gt;Utiliser le flow controler&lt;/li&gt;&lt;li&gt;Utiliser les UIMA Annotators Addons : OpenCalais Annotator s'interface avec un service web ; Dictionnary et RegExp Annotator requièrent l'ajout de ressources &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-4828110836359477789?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/4828110836359477789/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/03/construire-une-chaine-de-traitement.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4828110836359477789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4828110836359477789'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/03/construire-une-chaine-de-traitement.html' title='Construire une chaîne de traitement UIMA à partir de composants existants'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-5804994173993108075</id><published>2010-03-13T01:36:00.000-08:00</published><updated>2010-10-22T22:12:14.047-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><title type='text'>Gestion du temps - lois et degrés de priorité</title><content type='html'>D'après &lt;a href="http://www.blogger.com/%20http://pst.perso.libertysurf.fr/svtiufm/gestemps.htm"&gt;les commentaires et l'adaptation de Pierre STOUFF d'un document qu'il a reçu lors d'une formation sur&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;i&gt;la gestion du temps&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LOIS&lt;/b&gt;&lt;br /&gt;Loi de Carlson ou loi des séquences homogènes de travail &lt;br /&gt;&lt;blockquote&gt;" Tout travail interrompu sera moins efficace et prendra plus de temps que s'il était effectué de manière continue"&lt;/blockquote&gt;Loi de Parkinson ou loi de la tendance à l'auto-inflation du temps dépensé&lt;br /&gt;&lt;blockquote&gt;"Le temps investi dans un travail en fonction du temps disponible" &lt;/blockquote&gt;&lt;br /&gt;LOI D'ILLITCH ou loi de la contre-productivité du temps investi au-delà d'un certain seuil &lt;br /&gt;&lt;blockquote&gt;"Au delà d'un certain seuil horaire, la productivité du temps investi décroit puis devient négative"&lt;/blockquote&gt;UNE ACTIVITE EST URGENTE SI&lt;br /&gt;&lt;blockquote&gt;"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." &lt;/blockquote&gt;UNE ACTIVITE EST IMPORTANTE SI&lt;br /&gt;&lt;blockquote&gt;"Une activité est importante si... elle contribue à la réalisation des objectifs de la fonction"&lt;/blockquote&gt;ORGANISER C'EST &lt;br /&gt;&lt;blockquote&gt;"Organiser, c'est remettre régulièrement en cause ce qui existe pour l'améliorer." &lt;/blockquote&gt;&lt;b&gt;LES DEGRES DE PRIORITE&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;= IMPORTANT ET URGENT (doit être fait cette semaine)&lt;/li&gt;&lt;li&gt; = IMPORTANT (peut attendre à la semaine suivante)&lt;/li&gt;&lt;li&gt; = URGENT (à faire prochainement) &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-5804994173993108075?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/5804994173993108075/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/03/gestion-du-temps-lois-et-degres-de.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5804994173993108075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5804994173993108075'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/03/gestion-du-temps-lois-et-degres-de.html' title='Gestion du temps - lois et degrés de priorité'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-5914293677909336913</id><published>2010-02-16T10:45:00.000-08:00</published><updated>2011-03-17T12:14:48.710-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules-based analyzer'/><category scheme='http://www.blogger.com/atom/ns#' term='textmarker'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><category scheme='http://www.blogger.com/atom/ns#' term='information extraction'/><title type='text'>Installer et utiliser UIMA TextMarker</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Mise à jour le 15 Mars 2011&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Ce post fut initialement écrit pour la version TextMarker_1.0.0.201002031959.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;Il a été révisé pour la version courante qui est&amp;nbsp;&lt;/span&gt;TextMarker_1.0.0.201102241433&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;La&amp;nbsp;&lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=RoadMap"&gt;prochaine version&lt;/a&gt;&amp;nbsp;est attendue pour... ?&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/"&gt;TextMarker&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;est avant tout une&amp;nbsp;&lt;/span&gt;&lt;a href="https://sourceforge.net/projects/textmarker" style="font-weight: normal;"&gt;bibliothèque libre&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;(licence LGPL)&amp;nbsp;pour le développement d'applications d'extraction d'information à base de règles&amp;nbsp;&lt;/span&gt;&lt;b style="font-weight: normal;"&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: inline !important; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;b style="font-weight: normal;"&gt;sur des éléments de surface et des annotations existantes&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;b style="font-weight: normal;"&gt;&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="display: inline !important; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;b style="font-weight: normal;"&gt;. En tant que bibliothèque il peut s'utiliser relativement simplement au sein d'un Analysis Engine d'Apache UIMA.&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;C'est aussi un environnement de développement au sein d'Eclipse base sur le&amp;nbsp;&lt;a href="http://www.eclipse.org/dltk"&gt;framework&amp;nbsp;DLTK&lt;/a&gt;&amp;nbsp;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="display: inline !important; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;b&gt;&amp;nbsp;(Dynamic Languages Toolkit)&amp;nbsp;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="display: inline !important; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;b&gt;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.&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;div style="font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;Il est développé par &lt;/span&gt;&lt;span style="font-size: small;"&gt;Peter Kluegl and Martin Atzmueller and Frank Puppe à l'unversité de Wuerzburg (de).&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;La documentation s'est enrichi considérablement entre 2010/02 et 2011/02. Un certain nombre de dépendances,&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;et de possibilités d'utilisation font que ce n'est pas toujours évident de comprendre comment le faire fonctionner.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Il est possible de&amp;nbsp;&lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=FAQ"&gt;l'utiliser hors Eclipse (cf. FAQ)&lt;/a&gt;, voir pour cela le post Utiliser UIMA TextMarker au sein d'un Analysis Engine (i.e. hors Eclipse).&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;INSTALLER AU SEIN D'ECLIPSE&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;La page d'&lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=IDEInstall"&gt;installation&lt;/a&gt;&amp;nbsp;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.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;Installation automatique au sein d'Eclipse 3.5 via les updates&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; line-height: 18px;"&gt;&lt;b&gt;sites&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Un &lt;i&gt;update site&lt;/i&gt; se déclare via le menu&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: small;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;Help &amp;gt; Install new softwares&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: small;"&gt;). Il peut être utile (si des problèmes sont rencontrés) de redémarrer Eclipse entre chaque installation à l'aide de la commande&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;eclipse -clean.&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;Ajouter&amp;nbsp;&lt;/span&gt;http://www.apache.org/dist/uima/eclipse-update-site&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&amp;nbsp;UIMA (version 2.3) Update site ;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;Ajouter&amp;nbsp;&lt;/span&gt;http://download.eclipse.org/technology/dltk/updates-dev/1.0&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;DLTK Core Framework (version 1.X) update site pour plugins ;&amp;nbsp;Attention TextMarker utilise actuellement DLTK 1.0 et Eclipse 3.6 update site fournit seulement DLTK 2.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;Ajouter&amp;nbsp;&lt;/span&gt;http://download.eclipse.org/releases/galileo&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;Eclipse Modeling Framework (EMF) ;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;(probablement déjà disponible dans vos Available Sofware Sites) ;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;L'installation de TextMarker ci-dessous conduira Eclipse à récupérer ce qu'il faut sur les &amp;nbsp;updates site ajoutés ci-dessus.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;Ajouter&amp;nbsp;&lt;/span&gt;http://ki.informatik.uni-wuerzburg.de/~pkluegl/updatesite&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;TextMarker update site ; sélectionner&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;"Work with", déselectionner "Group items by category" et&amp;nbsp;sélectionner&amp;nbsp;"Contact all update sites during install to find required software",&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;sélectionner le&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: inherit; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;i&gt;TextMarker feature.&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;L&lt;/span&gt;&lt;/span&gt;&lt;i style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;e CEV feature&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt; est déjà contenu dans le TextMarker feature.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;span style="color: inherit;"&gt;Optionnel : Si vous désirez des visualisations HTML alors installer aussi le &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;i style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px;"&gt;CEV HTML feature&amp;nbsp;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;présenté lors de l'update de TextMarker. Par contre ajouter d'abord les XPCom puis XULRunner features&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;http://ftp.mozilla.org/pub/mozilla.org/xulrunner/eclipse/&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; line-height: 18px;"&gt;&lt;b&gt;Installation manuelle au sein d'Eclipse 3.5&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; line-height: 18px;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;L'installation peut aussi être manuelle en copiant le contenu des répertoires plugins et features de l'&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&lt;a href="http://downloads.sourceforge.net/project/textmarker/TextMarker%20%28contains%20CEV%29/alpha/TextMarkerEclipsePlugins_1.0.0.201002231423.zip?use_mirror=waix"&gt;archive de TextMarker&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;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.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small; line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;UTILISER TEXTMARKER AU SEIN D'ECLIPSE&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;A partir du &lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=GetStarted"&gt;Getting Started&lt;/a&gt; on déduit les étapes suivantes&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Initialiser avec&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;ol style="font-family: inherit;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Importer le &lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/attach/ExampleProject/ExampleProject.zip"&gt;projet exemple&lt;/a&gt; dans votre workspace&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Ouvrir la perspective TextMarker (Window &amp;gt; Open Perspective) &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Stopper la construction automatique, nettoyer et relancer la construction afin de configurer les bons chemins dans tous les composants générés (Project &amp;gt; Stop Build Automatically and do Clean)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;Exécuter avec &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;ol&gt;&lt;li style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Vous pouvez ouvrir les fichiers.tm présents dans scripts avec le &lt;i&gt;TextMarker Source Editor&lt;/i&gt; (Ouvrir avec &amp;gt;&amp;nbsp; TextMarker Source Editor) ; mais ce ne sont que des fichiers textes&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Supprimer les fichiers présents dans output&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;Lancer TextMarker en cliquant bouton droit &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;Run As &amp;gt; Text Marker&lt;/span&gt;&lt;span style="font-family: inherit; font-size: small;"&gt; et en selectionnant &lt;i&gt;Main.tm&lt;/i&gt; ; rien d'apparent ne se produit, mais le répertoire output se remplit à nouveau&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;b&gt;&amp;nbsp;Constater que cela marche &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol style="font-family: inherit;"&gt;&lt;li style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt; Le répertoire output se remplit&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Faire un open with Web Browser sur les fichiers html du répertoire output pour visualiser le résultat du traitement&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;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 &amp;gt; Run configurations &amp;gt; Java Applications &amp;gt; 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)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Si des problèmes se produisent,&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;Problème avec le &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;data path&amp;nbsp;&lt;/span&gt;lors de l'exécution, vous pouvez effectuer ce que &lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=ExampleProject"&gt;la note suivante&lt;/a&gt; indique&lt;/div&gt;&lt;blockquote style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;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.&lt;/i&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote style="font-family: inherit;"&gt;A noter que&lt;/blockquote&gt;&lt;ul style="font-family: inherit;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Pour spécifier un data path&lt;/i&gt;&lt;/span&gt; à utiliser pour trouver une resource &lt;i&gt;by name&lt;/i&gt; faire sur le projet bouton droit &amp;gt; Properties &amp;gt; UIMA CDE Property page &amp;gt; entrer autant de chemins absolus que souhaités séparés par le séparateur de classpath&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Pour &lt;i&gt;configurer la résolution des imports&lt;/i&gt; à la création des descripteurs ou pour &lt;i&gt;utiliser des imports by name&lt;/i&gt; à la création des descripteurs faire Window &amp;gt; Preferences &amp;gt; TextMarker &amp;gt; Builder&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;Problème de "&lt;i&gt;Interpreter installation TextMarker Interpreter does not exist&lt;/i&gt;" lors de l'exécution&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;non résolu... je cherchais éventuellement à modifier le build path pour lui indiquer les deux bibliothèques importantes, mais cela ne semble pas fonctionner.&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Pour &lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/Wiki.jsp?page=Project"&gt;aller plus loin dans la compréhension du projet exemple&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;LIENS&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="font-family: inherit;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Téléchargement : &lt;a class="external" href="https://sourceforge.net/projects/textmarker/"&gt;https://sourceforge.net/projects/textmarker/&lt;/a&gt;&lt;img alt="" class="outlink" src="http://tmwiki.informatik.uni-wuerzburg.de/images/out.png" /&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Documentation : &lt;a href="http://tmwiki.informatik.uni-wuerzburg.de/"&gt;http://tmwiki.informatik.uni-wuerzburg.de&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-5914293677909336913?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/5914293677909336913/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/02/installer-et-utiliser-uima-textmarker.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5914293677909336913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/5914293677909336913'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/02/installer-et-utiliser-uima-textmarker.html' title='Installer et utiliser UIMA TextMarker'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-6334580931017868511</id><published>2010-02-14T12:40:00.000-08:00</published><updated>2010-10-22T22:11:57.058-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Récupérer des plugins Eclipse hors IDE</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;Cela m'a conduit à produire le script &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;get-and-install-eclipse-plugins.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Le script récupére le fichier &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;artifacts.xml&lt;/span&gt; sur lequel il s'appuie pour récupérer les jar plugins et features correspondants au plugin spécifié.&lt;br /&gt;Si plusieurs versions des jars sont disponibles, il récupère la plus récente. &lt;br /&gt;Le script fonctionne sous Ubuntu avec Bash et Perl.&lt;br /&gt;&lt;br /&gt;Télécharger sur&amp;nbsp; h&lt;a href="ttp://e.nicolas.hernandez.free.fr/pro/doku.php?id=misc:software:get-and-install-eclipse-plugins"&gt;ttp://e.nicolas.hernandez.free.fr/pro/doku.php?id=misc:software:get-and-install-eclipse-plugins&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-6334580931017868511?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/6334580931017868511/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/02/comment-recuperer-les-plugins-eclipse.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/6334580931017868511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/6334580931017868511'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/02/comment-recuperer-les-plugins-eclipse.html' title='Récupérer des plugins Eclipse hors IDE'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-3198165762690401402</id><published>2010-02-07T14:58:00.000-08:00</published><updated>2010-03-26T06:58:56.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><category scheme='http://www.blogger.com/atom/ns#' term='opennlp'/><title type='text'>Scripts de téléchargement et d'installation d'un environnement pour utiliser Apache UIMA (&gt;2.3) et développer avec sous Eclipse</title><content type='html'>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&amp;nbsp; utiliser Apache UIMA et développer avec sous Eclipse.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FEATURES&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Scripts pour assister le téléchargement et l'installation d'un environnement pour utiliser Apache UIMA et développer avec sous Eclipse.&amp;nbsp;&lt;/li&gt;&lt;li&gt;La configuration est centralisée pour faciliter la prise en compte les futures mise à jour des outils requis pour l'environnement&lt;/li&gt;&lt;li&gt;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&amp;nbsp;&lt;/li&gt;&lt;li&gt; Les scripts sont distribués sous &lt;a href="http://www.gnu.org/licenses/gpl.html"&gt;licence GPLv3&lt;/a&gt; (liberté de modifier et redistribuer le travail, redistribution des travaux dérivés sous la même licence, mise à disposition du code source)&amp;nbsp; &lt;/li&gt;&lt;li&gt;Testés sous Ubuntu 8.10 - Hardy et 9.04 - Jaunty Jackalope&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;VERSION &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="li"&gt;La version datée du 7/02/2010 intègre les versions suivantes des outils&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Java Sun Development Kit&amp;nbsp; (jdk-6u17-linux-i586)&lt;/li&gt;&lt;li&gt;Eclipse Galileo (3.5)&lt;/li&gt;&lt;li&gt;Plugins UIMA,&amp;nbsp; subversion subeclipse,&amp;nbsp; maven m2eclipse &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/li&gt;&lt;li&gt;Apache UIMA 2.3.0-incubating&lt;/li&gt;&lt;li&gt;OpenNLP v1.3&lt;/li&gt;&lt;li&gt;Apache Tomcat 6.0.20&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;TELECHARGEMENT &lt;/b&gt;&lt;br /&gt;&lt;div class="li"&gt;&lt;a href="http://e.nicolas.hernandez.free.fr/pro/doku.php?id=misc:software:uima-environment-install-script"&gt;Télécharger ici les scripts d'installation d'un environnement d'utilisation et développement Apache UIMA&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-3198165762690401402?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/3198165762690401402/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/02/scripts-dinstallation-dun-enviromment.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/3198165762690401402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/3198165762690401402'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/02/scripts-dinstallation-dun-enviromment.html' title='Scripts de téléchargement et d&apos;installation d&apos;un environnement pour utiliser Apache UIMA (&amp;gt;2.3) et développer avec sous Eclipse'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-1248061151954972035</id><published>2010-01-14T15:24:00.000-08:00</published><updated>2010-10-22T22:11:57.059-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Installer Apache Tomcat (6.0.20 Binary)</title><content type='html'>&lt;b&gt;QU'EST CE QUE C'EST ?&lt;/b&gt;&lt;br /&gt;&lt;a href="http://tomcat.apache.org/"&gt;Apache Tomcat&lt;/a&gt; est une implémentation open source des technologies Java Servlet et JavaServer Pages (JSP), on dit aussi que c'est un conteneur de servlet.&amp;nbsp; &lt;br /&gt;Différentes versions d'Apache Tomcat sont disponibles pour différentes version de spécifications de Servlet et de JSP.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Servlet/JSP Spec. 2.5/2.1 works with Apache Tomcat version 6.0.X&lt;/li&gt;&lt;li&gt;Servlet/JSP Spec. 2.4/2.0 works with Apache Tomcat version 5.5.X&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;RECUPERER APACHE TOMCAT &lt;/b&gt;&lt;br /&gt;Apache Tomcat est disponible à l'adresse &lt;a href="http://tomcat.apache.org/"&gt;http://tomcat.apache.org&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export APACHETOMCATNAME=apache-tomcat&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export APACHETOMCATVERSION=-6.0.20&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export APACHETOMCATARCHIVEEXT=.zip&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;wget http://mir2.ovh.net/ftp.apache.org/dist/tomcat/tomcat-6/v6.0.20/bin/"${APACHETOMCATNAME}${APACHETOMCATVERSION}${APACHETOMCATARCHIVEEXT}"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;b&gt;INSTALLER ET CONFIGURER&lt;/b&gt;&lt;br /&gt;Configurer la variable APPLIDIR qui indique votre répertoire d'installation.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: xx-small;"&gt;# Set APPLIDIR &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;export APPLIDIR=.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;unzip "${APACHETOMCATNAME}${APACHETOMCATVERSION}${APACHETOMCATARCHIVEEXT}" -d $APPLIDIR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;ln -s "${APACHETOMCATNAME}${APACHETOMCATVERSION}" "$APPLIDIR/${APACHETOMCATNAME}"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Il s'agit maintenant de rajouter à votre .bashrc la variable d'environnement &lt;span style="font-size: xx-small;"&gt;CATALINA_HOME&lt;/span&gt; et de la faire pointer vers la racine d'Apache Tomcat désarchivé.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: xx-small;"&gt;export CATALINA_HOME=&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;"$APPLIDIR/${APACHETOMCATNAME}"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DOCUMENTATION&lt;/b&gt;&lt;br /&gt;La &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/index.html"&gt;documentation&lt;/a&gt; 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...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EXECUTER &lt;/b&gt;&lt;br /&gt;La &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/setup.html"&gt;documentation en ligne&lt;/a&gt; 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.&amp;nbsp; &lt;br /&gt;Démarrer Tomcat avec &lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$CATALINA_HOME/bin/startup.sh&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Après démarrage, les applications par défaut incluses dans Tomcat seront disponibles en visitant&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;http://localhost:8080/&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Arrêter Tomcat à l'aide de&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;$CATALINA_HOME/bin/shutdown.sh&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;b&gt;DEPLOYER&lt;/b&gt;&lt;br /&gt;http://tomcat.apache.org/tomcat-6.0-doc/deployer-howto.html&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MANAGER&lt;/b&gt;&lt;br /&gt;Le &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html"&gt;manager&lt;/a&gt; est une application web (installée par défaut dans le context path &lt;code&gt;/manager&lt;/code&gt;) qui permet de gérer les autres applications : les déployer, recharger,&amp;nbsp; undéployer, démarrer, arrêter...&lt;br /&gt;Par défaut, l'application Manager est désactivée. Si vous n'avez pas configuré     &lt;code&gt;$CATALINA_BASE/conf/server.xml&lt;/code&gt; pour sélectionner un fichier de définition des utilisateurs, des passwords et des rôles autres que &amp;nbsp;    &lt;code&gt;$CATALINA_BASE/conf/tomcat-users.xml&lt;/code&gt;, alors éditez le et associer le avec role &lt;b&gt;manager&lt;/b&gt; avec une combinaison username/password (la créer ou utiliser une existante). Cela doit donner quelque chose comme :&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;role rolename="manager"&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;user username="tomcat" password="s3cret" roles="manager"&lt;/span&gt; &lt;br /&gt;&lt;/blockquote&gt;&lt;role rolename="manager"&gt;&lt;user password="s3cret" roles="manager" username="tomcat"&gt; Pour utiliser le manager se rendre sur&lt;br /&gt;&lt;/user&gt;&lt;/role&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;http://localhost:8080/manager/html/&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-1248061151954972035?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/1248061151954972035/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/01/installer-apache-tomcat-6020-binary.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1248061151954972035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/1248061151954972035'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/01/installer-apache-tomcat-6020-binary.html' title='Installer Apache Tomcat (6.0.20 Binary)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-4903124886795553298</id><published>2010-01-12T14:16:00.000-08:00</published><updated>2011-05-25T09:39:11.288-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima-addons'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Installer les UIMA Addons Annotators &amp; tools</title><content type='html'>&lt;i&gt;Mise à jour&amp;nbsp;2011 04 26 :&amp;nbsp;Version courante des addons est toujours la 2.3.0-incubating&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;INSTALLATION&lt;/b&gt;&lt;br /&gt;Rien de plus simple pour installer les UIMA Annotator Addons and tools&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Récupérer l'archive addons&lt;/b&gt; (celles ci contient tout ce qui est annoncé dans le titre) disponible sur&amp;nbsp;&lt;a href="http://uima.apache.org/downloads.cgi"&gt;http://uima.apache.org/downloads.cgi&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export UIMAADDONSDISTANTDIR=uimaj-annotator-addons-2.3.0-incubating&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export UIMAADDONSARCHIVEFILE=uimaj-annotator-addons-2.3.0-incubating-bin.zip&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;wget "http://mirror.mkhelif.fr/apache/incubator/uima/binaries/${UIMAADDONSDISTANTDIR}/${UIMAADDONSARCHIVEFILE}"&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;b&gt;2. Puis l'installer en la désarchivant &lt;/b&gt;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.&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;unzip "${UIMAADDONSARCHIVEFILE}" -d "$UIMA_HOME/.."&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;b&gt;CONFIGURATIONS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Apache UIMAJ Version &lt;b&gt;2.2.2-incubating&lt;/b&gt; contient &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;les annotators suivant&amp;nbsp; &lt;i&gt;&lt;span style="font-family: inherit;"&gt;DictionaryAnnotator, RegularExpressionAnnotator, Tagger, WhitespaceTokenizer&lt;/span&gt;&lt;/i&gt; dans &lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;apache-uima/addons/annotator&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;les outils suivant &lt;i&gt;SimpleServer, PearPackagingAntTask, PearPackagingMavenPlugin&lt;/i&gt; dans &lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;apache-uima/addons&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Apache UIMAJ Version &lt;b&gt;2.3.0-incubating&lt;/b&gt; contient &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;les annotators suivant &lt;i&gt;&lt;span style="font-family: inherit;"&gt;BSFAnnotator, Lucas, Tagger, ConceptMapper, OpenCalaisAnnotator, TikaAnnotator, ConfigurableFeatureExtractor, RegularExpressionAnnotator&amp;nbsp; WhitespaceTokenizer, DictionaryAnnotator, SnowballAnnotator&lt;/span&gt;&lt;/i&gt; dans &lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;apache-uima/addons/annotator&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;les outils suivant &lt;i&gt;SimpleServer, FsVariables PearPackagingAntTask&lt;/i&gt; dans &lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;apache-uima/addons&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-4903124886795553298?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/4903124886795553298/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2010/01/installer-les-uima-annotator-addons.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4903124886795553298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4903124886795553298'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2010/01/installer-les-uima-annotator-addons.html' title='Installer les UIMA Addons Annotators &amp; tools'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-4742508788370852478</id><published>2009-12-18T10:31:00.000-08:00</published><updated>2010-03-26T14:23:41.646-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Exécuter un traitement ou une chaîne de traitement sous UIMA (avec UIMAJ et en local)</title><content type='html'>&lt;i&gt;Update 20100326&lt;/i&gt;: Définition de traitement et chaînes de traitement + précision de l'utilisation d'Eclipse pour l'exécution &lt;i&gt;Update&lt;/i&gt;&lt;i&gt; 20100212&lt;/i&gt;: Validé pour Apache UIMAJ 2.2.*-incubating et&amp;nbsp;&lt;b&gt; &lt;/b&gt;UIMAJ 2.3.*-incubating&lt;br /&gt;&lt;br /&gt;Apache UIMA ne distingue pas la notion de &lt;b&gt;traitement&lt;/b&gt; de celle de &lt;b&gt;chaîne de traitement&lt;/b&gt;. Il ne manipule que des chaînes de traitement qui a minima ne compte qu'un seul traitement/composant à exécuter. La description de la chaîne est réalisée à partir d'un fichier descripteur qui est&lt;br /&gt;&lt;ul&gt;&lt;li&gt;soit configuré comme &lt;b&gt;primitif&lt;/b&gt; si il désigne un traitement élémentaire. La classe implémentant le traitement sera alors désignée.&lt;/li&gt;&lt;li&gt;soit configuré comme &lt;b&gt;aggregate&lt;/b&gt; si il désigne une chaîne de traitement. Dans ce cas il référencera d'autres descripteurs de fichiers primitif ou Aggregate.&lt;/li&gt;&lt;/ul&gt;C'est de cette manière que l'on peut réaliser de l'encapsulation de traitement.&lt;br /&gt;&lt;br /&gt;Les différentes manières d'exécuter un traitement sont illustrés avec des descripteurs présents dans les exemples de code fourni avec UIMAJ.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;$UIMA_HOME/examples/descriptors/analysis_engine/&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;EN LIGNE DE COMMANDE &lt;/b&gt;&lt;br /&gt;Le &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;UIMA_HOME/README&lt;/span&gt; indique comment réaliser un test d'installation. Il s'agit d'exécuter un AnnotatorEngine et d'observer si le résultat correspond au traitement attendu à l'aide de l'outil&lt;span style="font-size: x-small;"&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;$UIMA_HOME/bin/runAE.sh&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Argument 1, on indique un descripteur d'AnnotatorEngine, par exemple : &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;PersonTitleAnnotator.xml, SimpleTokenAndSentenceAnnotator.xml, SimpleNameRecognizer_RegEx_TAE.xml&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Argument 2, un répertoire source où se trouve des fichiers .txt à traiter&lt;/li&gt;&lt;li&gt;Argument 2, un répertoire de destination des résultats produits&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;$UIMA_HOME/bin/runAE.sh $UIMA_HOME/examples/descriptors/analysis_engine/SimpleTokenAndSentenceAnnotator.xml &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;$UIMA_HOME/&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;examples/data/ &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;$UIMA_HOME&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;examples/data/processed&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;b&gt;A TRAVERS UN GUI HORS ECLIPSE&amp;nbsp; &lt;/b&gt;&lt;br /&gt;Par exemple à l'aide de la commande &lt;span style="font-size: xx-small;"&gt;$UIMA_HOME/bin/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;documentAnalyzer.sh&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;InputDirectory doit diriger vers : &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;applications/apache-uimaj/examples/data&lt;/span&gt;&lt;/li&gt;&lt;li&gt;OutputDirectory doit diriger vers : &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;applications/apache-uimaj/examples/data/processed&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Location of Analysis Engine XML Descriptor : &lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;applications/apache-uimaj/examples/descriptors/analysis_engine/SimpleTokenAndSentenceAnnotator.xml&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Puis Run et double cliquer sur un fichier pour lancer le Java Viewer (en ligne de commande il s'agit du programme &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;annotationViewer.sh&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;L'exécution GUI hors eclipse peut aussi se faire avec le &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;span style="font-size: xx-small;"&gt;cpeGui.sh&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;/span&gt;qui requiert de spécifier des descripteurs de composant d'import et d'export des données à traiter (à savoir un collection reader et des cas consummer). Des exemples sont disponibles dans le répertoire exemples de UIMA. Si vous exporter en XMI, il vous faudra aussi lancer à la main l'annotation viewer pour visualiser les résultats.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;AU SEIN D'ECLIPSE&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://enicolashernandez.blogspot.com/2010/03/creer-un-projet-eclipse-pour-le.html"&gt;Cela requiert de créer un projet Eclipse pour le développement d'un composant UIMA&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Pour exécuter les outils veiller à ajouter dans les libraries du projet en plus de uima-core et uima-tools, uima-cpe ! Tous ces packages se trouvent dans UIMA_HOME/lib&lt;/li&gt;&lt;li&gt;Cliquer sur le projet avec le bouton droit dans la vue Package Explorer &amp;gt; Run as &amp;gt; Run Configurations &amp;gt; Java Application&lt;/li&gt;&lt;li&gt;Puis&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Dans Name: donnez le nom que vous souhaitez à la place &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;New_configuration&lt;/span&gt;, par exemple DocumentAnalyser&lt;/li&gt;&lt;li&gt;Dans Project: vérifiez que vous êtes dans le bon projet Eclipse&lt;/li&gt;&lt;li&gt;Dans &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Main Class&lt;/span&gt;: cherchez la classe &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;DocumentAnalyzer&lt;/span&gt;, vous devez trouver (si vous avez bien ajouter le package uima-tools) &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;org.apache.uima.tools.docanalyzer.DocumentAnalyzer&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Apply &amp;gt; Run ; le DocumentAnalyser exportera les résultats en XMI et exécutera l'Annotation Viewer&lt;/li&gt;&lt;/ol&gt;Pour visualiser les fichiers XMI préalablement générés&lt;br /&gt;&lt;ol&gt;&lt;li&gt;réalisez la même démarche avec la classe Annotation Viewer&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-4742508788370852478?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/4742508788370852478/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4742508788370852478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/4742508788370852478'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html' title='Exécuter un traitement ou une chaîne de traitement sous UIMA (avec UIMAJ et en local)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-7685570584746750628</id><published>2009-12-18T09:58:00.000-08:00</published><updated>2010-03-26T06:59:10.878-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><category scheme='http://www.blogger.com/atom/ns#' term='opennlp'/><title type='text'>Installer et utiliser OpenNLP au sein de UIMA (Version 1.3. sous linux)</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;a href="http://opennlp.sourceforge.net/"&gt;OpenNLP&lt;/a&gt; est à la fois&lt;/div&gt;&lt;ul style="font-family: inherit;"&gt;&lt;li&gt;un regroupement de projets libres liés au traitement automatique des langues (TAL)&amp;nbsp;&lt;/li&gt;&lt;li&gt;et un ensemble d'outils de TAL développés en Java, qui utilisent la bibliothèque d'apprentissage automatique &lt;a href="http://maxent.sourceforge.net/"&gt;OpenNLP Maxent&lt;/a&gt; et qui permettent les traitements suivant : le découpage en phrases, la détection d'entités nommées, la résolution de la coréférence...&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: inherit;"&gt;Nous parlons ici de l'ensemble d'outils de TAL qui utilisent la bibliothèque Maxent.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;En dec 2009, avec la version apache uima java 2.2.2 en incubation, seuls des wrappers pour la version opennlp-1.3.0 sont disponibles malgré le fait que opennlp en soit à la version 1.4.3.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;Pour cette version seuls deux modèles de langue sont disponibles : anglais et espagnol. La version 1.4.3 possède en plus des modèles pour l'allemand et le thai. Les sources s'accompagnent de scripts qui montrent comment entrainer le POS tagger.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;1. Récupération et installation de OpenNLP&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;Une documentation expliquant comment &lt;span style="font-size: small;"&gt;compiler, configurer, exécuter, entrainer... est disponible en version HTML dans l'archive docs/README.html ou &lt;a href="http://opennlp.sourceforge.net/README.html"&gt;en ligne&lt;/a&gt;).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Il faut d'une part récupérer les outils (opennlp-tools) et les modèles (opennlp-models). &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Les modèles doivent restés compressés, ils seront utilisés en l'état.&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;wget http://prdownloads.sourceforge.net/opennlp/opennlp-tools-1.3.0.tgz?download&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;wget -rc http://opennlp.sourceforge.net/models-1.3/&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;find opennlp.sourceforge.net/models-1.3/ -name "index*" -exec rm {} + ;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;mv opennlp.sourceforge.net/models-1.3 opennlp-models-1.3.0&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;zip -r opennlp-models-1.3.0.zip opennlp-models-1.3.0&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;rm -r opennlp.sourceforge.net&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;Ensuite il faut compiler les outils (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;requiert JAVA_HOME, ant est dispo dans lib/)&lt;/span&gt;. Après avoir migrer les deux archives dans votre répertoire d'applications (ici $APPLI). &lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: xx-small;"&gt;tar -xvzf &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;opennlp-tools-1.3.0.tgz&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: xx-small;"&gt;ln -s opennlp-tools-1.3.0 &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;opennlp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: xx-small;"&gt;cd opennlp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: xx-small;"&gt;./build.sh&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;Une bibliothèque java d'outils a été générée dans le répertoire output.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;Par la même occasion on désarchive les modèles dans le répertoire de opennlp&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export OPENNLP_HOME=$APPLI/opennlp&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;unzip &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;opennlp-&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;models&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;-1.3.0.zip -d &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;$OPENNLP_HOME&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;ln -s opennlp-models-1.3.0 $&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;OPENNLP_HOME/&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;models&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;2. Utilisation en ligne de commande&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;Il est nécessaire de rajouter cette nouvelle bibliothèque ainsi que d'autres utiles pour faire tourner les outils.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;Si ce n'est pas déjà fait rajouter à la fin de votre ~/.bashrc les lignes suivantes (n'oubliez pas ensuite de faire un "&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;source ~/.bashrc&lt;/span&gt;&lt;/span&gt;" afin de rendre effectif ces changements pour votre terminal courant) .&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export OPENNLP_HOME=$APPLI/opennlp&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt; CLASSPATH=${OPENNLP_HOME&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;}/lib/ant.jar:${OPENNLP_HOME&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;}/lib/jakarta-ant-optional.jar:${OPENNLP_HOME&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;}/lib/jwnl-1.3.3.jar:${OPENNLP_HOME&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;}/lib/maxent-2.4.0.jar:${OPENNLP_HOME&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;}/lib/trove.jar:${OPENNLP_HOME&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;}/output/opennlp-tools-1.3.0.jar&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;:${&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;CLASSPATH}&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Chaque outil de la bibliothèque &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;opennlp-tools &lt;/span&gt;&lt;span style="font-size: small;"&gt;est décrit par une classe qui contient un "main" qui réalise le traitement correspondant. Certains de ces outils supposent le traitement d'autres pour pouvoir fonctionner. La plupart prennent un argument, le chemin vers le modèle qu'ils exploitent. Le parser requiert un répertoire de modèles et le namefinder une liste de modèles.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Des exemples sont disponibles dans le fichier&lt;/span&gt;&lt;span style="font-size: small;"&gt; docs/README.html ou &lt;a href="http://opennlp.sourceforge.net/README.html"&gt;en ligne.&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;echo "Jules Verne was a French author who helped pioneer the science-fiction genre. He was born in the bustling harbor city of Nantes in Western France in 1828." &amp;gt; /tmp/text ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt; java opennlp.tools.lang.english.SentenceDetector \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt; ${OPENNLP_HOME}/models/english/sentdetect/EnglishSD.bin.gz &amp;lt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;/tmp/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;text |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt; java -Xmx400m opennlp.tools.lang.english.NameFinder \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;${OPENNLP_HOME}/m&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;span style="font-size: xx-small;"&gt;odels/english/namefind/*.bin.gz&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;3. Utilisation au sein d'Apache UIMA&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;(dernière section en cours d'écriture)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Les wrappers sont disponibles dans le répertoire UIMA_HOME/examples/&lt;/span&gt;&lt;span style="font-size: small;"&gt;oppennlp_wrappers/&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Dans Eclipse, il s'agit de donner accès aux descripteurs de ces wrappers et de déclarer les bibliothèques requises pour les exécuter&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Déclarer en répertoire source le répertoire oppennlp_wrappers/src en cliquant bouton droit et Build Path &amp;gt; Use As Source Folder&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Cliquer sur le projet examples avec le bouton droit puis Properties &amp;gt; Java Build Path &amp;gt; Add Variables &amp;gt; OPENNLP_HOME &amp;gt; Extend &amp;gt; et ajouter les bibliothèques&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-7685570584746750628?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/7685570584746750628/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/comment-installer-opennlp-au-sein-de.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7685570584746750628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7685570584746750628'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/comment-installer-opennlp-au-sein-de.html' title='Installer et utiliser OpenNLP au sein de UIMA (Version 1.3. sous linux)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-520324057660490567</id><published>2009-12-16T15:07:00.000-08:00</published><updated>2010-03-26T15:23:12.851-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Installer l'implémentation Java d'Apache UIMA (uimaj)</title><content type='html'>&lt;b&gt;AVERTISSEMENT&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Cette page avait été écrit pour décrire l'installation de&amp;nbsp; l'implémentation Java d'Apache UIMA (uimaj)&amp;nbsp; Version Binary 2.2.2-incubating sous Linux.&lt;br /&gt;&lt;br /&gt;Depuis j'ai produit un ensemble de scripts pour &lt;a href="http://enicolashernandez.blogspot.com/2010/02/scripts-dinstallation-dun-enviromment.html"&gt;gérer automatiquement le téléchargement et l'installation d'un environnement pour utiliser Apache UIMA (&amp;gt;2.3) et développer avec sous Eclipse.&lt;/a&gt;&lt;br /&gt;&lt;span class="post-comment-link"&gt;  &lt;/span&gt; &lt;br /&gt;&lt;a href="http://enicolashernandez.blogspot.com/2010/02/scripts-dinstallation-dun-enviromment.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;b&gt;INTRODUCTION&lt;/b&gt;&lt;br /&gt;La documentation officiell&lt;span style="font-family: inherit;"&gt;e référe&lt;/span&gt;nce deux guides&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp; l'&lt;a href="http://incubator.apache.org/uima/downloads/releaseDocs/2.2.2-incubating/docs/html/overview_and_setup/overview_and_setup.html"&gt;UIMA overview and SDK Setup&lt;/a&gt;&lt;a href="http://www.blogger.com/"&gt; &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp; le &lt;a href="http://incubator.apache.org/uima/documentation.html"&gt;Getting started&lt;/a&gt; (une page ciblée sur l'installation de Java UIMA ) &lt;/li&gt;&lt;/ul&gt;Jérôme Rocheteau décrit &lt;a href="http://jerome.rocheteau.free.fr/index/post/2009/09/18/Comment-installer-UIMA"&gt;comment installer Apache UIMA Java en récupérant les sources sur le dépôts subversion et en les installant avec Maven.&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;Ci-dessous nous rapportons une synthèse en français des grandes étapes pour la version d'&lt;i&gt;Apache UIMA  2.2.2-incubating&lt;/i&gt; et d'&lt;i&gt;Eclipse Galileo 3.5.1;&lt;/i&gt; cela comprend l'application du correctif hf1.&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Installation d'Eclipse et de ses plugins&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Eclipse n'est pas nécessaire pour l'installation et l'utilisation du framework Apache UIMA ou du SDK. Les outils Apache sont utilisables hors IDE même si la tendance serait à privilégier leur intégration seulement au sein de celui-ci (voir le CAS Editor).&lt;br /&gt;Eclipse est néanmoins recommandé pour le développement de composants UIMA.&lt;br /&gt;Nous renvoyons au billet &lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-installer-eclipse-galileo-351.html"&gt;http://enicolashernandez.blogspot.com/2009/12/comment-installer-eclipse-galileo-351.html&lt;/a&gt; pour l'installation d'Eclipse et de ses plugins. Nous supposons l'installation de &lt;i&gt;Eclipse Galileo 3.5.1&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Installation du framework Apache UIMA, de son SDK et des codes exemples&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Sur &lt;a href="http://incubator.apache.org/uima/downloads.cgi"&gt;http://incubator.apache.org/uima/downloads.cgi&lt;/a&gt; &lt;b&gt;récupérer les archives&lt;/b&gt; des versions binaires pour Linux des &lt;i&gt;latest official releases&lt;/i&gt; de&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;UIMA Java framework and SDK à savoir uimaj-2.2.2-incubating-bin.zip&lt;/li&gt;&lt;li&gt;UIMA core hotfix 1 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;UIMA Annotator Addons &amp;amp; Simple Server &amp;amp; Pear packaging tools&lt;/li&gt;&lt;/ul&gt;2. &lt;b&gt;Désarchiver&lt;/b&gt; l'archive "UIMA Java framework and SDK" dans le répertoire de votre choix. Pour ce qui suit nous supposons l'existance d'un répertoire d'applications désigné par la variable d'environnement $APPLI&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Au passage, je crée un lien symbolique pour me permettre de changer aisément de version à l'avenir.&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;cd $APPLI&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;unzip uimaj-2.2.2-incubating-bin.zip &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;mv apache-uima apache-uimaj-2.2.2-incubating-bin &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;ln -s apache-uimaj-2.2.2-incubating-bin apache-uimaj&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;3. &lt;b&gt;Fixer les variables d'environnement.&lt;/b&gt; Pour cela je suis les consignes du fichier README présent dans l'archive.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;ul&gt;&lt;li&gt;Set JAVA_HOME to the directory of your JRE installation you would like to use for UIMA. &lt;/li&gt;&lt;li&gt;Set UIMA_HOME to the apache-uima directory of your unpacked Apache UIMA distribution &lt;/li&gt;&lt;li&gt;Append UIMA_HOME/bin to your PATH &lt;/li&gt;&lt;li&gt;Please run the script UIMA_HOME/bin/adjustExamplePaths.sh (or .sh), to update emacs .bashrc&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;#-- UIMA&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export UIMA_HOME=${APPLI}/apache-uimaj&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;export PATH=${UIMA_HOME}/bin:$PATH&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;#export UIMA_CLASSPATH=/dir/to/my/component.jar&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;#export UIMA_LOGGER_CONFIG_FILE=$UIMA_HOME/config/myLoggerConfig.properties&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;4. &lt;b&gt;Un test d'installation&lt;/b&gt; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Afin de réaliser ce test consulter la page "&lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html"&gt;Comment exécuter des chaînes de traitement avec UIMA &lt;/a&gt;" notamment la section "Exécution d'une chaîne de traitement en ligne de commande".&lt;br /&gt;&lt;br /&gt;5. &lt;b&gt;Désarchiver le &lt;i&gt;UIMA core hotfix 1&lt;/i&gt; &lt;/b&gt;(correctif sur la gestion mémoire) et placer la bibliothèque uima-core.jar fournie dans $UIMA_HOME/lib à la place de celle existante. &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;6. &lt;/b&gt;&lt;b&gt;Importer le répertoire de codes exemples UIMA_HOME/examples au sein d'Eclipse &lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;ul&gt;&lt;li&gt;Cliquer onglet File &amp;gt; Import ; Sélectionner "General/Existing Project into Workspace" ; Cliquer "Next" ; Cliquer "Browse" et naviguer jusqu'au répertoire UIMA_HOME&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;7. &lt;/b&gt;&lt;b&gt;Définir la variable UIMA_HOME au sein d'Eclipse&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cliquer onglet Window &amp;gt; Preferences &amp;gt; Java &amp;gt; Build Path &amp;gt; Classpath Variables &amp;gt; Faire New (Name: UIMA_HOME et Path: Folder... &amp;gt; vers "applications/apache-uima") &amp;gt; Ok &amp;gt; Ok &amp;gt; Yes (rebuild) &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;8. Un test d'installation au sein d'Eclipse&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Afin de réaliser ce test consulter la page "&lt;a href="http://enicolashernandez.blogspot.com/2009/12/comment-executer-des-chaines-de.html"&gt;Comment exécuter des chaînes de traitement avec UIMA &lt;/a&gt;" notamment la section "Exécuter une chaîne de traitement au sein d'Eclipse". &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;9. &lt;a href="http://enicolashernandez.blogspot.com/2010/01/installer-les-uima-annotator-addons.html%20"&gt;L'&lt;b&gt;ajout des addons..&lt;/b&gt;.&lt;/a&gt;&lt;br /&gt;est décrit dans ce post.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-520324057660490567?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/520324057660490567/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/comment-installer-limplementation-java.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/520324057660490567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/520324057660490567'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/comment-installer-limplementation-java.html' title='Installer l&apos;implémentation Java d&apos;Apache UIMA (uimaj)'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-2714679360739691134</id><published>2009-12-16T14:55:00.000-08:00</published><updated>2011-12-07T13:26:44.843-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='forge'/><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCode'/><category scheme='http://www.blogger.com/atom/ns#' term='commons-based peer production'/><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><title type='text'>Créer un projet sous GoogleCode</title><content type='html'>&lt;i&gt;Dernière mise à jour : 1 mars 2011&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;La page "&lt;a href="http://code.google.com/p/support/wiki/GettingStarted"&gt;A quick guide to getting started with project hosting on Google Code&lt;/a&gt;" explique comment contribuer à ou créer un projet sous GoogleCode (par exemple&lt;a href="http://opensource.org/licenses/category"&gt; comment choisir la licence d'un nouveau projet&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;En quelques cliques...&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Créer un projet&lt;/b&gt; en cliquant sur &lt;a href="http://code.google.com/hosting/createProject" rel="nofollow"&gt;Create Project&lt;/a&gt; et remplir le formulaire &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;nom, résumé et description du projet, mais aussi des choix comme (ici avec des valeurs exemples que j'utilise en général)&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Project name: si votre nom est composé alors séparer chaque mot par un tiret (e.g. &lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;votre-nom-de-projet&lt;/span&gt;&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Version control system: Subversion&lt;/li&gt;&lt;li&gt;Source code license: Apache License v2.0&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Configurer le projet &lt;/b&gt;(à l'aide de l'onglet&amp;nbsp;&lt;i&gt;Administer de&lt;/i&gt;&amp;nbsp;la barre de menu horizontale. Le fait de cliquer dessus fait apparaître un sous menu.)&lt;br /&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Définir les membres en cliquant sur &lt;i&gt;Project Members&lt;/i&gt; (les &lt;i&gt;owners&lt;/i&gt; ont tous les droits, les &lt;i&gt;committers&lt;/i&gt; peuvent travailler sur le projet mais ne peuvent pas le configurer.)&lt;/li&gt;&lt;li&gt;(Optionnel) Sous l'onglet&amp;nbsp;&lt;i&gt;Project Summary, &lt;/i&gt;spécifier la notification des modifications de la forge en déclarant le nom de votre &lt;i&gt;liste de discussion&lt;/i&gt; ou google groupe (qui servira aussi d'alias dans nos échanges mails) dans la section&lt;i&gt; Activity notifications&lt;/i&gt; de&amp;nbsp;&lt;i&gt;Administer &lt;/i&gt;puis &lt;i&gt;Issue Tracking.&lt;/i&gt; (Pour créer un google groupe se rendre sur &lt;a href="http://groups.google.fr/groups/create"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;http://groups.google.fr/groups/create&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;(Optionnel) Sous l'onglet&amp;nbsp;&lt;i&gt;Project Summary,&amp;nbsp;&lt;/i&gt;spécifier le&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;i&gt;Web Property ID de Google Analytics&lt;/i&gt; afin de pouvoir obtenir des statistiques de visistes via &lt;a href="http://www.google.com/intl/fr/analytics/"&gt;Google Analytics&lt;/a&gt; (la note &lt;i&gt;Learn more, rappelé plus bas,&amp;nbsp;&lt;/i&gt;vous indique la démarche).&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;b&gt;Services à disposition et menu de gestion du projet&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;La barre d'onglets horizontale offre différents services : Project Home, Downloads, Wiki, Issues, Source, Administer&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;Downloads&lt;/i&gt; permet de uploader des fichiers avec le lien &lt;i&gt;New download&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Wiki&lt;/i&gt; permet de rédiger des pages avec le lien &lt;i&gt;New page&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Issues&lt;/i&gt; permet de signaler des observations sur le projet pour aider à son bon développement.&amp;nbsp; Elles émanent des utilisateurs comme des développeurs. &lt;br /&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Cela se fait avec &lt;i&gt;New issue&lt;/i&gt; et en spécifiant entre autres le &lt;i&gt;Type&lt;/i&gt; de l'issue -&lt;i&gt;Defect&lt;/i&gt; (défaut du logiciel), -&lt;i&gt;Enhancement&lt;/i&gt; (amélioration demandée sur quelque chose qui existe), -&lt;i&gt;Task&lt;/i&gt; (quelque chose de nouveau à développer)... et sa priorité &lt;/li&gt;&lt;li&gt;Par la suite, les développeurs consultent les issues et agissent en conséquence. Une issue peut recevoir plusieurs commentaires de différentes personnes. Suivant leurs traitements, les développeurs changeront leur &lt;i&gt;Status&lt;/i&gt; (Accepté (le problème est confirmé), Fixed (defect réparée), Invalid (issue invalide), Done (task effectuée)...&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;i&gt;Source&lt;/i&gt; indique les commandes à taper pour récupérer avec un client subversion (svn) depuis un poste linux les sources du projets afin de contribuer ou seulement de les consulter.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;si vous vous trouvez derrière un proxy, alors éditer le fichier ~/.subversion/servers et à la fin, décommenter les lignes suivantes en indiquant les bonnes valeurs&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;# http-proxy-host = defaultproxy.whatever.com&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;# http-proxy-port = 7000&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;li&gt;&lt;b&gt;Utiliser le dépot svn&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Votre dépot svn est accessible à une adresse similaire à celle-ci&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;https://votre-nom-de-projet.googlecode.com/svn&amp;nbsp;&lt;/span&gt;&lt;/span&gt;; où par défaut 3 sous répertoires sont disponibles : &lt;i&gt;trunk&lt;/i&gt; (version principale en cours de développement), &lt;i&gt;tags&lt;/i&gt; (précédentes versions stables), &lt;i&gt;branches&lt;/i&gt; (évolutions différentes du tronc ou corrections de bugs).&lt;/li&gt;&lt;li&gt;L'onglet source vous indique comment récupérer le trunk... &lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Pour commencer à travailler, faites un checkout pour commencer à travailler sur votre &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;projet. Bien entendu la première version récupérée sera vide mais s'accompagne de fichiers &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;qui permettront de synchroniser votre copie locale avec le référentiel subversion.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://enicolashernandez.blogspot.com/2011/12/publier-une-javadoc-sous-forge-google.html"&gt;Publier une Javadoc sous forge Google Code&lt;/a&gt;&lt;/li&gt;&lt;ol&gt;&lt;/ol&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://enicolashernandez.blogspot.com/2011/12/mesurer-le-nombre-de-visites-sur-votre.html" style="font-weight: normal;"&gt;Mesurer le nombre de visites sur votre projet hébergé sous Google Code grâce à Google Analytics&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;ol&gt;&lt;/ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;b&gt;&lt;a href="http://enicolashernandez.blogspot.com/2011/12/ajouter-un-depot-repository-maven-votre.html" style="font-weight: normal;"&gt;Ajouter un dépot (repository) Maven à votre forge Google Code grâce à Subversion&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;TODO Liens vers mon cours de svn, notamment pour faire des tags... Choisir sa licence...&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;ol&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-2714679360739691134?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/2714679360739691134/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/creer-un-projet-sous-googlecode.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2714679360739691134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2714679360739691134'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/creer-un-projet-sous-googlecode.html' title='Créer un projet sous GoogleCode'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-2600670291812234448</id><published>2009-12-16T08:54:00.000-08:00</published><updated>2011-11-30T00:32:10.423-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Installer Eclipse et ses plugins pour UIMA</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;i&gt;Mise à jour le 111130 : (lien update eclipse uima)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;INSTALLER ECLIPSE &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;http://www.eclipse.org/downloads/&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/blockquote&gt;Récupération de la version suivante d'eclipse&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eclipse IDE for Java EE Developers (188 MB) Tools for Java developers creating Java EE and Web applications, including a Java IDE, tools for Java EE, JPA, JSF, Mylyn and others. More... &lt;/li&gt;&lt;li&gt;Eclipse 3.5.1. / Galileo / eclipse-jee-galileo-SR1-linux-gtk&lt;/li&gt;&lt;li&gt;http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/galileosr1&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;INSTALLER LES PLUGINS ECLIPSE PAR L'IDE&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Installation des plugins de Maven, Subversion, et UIMA&lt;br /&gt;&lt;br /&gt;Le post suivant explique la manipulation générale : &lt;br /&gt;&lt;a href="http://uima-fr.org/planet/#article4"&gt;http://jerome.rocheteau.free.fr/index/post/2009/10/29/Comment-configurer-Eclipse-pour-UIMA&lt;/a&gt; &lt;br /&gt;Le présent post détaille la manipulation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Sites de téléchargement respectifs&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;subversion &lt;a href="http://subclipse.tigris.org/update_1.6.x"&gt;http://subclipse.tigris.org/update_1.6.x&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;maven &lt;a href="http://m2eclipse.sonatype.org/update"&gt;http://m2eclipse.sonatype.org/update&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;UIMA&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white; font-family: 'Palatino Linotype', 'Times New Roman', Times, serif; font-size: 15px; line-height: 16px;"&gt;&lt;a href="http://www.apache.org/dist/uima/eclipse-update-site"&gt;http://www.apache.org/dist/uima/eclipse-update-site&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;2. Démarche d'installation pour chaque plugin&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Help &amp;gt; Software updates | Install New software &amp;gt; onglet "Software Available" &amp;gt; Add site location&lt;/li&gt;&lt;li&gt;Cocher le nouveau site ajouté et ceux qui sont apparus en même temps, éventuellement les autres aussi pour les mettre à jour.&lt;/li&gt;&lt;li&gt;Puis cliquer sur installer &lt;/li&gt;&lt;li&gt;Commence une étape de résolution de dépendances, il est possible qu'il faille cocher plus de sites afin de permettre cette résolution, il est possible qu'il faille faire des install un à un des sites, et il est possible qu'il faille commencer par ceux natifs d'eclipse. Quelques refresh.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;3. Vérifier l'installation en observant la présence de ...&lt;/b&gt;**&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;SVN : cliquer sur package (fenêtre de gauche) avec bouton droit &amp;gt; New &amp;gt; Other &amp;gt; SVN &lt;/li&gt;&lt;li&gt;&amp;nbsp;MVN : cliquer sur package (fenêtre de gauche) avec bouton droit &amp;gt; Maven m2&lt;/li&gt;&lt;li&gt;&amp;nbsp;UIMA : cliquer sur un projet présent dans package (fenêtre de gauche) avec bouton droit &amp;gt; Add UIMA Nature&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;INSTALLER LES PLUGINS ECLIPSE EN LIGNE DE COMMANDE &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Il est possible d'installer les plugins à la main, vous trouverez dans l'archive suivante &lt;a href="http://www.blogger.com/goog_1265995708774"&gt;un script&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.blogger.com/%20http://enicolashernandez.blogspot.com/2010/02/scripts-dinstallation-dun-enviromment.html"&gt; qui se charge de l'installation des plugins Eclipse &lt;/a&gt;(attention il requiert le lancement d'&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;eclipse -clean&lt;/span&gt;&lt;/span&gt;) entre chaque installation.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;CONFIGURATIONS D'INSTALLATION&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;1. Eclipse Galileo 3.5.1 et Apache UIMA &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;2.2.2-incubating&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Plugin Eclipse Maven&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Maven requiert d'abord d'installer le site http://download.eclipse.org/tools/ajdt/35/update/&lt;br /&gt;&lt;br /&gt;(vu sur http://docs.codehaus.org/display/M2ECLIPSE/Installation+Requirements#InstallationRequirements-AJDT)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Plugin UIMA&lt;/b&gt;&lt;br /&gt;Le site propose deux ressources&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Apache UIMA Eclipse tooling and runtime support&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/li&gt;&lt;li&gt;&amp;nbsp;Apache UIMA-AS Eclipse tooling&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Installer d'abord le 1er&lt;br /&gt;&lt;br /&gt;Puis pour permettre l'install du second : http://www.mail-archive.com/uima-user@incubator.apache.org/msg02554.html&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&amp;nbsp; Problem by using a new installation of Eclipse 3.5.1.&lt;br /&gt;&amp;nbsp; I think the problem is that the Eclipse Update Manager cannot find the jar&lt;br /&gt;&amp;nbsp; for the Deployment Descriptor Editor in the update site(s).&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; To avoid this problem, Apache UIMA should provide an "archived" update site&lt;br /&gt;&amp;nbsp; file so that the user can download and "locally" install the plug-ins&lt;br /&gt;&amp;nbsp; instead of completely depend on the mirror/download sites.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; Here is an alternative way to install the Deployment Descriptor Editor:&lt;br /&gt;&amp;nbsp; 1. Download the UIMA-AS&lt;br /&gt;&amp;nbsp; http://www.bizdirusa.com/mirrors/apache/incubator/uima/binaries/uima-as-2.2.2-incubating/uima-as-2.2.2-incubating-bin.zip&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; 2. Unzip and copy the following 2 jars to your Eclipse's "dropins" directory&lt;br /&gt;&amp;nbsp; (like for example eclipse\dropins):&lt;br /&gt;&amp;nbsp;&amp;nbsp; - eclipsePlugins/org.apache.uima.deployeditor_2.2.2.incubating.jar&lt;br /&gt;&amp;nbsp;&amp;nbsp; - eclipsePlugins/org.apache.uima.runtime-deployeditor_2.2.2.incubating.jar&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; 3. Restart your Eclipse with -clean option.&lt;/i&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;2. Eclipse Galileo 3.5.1 et Apache UIMA &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;2.3.0-incubating&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Même démarche sauf que cette fois-ci Maven ne requiert pas d'installer au préalable d'autres plugins&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A SUIVRE... &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Déclarer la variable UIMA_HOME au sein d'Eclipse&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Importer le projet UIMA_HOME/examples&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Créer un projet d'Annotator Engine au sein d'Eclipse&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-2600670291812234448?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/2600670291812234448/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/comment-installer-eclipse-galileo-351.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2600670291812234448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2600670291812234448'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/comment-installer-eclipse-galileo-351.html' title='Installer Eclipse et ses plugins pour UIMA'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-657694256235607591</id><published>2009-12-12T10:15:00.000-08:00</published><updated>2010-03-26T07:30:29.465-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><title type='text'>Démarrer avec UIMA</title><content type='html'>&lt;b&gt;Désormais une page statique dédiée a été créée &lt;a href="http://enicolashernandez.blogspot.com/p/uima.html"&gt;http://enicolashernandez.blogspot.com/p/uima.html&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-657694256235607591?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/657694256235607591/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/demarrer-avec-uima.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/657694256235607591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/657694256235607591'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2009/12/demarrer-avec-uima.html' title='Démarrer avec UIMA'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-7382154845967299425</id><published>2009-11-03T14:05:00.000-08:00</published><updated>2010-03-26T06:58:56.543-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uima'/><category scheme='http://www.blogger.com/atom/ns#' term='u-compare'/><title type='text'>Lancer U-compare</title><content type='html'>Après une ou deux tentatives infructueuses ces dernières semaines pour lancer &lt;a href="http://u-compare.org/"&gt;U-Compare&lt;/a&gt;, j'ai finalement réussi à le lancer.&lt;br /&gt;Ce qui a fait la différence : &lt;span style="font-weight: bold;"&gt;un java sun jdk mis à jour&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Mon système&lt;/span&gt;&lt;span style="font-size: 78%;"&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;$ cat /proc/version&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new; font-size: xx-small;"&gt; Linux version 2.6.27-15-generic (buildd@vernadsky) (gcc version 4.3.2 (Ubuntu 4.3.2-1ubuntu11) ) #1 SMP Tue Oct 20 06:52:09 UTC 2009&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new; font-size: xx-small;"&gt; $ cat /etc/issue&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new; font-size: xx-small;"&gt; Ubuntu 8.10 \n \l&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Un java sdk 1.6.0 ne suffisait pas mais avec un &lt;span style="font-style: italic;"&gt; java sdk 1.6.0_17 &lt;/span&gt;s'est passé (avec un 1.6.0_16 s'est passé aussi)&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: courier new;"&gt;$ java -version&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;java version "1.6.0_17"&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;Java(TM) SE Runtime Environment (build 1.6.0_17-b04)&lt;/span&gt; &lt;span style="font-family: courier new;"&gt;Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;a href="http://enicolashernandez.blogspot.com/2009/11/installer-java-sous-ubuntu.html"&gt;Pour installer ou changer de Java sous Ubuntu.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Finalement pour lancer&lt;/span&gt;, j'ai suivi l'option avec téléchargement de la classe &lt;a href="http://u-compare.org/downloads/UCLoader.class"&gt;UCLoader.class&lt;/a&gt;, puis exécution en ligne de commande de &lt;span style="font-size: 78%;"&gt; &lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="font-size: xx-small;"&gt; $ java -Xms700m -Xmx1000m UCLoader&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Au premier lancement, un répertoire d'installation est créé (avec entre autres la récupération d'un certain nombre de bibliothèques)&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new; font-size: 78%;"&gt;&lt;span style="font-size: xx-small;"&gt;$ ls ${HOME}/.U-Compare/&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Le &lt;span style="font-style: italic;"&gt;Type System de U-Compare&lt;/span&gt; est disponible dans &lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;jars/u-compare.jar&lt;/span&gt;&lt;/span&gt; au chemin suivant &lt;span style="font-family: courier new; font-size: 78%;"&gt;org/u_compare/U_compareTypeSystem.xml &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-7382154845967299425?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/7382154845967299425/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2009/11/lancement-de-u-compare.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7382154845967299425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/7382154845967299425'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2009/11/lancement-de-u-compare.html' title='Lancer U-compare'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-318866257749890342.post-2602801582127382866</id><published>2009-11-02T15:13:00.000-08:00</published><updated>2010-10-22T22:11:57.059-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Installer Java sous Ubuntu</title><content type='html'>Pour &lt;a href="http://doc.ubuntu-fr.org/java" style="font-style: italic;"&gt;mettre à jour son java&lt;/a&gt; (l'installer et changer celui par défaut) :&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;sudo aptitude install sun-java6-jdk&lt;br /&gt;sudo update-alternatives --config java&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;On peut aussi l'&lt;span style="font-style: italic;"&gt;installer à la mano&lt;/span&gt; en le récupérant sur &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;le site de sun &lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;chmod a+x jdk-6u17-linux-i586.bin &lt;br /&gt;./jdk-6u17-linux-i586.bin&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/318866257749890342-2602801582127382866?l=enicolashernandez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://enicolashernandez.blogspot.com/feeds/2602801582127382866/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://enicolashernandez.blogspot.com/2009/11/installer-java-sous-ubuntu.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2602801582127382866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/318866257749890342/posts/default/2602801582127382866'/><link rel='alternate' type='text/html' href='http://enicolashernandez.blogspot.com/2009/11/installer-java-sous-ubuntu.html' title='Installer Java sous Ubuntu'/><author><name>Nicolas Hernandez</name><uri>http://www.blogger.com/profile/11685903401452574118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
