2016-11-14 5 views
2

Я использую RUTA и написал много разных правил для извлечения одного и того же объекта. Например, я выберу «фабрику туалетной бумаги». В настоящий момент моими правилами станут завод туалетной бумаги, бумажный завод и завод. Но меня интересует только самый длинный матч.UIMA Ruta Только комментировать длинное совпадение

Я создал минимальный пример:

DECLARE Test; 
(CW CW) {-> CREATE(Test)}; 
(CW CW CW) {-> CREATE(Test)}; 

И мой тест-струнный:

lower lower Upper Upper Upper lower Upper 

правило выше будет соответствовать верхам верхнего и Верхних Верхних Верхней. Но в этом случае меня интересует только результат последнего правила.

Можно ли убрать короткие спички?

ответ

1

Существует несколько вариантов предотвращения дополнительных совпадений и удаления добавленных аннотаций.

Вы можете удалить дополнительные аннотации с чем-то вроде:

Test->{ANY t:@Test{-> UNMARK(t)};t:@Test{-> UNMARK(t)} ANY;}; 

Этого правила проверяет все Тестовые аннотации и применяет два правила в этом промежутке. Каждое правило ищет аннотацию Test, которой предшествует или следует что-либо, а это означает, что она меньше первой. Если это согласовано, аннотация удаляется.

Существует также условие PARTOFNEQ, но это довольно медленно:

Test{PARTOFNEQ(Test)->UNMARK(Test)}; 

Если вы хотите, чтобы избежать создания аннотаций, вам необходимо изменить порядок правил и применять более специфичный один первый. Вы можете изменить процесс сопоставления различными способами, например, с условием PARTOF, действием MARKONCE или установкой GREEDYANCHORING.

Пример:

(CW{-PARTOF(Test)} CW CW) {-> CREATE(Test)}; 
(CW{-PARTOF(Test)} CW) {-> CREATE(Test)}; 

В вас пример вы могли бы, конечно, сделать что-то вроде:

CW[2,3]{-PARTOF(Test)-> Test}; 

, но это, вероятно, не идея этого вопроса.

ОТКАЗ: Я разработчик UIMA Ruta

+0

Спасибо :) - Есть ли специальная РУТА версия, необходимая для первого решения? Я использую 2.3.1 Второе решение работает, но, как вы сказали, оно медленное. – PascalTurbo

+0

Для первого решения требуется UIMA Ruta 2.5.0. Вы можете переписать это правило также для 2.3.1, например, используя БЛОК и тип в UNMARK –

Смежные вопросы