Blog d'un jeune (chercheur) entrepreneur en TAL

Aller au contenu | Aller au menu | Aller à la recherche

09janv.

Premiers pas avec UIMA AS

UIMA offre un cadre de développement structurant pour la mise au point de chaînes de traitement de l'information non structurée. S'il permet simplement de déployer des chaînes complexes et tirer parti de la puissance de calcul des processeurs multicœurs, l'ordonnanceur -- le CPM -- a plusieurs limites :

  • Il n'est pas aisé de déployer une chaîne sur plusieurs machines ;
  • L'affectation de ressources se fait au niveau de la chaîne (CPE) et non au niveau des composants alors que le coût d'exécution de ces derniers est fortement variable ;
  • Les chaînes ne peuvent pas directement traiter un flux continu de données.

Le développement d'UIMA AS cherche à répondre à ces limitations.

Lire la suite

05janv.

Installation des plugins UIMA-AS sous Eclipse Indigo

Au sein de Dictanova, nous avons des besoins importants en termes de distribution de la charge de calcul. Le CPM classique d'UIMA (l'organe chargé de l'ordonnancement des traitements) ne répond pas suffisamment à nos besoins et nous nous tournons donc vers UIMA AS (pour UIMA Asynchronous Scaleout) qui offre des possibilités de montées en charge beaucoup plus importantes en permettant notamment de déployer les Analysis Engine dans plusieurs JVM et sur plusieurs machines.

Je décris dans ce billet la procédure que j'ai mise en oeuvre pour installer les plugins UIMA AS sous Eclipse Indigo.

Lire la suite

05juin

Copier une annotation d'une vue à une autre dans UIMA

Lorsque l'on travaille avec plusieurs vues au sein d'un même CAS, on se retrouve rapidement confronté au besoin de recopier certaines annotations d'une vue vers une autre.

Lire la suite

20sept.

UIMA insights : le doigt dans le workflow

Les opérations logicielles en traitement automatique des langues sont souvent très importantes, très coûteuse, mais également parallélisables. C'est l'un des avantages indéniables d'UIMA, par le choix d'une architecture par composants, de permettre de paralléliser les traitements assez simplement.

La programmation d'un composant UIMA doit donc se faire avec en tête l'idée qu'il pourrait être déployé pour un traitement parallélisé. Lorsque comme moi on n'a pas cette habitude, on se heurte rapidement à des petits obstacles techniques. Dans le cas présent, il s'agissait de développer un composant qui exportait les résultats d'un calcul dans un fichier CSV.

Lire la suite

08sept.

Un rapide tokeniseur en mots pour le français

Parmi les addons distribués avec UIMA, le composant WhitespaceTokenizer permet de découper les textes en "mots" en s'appuyant sur les espaces et autres blancs. Malheureusement si cette approche est acceptable pour l'anglais, elle est beaucoup plus problématique pour le français. Le découpage en mots n'est pas une tâche forcément évidente et qui nécessiterait un réel travail. Partagé entre la nécessité d'une tokenisation correcte et le peu de temps qui me reste pour terminer ma thèse, voici une proposition suffisamment acceptable pour mes besoins.

Lire la suite

17juil.

Du bon usage des ressources dans UIMA

Les ressources sont un aspect de UIMA que j'ai peu abordé et que j'ai très peu utilisé, sauf récemment lorsque l'on a entraîné un modèle français HMM pour le HMM Tagger (il faut que j'écrive un billet à ce sujet d'ailleurs). Pourtant les ressources, et leur rôle, sont assez mal compris au sein d'UIMA.

Lire la suite

01avr.

Parcours des annotations couvertes par une autre annotation

Lorsque l'on travaille avec Apache UIMA et que l'on ajoute un nombre important d'annotations, il arrive un moment où l'on va vouloir filtrer certaines de ces annotations en fonction d'autres. Ainsi, assez couramment on éprouve le besoin de devoir récupérer des annotations qui couvrent la même zone de texte qu'une autre. Par exemple :

  • récupérer les mots contenus dans une phrases ;
  • récupérer les paragraphes dans un document ;

Il y a au moins deux approches dans Apache UIMA qui permettent de répondre à ce besoin : le subiterator et le FSMatchConstraint.

Lire la suite

16mar.

Tests unitaires pour UIMA avec UUTUC

