Доступ к комбинированным аннотациям UIMA Ruta в Java

У меня проблема с доступом к комбинированным аннотациям Ruta.

Мои аннотации основаны на предыдущем модуле, который генерирует NormalizedNamedEnitites (NNE) и помечает их в соответствии с набором правил, который отлично работает:

NormalizedNamedEntity{REGEXP(NormalizedNamedEntity.concept.identifier,"XXX") -> MARK(XXX)};
NormalizedNamedEntity{REGEXP(NormalizedNamedEntity.concept.identifier,"YYY") -> MARK(YYY)};

Затем я продолжаю объединять эти два в новой аннотации:

(XXX){-> CREATE(CCC, "YYY" = YYY, "XXX" = XXX)};

Что тоже очень хорошо работает.

В моей среде IDE (Eclipse) я могу получить доступ к этим новым правилам в представлении редактора Ruta, и все отлично работает. Но после этого я хочу получить доступ к «охватывающей» аннотации и добавить все «вложенные» аннотации в массив, но я просто не могу понять, как это сделать. Я довольно запутался в документации и надеюсь, что кто-то уже это сделал и может помочь мне в этом случае.

Опять же: я использую Java (1.8).

Большое спасибо!

Изменить: дополнительная информация

  • Заключительная аннотация: Med
  • Вложенные аннотации: Имя, Доза, Схема

Образец текста:

Paracetamol 40mg daily

Сделаны аннотации (с помощью предыдущих Моделей/Модулей, см. выше):

Paracetamol 40mg daily
Name------- Dose Scheme

Теперь я хочу представить вложенную аннотацию под названием «Med», которая, в случае наличия всех трех вложенных аннотаций, будет их заключать.

Тип «Med» имеет каждый из вложенных типов как определенную доступную функцию.

Теперь я хочу сначала получить доступ к аннотациям Med (что для меня здесь не проблема), а затем к каждой вложенной аннотации (на которой я пока не знаю, как это сделать). Я все еще копаюсь в документации UIMA, чтобы найти подсказку.


person K. K.    schedule 04.07.2018    source источник
comment
Не могли бы вы дополнить свой вопрос информацией о том, какая аннотация заключена, а какая вложена, как определяются типы (например, диапазоны функций) и в каком фрагменте текста должен работать пример. Как правило, вы можете просто сопоставить тип заключенной аннотации и установить его функции с помощью выражения типа, если диапазон функций является FSArray.   -  person Peter Kluegl    schedule 06.07.2018
comment
@PeterKluegl: добавлено больше информации. Я добавлю больше, как только получу определения TypeSystem.   -  person K. K.    schedule 07.07.2018


Ответы (1)


Существует множество способов доступа к вложенным аннотациям. В настоящее время я предпочитаю что-то вроде следующего:

DECLARE Name, Dose, Scheme;

// some mocked annotations
"Paracetamol" -> Name;
"40mg" -> Dose;
"daily" -> Scheme;

DECLARE Med (Name name, Dose dose, Scheme scheme);

(n:Name d:Dose s:Scheme){-> CREATE(Med, "name" = n, "dose" = d, "scheme" = s)};

DECLARE Test1, Test2, Test3;

Med.name{-> Test1}; 

m:Med ->{
    m.name{-> Test1};
    m.dose{-> Test2};
    m.scheme{-> Test3};
    };


FOREACH(med) Med{}{
    med.name{-> Test1};
    med.dose{-> Test2};
    med.scheme{-> Test3};
}

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я разработчик UIMA Ruta

person Peter Kluegl    schedule 09.07.2018