Java или Python для обработки естественного языка

Я хотел бы знать, какой язык программирования лучше подходит для обработки естественного языка. Java или Python? Я нашел много вопросов и ответов относительно этого. Но я все еще теряю выбор того, какой из них использовать.

И я хочу знать, какую библиотеку NLP использовать для Java, поскольку существует множество библиотек (LingPipe, GATE, OpenNLP, StandfordNLP). Для Python большинство программистов рекомендуют NLTK.

Но если я сделаю некоторую текстовую обработку или извлечение информации из неструктурированных данных (просто сформированный простой текстовый текст), чтобы получить полезную информацию, что является лучшим вариантом? Java или Python? Подходящая библиотека?

Обновление

Я хочу сделать, чтобы извлечь полезную информацию о продукте из неструктурированных данных (например, пользователи делают разные формы рекламы о мобильных или портативных компьютерах с нестандартным английским языком)

Ответ 1

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

Помимо NLTK (www.nltk.org), на самом деле существуют другие библиотеки для обработки текста в python:

(подробнее см. https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search)

Для Java есть несколько других, но здесь есть еще один список:

Это хорошее сравнение для базовой обработки строк, см. http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html

Полезное сравнение GATE с UIMA и OpenNLP, см. https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4

Если вы сомневаетесь, какой язык для НЛП, лично я говорю, "любой язык, который даст вам желаемый анализ/вывод", см. На каком языке или инструменты для обучения естественному языку?

Вот довольно недавние (2017) инструменты NLP: https://github.com/alvations/awesome-community-curated-nlp

Более старый список инструментов NLP (2013): http://web.archive.org/web/20130703190201/http://yauhenklimovich.wordpress.com/2013/05/20/tools-nlp


Помимо инструментов обработки языка вам очень нужны инструменты machine learning для включения в конвейеры NLP.

В диапазоне python и Java имеется целый диапазон, и еще раз это зависит от предпочтений и достаточно ли удобны библиотеки:

Машинное обучение библиотек в python:

(подробнее см. https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search)


С недавним (2015) глубоким обучением цунами в НЛП, возможно, вы могли бы рассмотреть: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

Я избегу перечислять инструменты глубокого обучения из не-фаворитизма/нейтралитета.


Другие вопросы о Stackoverflow, которые также запрашивали инструменты NLP/ML:

Ответ 2

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

Python

В терминах Python первое место, на которое вы должны обратить внимание, - это Python Natural Language Toolkit. Как отмечается в их описании, NLTK является ведущей платформой для создания программ Python для работы с данными на человеческом языке. Он предоставляет простые в использовании интерфейсы для более чем 50 корпораций и лексических ресурсов, таких как WordNet, а также набор библиотек обработки текста для классификации, токенизации, генерации, тегирования, синтаксического анализа и семантических рассуждений.

Существует также отличный код, который вы можете найти, исходя из проекта Google Natural Language Toolkit, основанного на Python. Вы можете найти ссылку на этот код здесь на GitHub.

Java

Первым местом для поиска будет Stanford группа обработки естественных языков. Все распространенное там программное обеспечение написано на Java. Все последние дистрибутивы требуют Oracle Java 6+ или OpenJDK 7+. В дистрибутивные пакеты входят компоненты для вызова командной строки, файлы jar, Java API и исходный код.

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