dimanche 3 octobre 2010

UIMA Type mapping

Lorsque l'on souhaite développer un composant à l'aide de l'architecture Apache UIMA, 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 système de types. D'un point de vue conception de logiciel, cela permet notamment de réaliser un contrôle syntaxique des entrées et des sorties des composants.

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 liberté de définition de systèmes de types peut donc conduire à des problèmes d'interopérabilité entre des composants manipulant des informations conceptuellement identiques mais étant en pratique définies par des modélisations distinctes.
Par exemple, wordmot voire token sont des noms différents qui peuvent éventuellement être utilisés pour désigner le même type d'information.

Le uima-type-mapper est un composant qui offre un moyen de conversion d'annotations définies par un système de type donné (appelé type source) vers des annotations définies par un autre système de types (appelés types cibles). 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.

Les conversions sont déclarées à l'aide de règles qui spécifient pour des types source donnés de réaliser une opération de création d'une ou plusieurs annotations de types cible aux offsets des annotations de type source rencontrées. Il est possible de spécifier des contraintes sur les caractéristiques de annotations de type source. La cohérence sémantique des types à convertir est laissée libre à l'utilisateur.
En pratique, l'implémentation repose sur
  • W3C XPath comme langage déclaratif d'expression des contraintes sur la structure des types des annotations source
  • Apache JXPath comme moteur qui implémente le traitement des règles
  • java.lang.reflect API pour rendre générique le composant en autorisant la désignation de tout type héritant de uima.tcas.Annotation pour faire l'objet de conversion
La fonction de spécification de contraintes sur les annotations à convertir peut conduire à utiliser ce composant comme un composant d'analyse à base de règles des structures sémantiques UIMA. En effet, le composant peut être utilisé pour réaliser de la reconnaissance de motifs d'annotations au sein d'une structure d'annotations UIMA 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.

Si vous utilisez ce travail dans vos travaux de recherche, merci de citer l'article suivant 


Nicolas Hernandez, Fabien Poulard, Matthieu Vernier, Jérôme Rocheteau, "Building a French-speaking community around UIMA, gathering research, education and industrial partners, mainly in Natural Language Processing and Speech Recognizing domains", LREC 2010 Workshop 'New Challenges for NLP Frameworks', La Valleta : Malta 
Le code source du composant disponible sur http://code.google.com/p/uima-type-mapper/ 

Aucun commentaire:

Enregistrer un commentaire