среда, 6 ноября 2013 г.

Apache UIMA, понять и разобраться

Analysis Engine (AE) - программа, которая анализирует артефакты (документы).

AE состоит из строительных блоков, называемых аннотаторами.

Аннотатор (Annotator) - компонент, который содержит анализирующую логику.

Если AE содержит 1 аннотатор - Primitive AE
Если АЕ содержит несколько аннотаторов  - Aggregate AE

Артефакт - это неструктурированная вещь, которая может анализироваться аннотатором, например текстовый документ, видео, изображение.

Аннотаторы на выходе дают  результат в виде типизированных структур свойств (Feature Structures). Feature Structures - это структуры данных, имеющие тип и множество пар (атрибут, значение).

Аннотация (Feature Name || TypeName) - это определенный тип Feature Structures, который присоединяется к части анализируемого документа (выходной тип данных).

Т.е. Feature Structures это совокупность всех аннотаций, которые применит анализатор или совокупность типов выходных данных.

Common Analysis Structure (CAS) - это все структуры свойств, включая аннотации.

Необходимо выполнить несколько действий, чтобы написать и протестировать простой UIMA аннотатор:
  1. Определить CAS типы, которые аннотатор будет использовать.
  2. Сгенерировать Java-классы для этих типов.
  3. Написать код аннотатора.
  4. Создать AE - дескриптор.
  5. Протестировать аннотатор.
Немного о типах данных в UIMA
UIMA определяет примитивные типы данных такие как Boolean, Byte, Short, Integer, Long, Float, and Double, а также массивы примитивных типов. В иерархии системы типов в UIMA самым главным является TOP (как аналог Object в java). А также есть FSArray это массив Feature Structures и Annotation.

Во встроенном типе Annotation 3 свойства (Feature): 
  1. begin - смещение в тексте относительно начала аннотации
  2. end - смещение в тексте относительно конца аннотации
  3. sofa - это содержимое документа между begin и end
Написание аннотатора
Все аннотаторы должны реализовать три метода интерфейса AnalysisComponent:
  1. initialize - вызывается фреймворком единожды, когда создается экземпляр аннотатора
  2. process - вызывается на каждый обрабатываемый элемент
  3. destroy - вызывается, после того как работа с аннотатором завершена
Apache UIMA гарантирует, что на потокобезопасность при вызове аннотатора, а именно,  один экземпляр аннотатора на один поток. 

Комментариев нет:

Отправить комментарий