Depuis plusieurs semaines je constate des plantages réguliers de Tomcat avec pour seule trace dans les logs l'abscon message :
java.lang.OutOfMemoryError: PermGen space
19mai
11:56 - Par Fabien Poulard - Geek & Technique
Depuis plusieurs semaines je constate des plantages réguliers de Tomcat avec pour seule trace dans les logs l'abscon message :
java.lang.OutOfMemoryError: PermGen space
20sept.
00:08 - Par Fabien Poulard - Sciences & Recherche
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.
08sept.
00:10 - Par Fabien Poulard - Sciences & Recherche - 12 commentaires
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.
29juin
15:14 - Par Fabien Poulard - Geek & Technique - 2 commentaires
Depuis ma dernière mise-à-jour dans Debian Squeeze, je me suis aperçu qu'Eclipse (ou bien n'importe quelle application Java) n'était plus en mesure de se connecter au réseau. L'application retourne inéluctablement le message "Le réseau n'est pas accessible", quand bien même toutes les autres applications se connectent sans problème.
Apparemment ce comportement est dû à l'utilisation exclusive d'IPv6 dans Java (JVM Sun ou OpenJDK indifféremment)... ce qui sur les réseaux toujours en IPv4 ne mène à rien, et correspond effectivement à un réseau inaccessible.
La solution consiste à passer l'option -Djava.net.preferIPv4Stack=true à la JVM à son lancement. Pour Eclipse, il suffit d'ajouter cette ligne au fichier eclipse.ini (/etc/eclipse.ini) pour Debian.
La discussion concernant ce bug chez Debian : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560142
16mar.
15:45 - Par Fabien Poulard - Sciences & Recherche
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).
21fév.
17:56 - Par Fabien Poulard - Sciences & Recherche
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.
02fév.
14:05 - Par Fabien Poulard - Sciences & Recherche
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.
30sept.
15:13 - Par Fabien Poulard - Sciences & Recherche
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.
24sept.
10:54 - Par Fabien Poulard - Geek & Technique
La chose que je préfère dans le paradigme objet, c'est la capacité d'introspection (apparemment le terme réflexion est plus apprécié en français). Dans ce billet je présente une astuce Java que j'avais déjà utilisé dans ce billet pour instancier une classe dont on ne connaît que le nom.
23sept.
01:53 - Par Fabien Poulard - Sciences & Recherche
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 !
09sept.
10:23 - Par Fabien Poulard - Sciences & Recherche
La racinisation (ou lexèmisation) est l'opération consistant à retrouver le radical d'un mot à partir de sa forme déclinée. Ceci passe souvent par le remplacement des suffixes ou des préfixes.
L'algorithme le plus connu pour la racinisation est celui de M. Porter. Snowball est une implémentation de racinisateur pour plusieurs langues dont le français. Je vais me baser sur la librairie java libstemmer de Snowball, placée sous licence BSD, pour développer un composant UIMA de racinisation.
07mai
18:13 - Par Fabien Poulard - Geek & Technique
UIMA (Unstructured Information Management Architecture) est une architecture pour la gestion des données non structurées en passe de devenir un standard. J'utilise l'implémentation proposée par Apache dans le cadre de ma thèse sur la détection automatique de reprise pour tous mes traitements sur corpus.
Je publie dans cet article une petite astuce bien pratique qui permet de manipuler des annotations d'un type qui n'est pas connu a priori mais passé en paramètre d'un composant.