UIMA: аннотаторы Plug & Play для цепочек разных команд - PullRequest
0 голосов
/ 27 февраля 2012

Предположим, у меня есть набор инструментов UIMA, который делает что-то вроде этого:

tokenize -> POS маркировка -> назначить мои пользовательские теги / аннотации -> использовать пользовательские теги, чтобы назначить больше тегов -> дальнейшая обработка.

Можно ли использовать стороннее, скажем, распознавание сущностей (которое использует POS-теги, но не требует большего), сразу после POS-тегирования, между двумя пользовательскими вещами или после?

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

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

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

1 Ответ

3 голосов
/ 01 марта 2012

Сторонний аннотатор не будет ожидать, что наши пользовательские теги будут там.

Если я правильно понимаю, вы обеспокоены тем, что ваши пользовательские аннотации могут вступать в конфликт со сторонним NER, верно? Не будет, если ваш код не добавляет точно такие же те же самые аннотации.

В этом сила UIMA: каждый механизм анализа (AE) независим от других, он заботится только о комментариях, которые передаются в CAS . Например, скажем, у вас есть AE, которая ожидает аннотации типа my.namespace.Token. Неважно, какие AE создали эти аннотации, если они присутствуют в CAS.

Цена за эту гибкость заключается в том, что вы (как разработчик) должны убедиться, что присутствуют необходимые аннотации для каждого AE. Например, если AE ожидает аннотации типа my.namespace.Sentence, но их нет, эта AE не сможет выполнять какую-либо обработку.

...