Использование UIMA Ruta: Как мне аннотировать первый токен текста и использовать эту аннотацию дальше? - PullRequest
1 голос
/ 23 мая 2019

Я хотел бы аннотировать первый токен текста и использовать эту аннотацию в следующих правилах.Я пробовал разные шаблоны:

Token.begin == 0 (не работает, хотя определенно есть токен, который начинается с 0)

Token {STARTSWITH (DocumentMetaData)};(также не работает)

Единственный работающий шаблон:

Document {-> MARKFIRST (First)};

Но если я попытаюсь использовать эту аннотациюнапример, следующим образом:

First {-> MARK (FirstAgain)};

снова не работает.Это абсолютно бессмысленно для меня.Кажется, действительно странное поведение с аннотациями, которые начинаются с 0.

1 Ответ

0 голосов
/ 26 мая 2019

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

Что касается UIMA Ruta 2.7.0, я предпочитаю правило вроде:

# Token{->First};

Вот некоторые дополнительные мысли о правилах в вопросе:

Token.begin == 0;

Обычно токен не начинается с 0, поскольку документ начинается с пробелов или разрывов строк.Если на самом деле есть токен, который начинается со смещения 0 и правило не совпадает, то что-то невидимое покрывает начало конца токена.Это, конечно, зависит от настроек фильтрации, но в случае, если вы их не изменили, это может быть bom.

Token{STARTSWITH(DocumentMetaData)};

Здесь либо применима вышеуказанная проблема, либо смещение начала не идентично.Если DocumentMetaData покрывает весь документ, я бы сделал ставку на первые пробелы.Другая причина может заключаться в том, что внутренняя индексация нарушена, например, токены или DocumentMetaData создаются внешним механизмом анализа, который был вызван с помощью EXEC, и в действии не было настроено переиндексация.Эта ситуация также может возникнуть при неудачной оптимизации с использованием параметров конфигурации.

Document{->MARKFIRST(First)};
First{->MARK(FirstAgain)};

MARKFIRST создает аннотацию, используя смещение первого RutaBasic в согласованном контексте IIRC.Если документ начинается с чего-то невидимого, например с разрыва строки, второе правило не может совпадать.

В качестве общего совета в таких ситуациях, когда некоторые очевидные простые правила не работают должным образом, я рекомендую добавитьнекоторые дополнительные правила и использование конфигурации отладки с представлением объяснения.Как правило, Token; может непосредственно выделяться, если настройка видимости проблематична для данных токенов.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я являюсь разработчиком UIMA Ruta

...