Конечно, это зависит от того, что именно вы хотите сделать.
GATE и UIMA являются основой для НЛП, в основном разработанной вокруг идеи управления информацией и ее извлечения. Нельзя сказать, что GATE имеет больше возможностей, чем UIMA, поскольку строго они оба являются только фреймворками. Однако GATE поставляется вместе с ANNIE, у которого есть много приятных функций, которые могут вам пригодиться (опять же, в зависимости от того, что вы хотите сделать). UIMA поставляется вместе с библиотеками OpenNLP, которые отражают некоторые из этих функций, но не все, но написаны на Java, поэтому потребуется загрузить JVM.
Вы можете найти похожие функции для GATE/ANNIE или UIMA/OpenNLP с использованием библиотек C++, но хорошая вещь о двух средах заключается в том, что они являются согласованными и не требуют большого количества «кода клея» для создания отдельных библиотек разговаривать друг с другом.
В чем причина нежелания обернуть GATE в коде C++? Я могу оценить, что это добавит сложности проекта, но если ваши заботы о производительности/памяти, то JVM может быть наименьшим из ваших забот. НЛП-инструменты, как правило, очень голодны, ожидают отдать половину концерта для моделей NER, больше для статистического парсера.
Я новичок НЛП, поэтому я ценю ваши идеи! Мои проблемы с Java - это половина памяти/скорость и половина сложности проекта, добавляя больше языков/компиляторов/и т. Д. Знаете ли вы, что UIMA на C++ - это скорее ресурс, чем GATE? Есть ли заметная разница (20% и более в процессорном времени или потреблении ОЗУ)? – User1
Извините, я никогда не использовал версию C++. Большинство лучших библиотек НЛП написаны на Java по какой-то причине. – Stompchicken