Ce framework implémente la spécification UIMA proposée par l'OASIS depuis 2009 qui a pour but de fournir un cadre de travail pour extraire des informations d'un document non structuré pour les présenter dans une structure bien définie.
Le fonctionnement général consiste en un ensemble de composants que l'on intègre dans un workflow pour extraire une série d'éléments d'un document et ce en vue d'un traitement final comme de l'indexation.
Il y a principalement 6 types de composants dans UIMA :
- Les CAS/JCAS (Common Analysis Structure / Java Common Analysis Structure ): ces éléments sont propagés d'un composant à l'autre, ils sont en quelque sort le contexte de traitement d'un document. Ils contiennent d'ailleurs une référence à ce document.
- Les Analysis Engines (AE) : ces composants analysent l'artefact pour en extraire/déduire des informations (ils peuvent produire des CAS)
- Les annotators : éléments de base des AE, ils contiennent la logique d'analyse pour créer les métadonnées. Un AE peut contenir un à plusieurs Annotators, on parle alors de "Primitive Analysis Engine" ou de "Aggregate Analysis Engine".
- Les collections reader qui lisent le/les documents à traiter pour fournir un CAS initiale aux AE.
- Les CAS consumers : ces éléments traitent en sortie du workflow les CAS produit par l'application. (il ne peuvent pas produire de CAS)
- Le Collection Processing Manager (CPM) qui gére un peu tout ce petit monde.
Chacun de ces éléments est décrit dans un fichier XML dans lequel il est précisé :
- les entrées/sorties du composant
- les paramètres de configuration
- le workflow entre composant (exemple : quel est l'ordre de passage des Annotators dans un aggregate analysis engine)
- ...
![]() |
| High-Level UIMA Component Architecture (source) |
Il existe trois modes de déploiement.
- Intégrated : tous les éléments sont dans une même JVM
- managed : le CPM est dans une JVM et les AE sont déployés dans un autre JVM mais présent sur la même machine.
- non-manager : même principe que le mode managed sauf que les AE sont déployés sur des machines distantes. les processus communiquent entre eux via un protocole spécifique appelé Vinci. Des AE deployés à distance peuvent également être interrogé via SOAP. Pour finir, un add-on permet de faire communiquer les différents composant via des file JMS. (Apache UIMA AS)
Voila pour aujourd'hui.
Lorsque j'aurai pratiqué un peu plus, je posterai des informations complémentaires et des exemples.
Je pense utiliser ce framework pour développer un projet de peuplement d'ontologie.... wait and see...

Aucun commentaire:
Enregistrer un commentaire