La qualité du code développé dans le cadre des activités de recherche scientifique n'est pas toujours aussi bon qu'on pourrait l'espérer. Outre la nécessité (évidente à mes yeux) d'ouvrir le codes des activités scientifiques financées par l'État et les collectivités territoriales, il est également nécessaire de suivre de bonnes pratiques de programmation. L'écriture de tests unitaires et leur exécution régulière est une de ces bonnes pratiques.

Je présente dans ce billet un cas d'utilisation de la bibliothèque UUTUC, présentée lors du Workshop sur l'Ingénierie Logiciel, les Tests et l'Assurance Qualité pour le Traitement des Langues Naturelles (SETQA-NLP 2009), pour tester l'implémentation d'une bibliothèque développée et utilisée dans le cadre de ma thèse (tddts-uima-shingling).

Lire la suite

06mar.

Utilisation du CAS Editor

Il y a quelques temps j'avais écrit une documentation en interne dans mon laboratoire sur l'utilisation du ''CAS Editor''. À l'époque c'était assez éprouvant car ce dernier se présentait sous la forme d'une application RCP Eclipse.

Depuis la version 2.3.0, le CAS Editor a été intégré sous la forme d'un plugin Eclipse. L'occasion de remettre la doc au goût du jour et de la partager avec le reste du monde.

Lire la suite

04mar.

Release du collection reader pour Wikipedia v.0.4

Wikipedia est une incroyable source d’information, de données et plus généralement d’actes langagiers (utilisation du langage). C'est une ressource sans équivalent pour les chercheurs en traitement automatique des langues (TAL).

Le MediaWiki UIMA Loader est un composant UIMA, de type collection reader, permettant de tirer parti de Wikipédia pour la construction de corpus. La version 0.4 est la première release officiellement annoncée du composant.

Lire la suite

21fév.

UIMA & Wikipédia (5) : Gestion du projet avec Maven

La création de composants UIMA permettant d'accéder et tirer parti de Wikipédia offrirait de nouvelles perspectives au traitement des langues en offrant un accès aisé à cette formidable ressource que représente l'encyclopédie libre. Je compte m'atteler à la création de tels composants et vais tâcher de publier plusieurs billets décrivant ma démarche en cours.

Voici le cinquième billet, plus orienté technique de développement, qui discute de la gestion du projet avec Maven, permettant notamment de gérer automatiquement les dépendances à MWDumper et à Wikimodel.

Lire la suite

14fév.

UIMA & Wikipédia (4) : Analyse de la syntaxe MediaWiki

Wikipedia est une incroyable source d'information, de données et plus généralement d'actes langagiers (utilisation du langage). Ce dernier point est très important pour nous autres chercheurs en traitement automatique des langues. En effet, nous avons besoin d'observer de très nombreux exemples d'utilisation du langage, que ce soit de manière automatique ou manuelle. Pour ce faire, nous compilons de vastes exemples d'utilisation du langage sous forme de corpus.

La création de composants UIMA permettant d'accéder et tirer parti de Wikipédia offrirait de nouvelles perspectives au traitement des langues en offrant un accès aisé à cette formidable ressource que représente l'encyclopédie libre. Je compte m'atteler à la création de tels composants et vais tâcher de publier plusieurs billets décrivant ma démarche en cours.

Voici le quatrième billet qui discute de l'analyse syntaxique du contenu des pages wiki pour la suppression des balises Wiki.

Lire la suite

12fév.

UIMA & Wikipédia (3) : Filtrage des données à charger

Wikipedia est une incroyable source d'information, de données et plus généralement d'actes langagiers (utilisation du langage). Ce dernier point est très important pour nous autres chercheurs en traitement automatique des langues. En effet, nous avons besoin d'observer de très nombreux exemples d'utilisation du langage, que ce soit de manière automatique ou manuelle. Pour ce faire, nous compilons de vastes exemples d'utilisation du langage sous forme de corpus.

La création de composants UIMA permettant d'accéder et tirer parti de Wikipédia offrirait de nouvelles perspectives au traitement des langues en offrant un accès aisé à cette formidable ressource que représente l'encyclopédie libre. Je compte m'atteler à la création de tels composants et vais tâcher de publier plusieurs billets décrivant ma démarche en cours.

Voici le troisième billet qui discute du filtrage des données à charger : articles, révision, ...

Lire la suite

02fév.

UIMA & Wikipédia (2) : Chargement d'un dump Wikipedia

