UIMA Ruta Создание аннотации с элементами, разделенными некоторым текстом
У меня есть текст с аннотациями, созданными следующим образом:
wewf.werwfwef. wewfwefwwew. wefewefwff
AnnotationA
asdfawece aefae eafewfaefa aefafe ceaewfae
adfcaecae acaeaet aegaegageg caeacdaefa
AnnotationB
sadaeceaee aef aewfaegg rresf ceeaefaeaeaf
adfcaecae acaeaet aegaegageg caeacdaefa
AnnotationA
adfcaecae acaeaet aegaegageg caeacdaefa
adfcaecae acaeaet aegaegageg caeacdaefa
AnnotationB
adfcaecae acaeaet aegaegageg caeacdaefa
adfcaecae acaeaet aegaegageg caeacdaefa
Я хочу создать аннотацию с AnnotationA и его ближайшей AnnotationB в качестве функций. Как мне это выразить в рута?
Я пробовал следующий неправильный способ:
DECLARE Annotation TargetAnnotation (AnnotationA ana, AnnotationB anb);
Document {-> CREATE(TargetAnnotation, "ana" = AnnotationA, "anb" = AnnotationB)};
Правило распространяется на весь документ. То, что я просто хочу, это аннотация с AnnotationA и его ближайшей AnnotationB в качестве функции. Большое спасибо за любой ответ.
1 ответ
Есть несколько способов указать это в UIMA Ruta, и они в основном зависят от смещения, которое должно получить созданное TargetAnnotation. Действие CREATE использует диапазон, соответствующий элементу правила, чтобы определить значения для объектов.
Если смещения созданной аннотации на самом деле не имеют значения, то вы можете просто использовать диапазон, объединяющий обе аннотации AnnotationA и AnnotationB:
(AnnotationA # AnnotationB){-> CREATE(TargetAnnotation, "ana" = AnnotationA, "anb" = AnnotationB)};
Имейте в виду, что это правило вводит последовательную зависимость между двумя аннотациями. Вы также можете указать правила, которые не имеют значения, но они, вероятно, будут возвращать слишком много совпадений. Это зависит от того, чего вы хотите достичь.
Если смещение созданной аннотации должно равняться одной из предоставленных аннотаций, например, AnnotationA, вам следует использовать GATHER вместо CREATE. GATHER позволяет указать индекс элемента правила, соответствие которого должно быть назначено объекту.
AnnotationA{-> GATHER(TargetAnnotation, "ana" = 1, "anb" = 3)} # AnnotationB;
(Я разработчик UIMA Рута)