2009-10-21 5 views
2

Я работаю над проектом, который уже имеет базу на C++. Я хотел бы иметь плагин для обработки естественного языка. Мне очень нравится GATE, но я не уверен, стоит ли запускать JVM и разделить проект на части C++ и Java. Я заметил, что UIMA имеет структуру C++, но не пробовал, но, похоже, имеет меньше возможностей, чем GATE.Обработка естественного языка в C++

Кто-нибудь знает лучший вариант, чем пытаться каким-то образом накрыть GATE на C++ (например, лучше библиотеки NLP на C++)? Если я завершу GATE на C++, что лучше? SOA?

Благодаря

ответ

5

Список resources for NLP (POS Taggers, NP отрывы, появившиеся модели последовательности, Парсеры ...) в C++ и других языках Кристофер Маннинг. Another one в Википедии.

Также есть страница Boost для String and text processing.

1

Конечно, это зависит от того, что именно вы хотите сделать.

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

Вы можете найти похожие функции для GATE/ANNIE или UIMA/OpenNLP с использованием библиотек C++, но хорошая вещь о двух средах заключается в том, что они являются согласованными и не требуют большого количества «кода клея» для создания отдельных библиотек разговаривать друг с другом.

В чем причина нежелания обернуть GATE в коде C++? Я могу оценить, что это добавит сложности проекта, но если ваши заботы о производительности/памяти, то JVM может быть наименьшим из ваших забот. НЛП-инструменты, как правило, очень голодны, ожидают отдать половину концерта для моделей NER, больше для статистического парсера.

+1

Я новичок НЛП, поэтому я ценю ваши идеи! Мои проблемы с Java - это половина памяти/скорость и половина сложности проекта, добавляя больше языков/компиляторов/и т. Д. Знаете ли вы, что UIMA на C++ - это скорее ресурс, чем GATE? Есть ли заметная разница (20% и более в процессорном времени или потреблении ОЗУ)? – User1

+0

Извините, я никогда не использовал версию C++. Большинство лучших библиотек НЛП написаны на Java по какой-то причине. – Stompchicken

0

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

Я receommend начать здесь:

Getting Started Package for NLP++

Этот пакет содержит все, что вам нужно, чтобы начать работу с НЛП ++. Да, вам нужно изучить новый язык программирования, но он похож на C++, и вам не нужно использовать API-интерфейс черного ящика. Кроме того, скомпилированный текстовый анализатор в VisualText создает решение Visual Studio, которое вы можете включить в другие проекты на C++.

Вы можете использовать VisualText и NLP ++ бесплатно для некоммерческих проектов.

присоединиться ++ сообщества НЛП задавать вопросы, обсуждать анализаторы и узнать больше о НЛП ++:

NLP++ Community

С уважением,

Dominik Holenstein

NLP ++ Community Manager

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