Wikipedia est une incroyable source d'information, de données et plus généralement d'actes langagiers (utilisation du langage). Ce dernier point est très important pour nous autres chercheurs en traitement automatique des langues. En effet, nous avons besoin d'observer de très nombreux exemples d'utilisation du langage, que ce soit de manière automatique ou manuelle. Pour ce faire, nous compilons de vastes exemples d'utilisation du langage sous forme de corpus.

La création de composants UIMA permettant d'accéder et tirer parti de Wikipédia offrirait de nouvelles perspectives au traitement des langues en offrant un accès aisé à cette formidable ressource que représente l'encyclopédie libre. Je compte m'atteler à la création de tels composants et vais tâcher de publier plusieurs billets décrivant ma démarche en cours.

Voici le second billet qui discute du chargement d'un dump XML de l'encyclopédie libre et la distribution du contenu sous forme de CAS.

Lire la suite

01fév.

UIMA & Wikipédia (1) : Proposition de Type System

Wikipedia est une incroyable source d'information, de données et plus généralement d'actes langagiers (utilisation du langage). Ce dernier point est très important pour nous autres chercheurs en traitement automatique des langues. En effet, nous avons besoin d'observer de très nombreux exemples d'utilisation du langage, que ce soit de manière automatique ou manuelle. Pour ce faire, nous compilons de vastes exemples d'utilisation du langage sous forme de corpus.

La création de composants UIMA permettant d'accéder et tirer parti de Wikipédia offrirait de nouvelles perspectives au traitement des langues en offrant un accès aisé à cette formidable ressource que représente l'encyclopédie libre. Je compte m'atteler à la création de tels composants et vais tâcher de publier plusieurs billets décrivant ma démarche en cours.

Voici le premier billet qui discute de la création d'un Type System approprié pour représenter les pages de Wikipedia.

Lire la suite

29janv.

Sortie d'Apache UIMA 2.3

L'annonce est parue hier sur les listes concernées, la nouvelle version du framework Apache UIMA (Unstructured Information Management Architecture) est sortie, estampillée 2.3 !

Lire la suite

09nov.

Construction de la communauté UIMA-Fr

Depuis le début de ma thèse, nous (un sous-ensemble dynamique de mon équipe de recherche) avons mis l'accent sur la nécessité de développer nos outils autour d'une plateforme unifiée afin que chacun tire parti du travail des autres. Nous avons alors proposé la solution du framework Apache UIMA, proposé des formations autour de ce dernier et entamé une migration des outils existant. L'initiative est aujourd'hui un succès: nous sommes monté en compétence sur UIMA et les nouveaux doctorants travaillent tous autour de cette plateforme !

Les bénéfices d'une plateforme unifiée au sein d'une équipe seraient à notre avis amplifiés si cette initiative était étendue à toute la communauté francophone ! Chacun pourrait alors profiter directement des développements et ressources développées par les autres équipes. C'est sur la base de cette hypothèse que nous prenons l'initiative d'initier la construction d'une communauté UIMA francophone.

Lire la suite

30sept.

UIMA : Comment utiliser un type dont un attribut est un tableau de types ?

L'un des avantages indéniable de UIMA est de pouvoir définir son propre TypeSystem, ie l'ensemble des éléments que l'on va manipuler. De plus, ce TypeSystem est un arbre d'objets, ce qui permet de construire des structures de données enchevêtrées complexes.

Cet article illustre la construction et l'utilisation d'un type dont un attribut est un tableau d'un autre type.

Lire la suite

23sept.

Compilation de ressources autour d'Apache UIMA

Un court billet qui compile différents pointeurs web concernant Apache UIMA.

Lire la suite

23sept.

Nettoyage et améliorations du cpeGui

Depuis le temps que je peste après le manque d'ergonomie du cpeGui (org.apache.uima.tools.cpm.CpmFrame pour les intimes), j'ai voulu profiter d'un peu de temps durant une surveillance de TP pour jeter un coup d'œil au code et essayer d'obtenir quelque chose de plus intuitif. J'ai pu profiter des premiers pointeurs posés par mon collègue Matthieu pour m'introduire dans les méandre de la bête !

Au final j'ai à peu près tout cassé pour obtenir quelque chose d'assez proche de l'original en terme d'ergonomie... mais qui ne fonctionne plus !

Lire la suite

- page 1 de 2