Доступ к объединенным аннотациям UIMA Ruta в Java
У меня проблема с доступом к объединенным аннотациям рута.
Мои аннотации основаны на предыдущем модуле, который генерирует 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 Editor, и все отлично работает. Но после этого я хочу получить доступ к аннотации "encasing" и добавить все "вложенные" аннотации в массив, что я просто не могу понять, как. Я довольно потерян в документации и надеюсь, что кто-то там уже сделал это и может помочь мне в этом деле.
Опять же: я использую Java (1.8).
Большое спасибо!
Изменить: Дополнительная информация
- Корпусная аннотация: Med
- Вложенные аннотации: имя, доза, схема
Пример текста:
Paracetamol 40mg daily
Аннотации сделаны (с помощью предыдущих моделей / модулей, см. Выше):
Paracetamol 40mg daily
Name------- Dose Scheme
Теперь я хочу представить аннотацию оболочки "Med", которая, в случае наличия всех трех вложенных аннотаций, будет включать их.
Тип "Med" имеет каждый из вложенных типов в качестве доступной функции.
Теперь я хочу получить доступ сначала к аннотациям Med (что для меня здесь не проблема), а затем к каждой вложенной аннотации (о которой я не знаю, как это сделать - пока). Я все еще просматриваю документацию UIMA, чтобы найти подсказку.
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