Как apache UIMA отличается от Apache Opennlp - программирование

Как apache UIMA отличается от Apache Opennlp

Я тестировал некоторые возможности тестирования с Apache OpenNLP, который имеет возможность обнаружения приговоров, токенизации, распознавания сущности имени. Теперь, когда я начал смотреть документы UIMA, это упоминается на домашней странице UIMA - "идентификация языка" = > "специфическая для языка сегментация" = > "обнаружение границы предложения" = > "обнаружение сущности (имена человека/места и т.д.)".

Что говорит, что я могу использовать UIMA для выполнения той же задачи, что и OpenNLP. Какая добавленная функция есть? Я новичок в этой области. Пожалуйста, помогите мне понять перспективы использования и возможностей обоих.

4b9b3361

Ответ 1

Как я понимаю, вы задаете вопрос о различиях между наборами функций Apache UIMA и Apache OpenNLP. Их набор функций едва ли имеет что-то общее, поскольку эти два проекта имеют совершенно разные цели.

Apache UIMA - это реализация спецификации UIMA с открытым исходным кодом. Последнее определяет концептуальную основу для расширения неструктурированной информации (например, естественного языка, созданного людьми) со структурированными метаданными, чтобы компьютеры могли работать с ней.

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

Input text = "Bob cat Charlie is chasing a mouse."
Result = "<NE>Bob</NE> cat <NE>Charlie</NE> is chasig a mouse."

Чтобы идентифицировать именованные объекты в этом примере (т.е. Bob и Charlie), необходимо выполнить несколько этапов обработки естественного языка. Не вдаваясь в подробности о том, что делает каждый из шагов, гипотетическая система для распознавания именованного объекта может включать следующие шаги:

  • Подготовка данных
  • Разделение предложения
  • лексемизацию
  • Лемматизация токенов
  • Тег с частичной речью
  • Определение фразы
  • Классификация фраз как именованных объектов или не

Как вы можете видеть, такие приложения могут быть очень интуитивно смоделированы как последовательности компонентов, и это именно то, что делает UIMA. Он моделирует приложения, относящиеся к неструктурированной информации, как конвейеры компонентов (так называемая аналитика на языке UIMA). Как вы можете себе представить, многие компоненты конвейера, перечисленные выше, могут использоваться для других задач, поэтому архитектура UIMA подчеркивает возможность повторного использования компонентов.

Чтобы избежать путаницы, сам стандарт UIMA не предоставляет каких-либо конкретных компонентов, а определяет инфраструктуру для приложений UIM (Unstructured Information Management), например. рабочие процессы, типы данных, межкомпонентная связь и т.д.

Apache OpenNLP делает именно это, а именно обеспечивает конкретные реализации алгоритмов НЛП, имеющих дело с очень конкретными задачами (расщепление предложений, маркировка POS и т.д.). Источником вашей путаницы может быть то, что можно написать компоненты Apache UIMA, которые переносят инструменты OpenNLP. Проект OpenNLP фактически предоставляет такие компоненты.

Если вы хотите использовать структуру UIMA для своих приложений UIM, зависит от размера проекта. Если он мал, я бы пошел без UIMA и просто использовал OpenNLP напрямую, так как UIMA довольно тяжелый и, таким образом, добавляет еще сложные (для небольших приложений) лишние накладные расходы. Кроме того, из-за его сложности требуется много времени, чтобы узнать, как его использовать.

Подводя итоги, Apache UIMA и Apache OpenNLP решают разные проблемы, но поскольку оба имеют дело с неструктурированной информацией, они могут быть с успехом объединены.