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

112

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

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

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

Обновлено

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

Джин Лин
источник
47
Ненавижу, что подобные вопросы здесь не приветствуются. Я думаю, что целью было предотвратить священные войны, но это способствует содержанию ИМО.
L0j1k 07
2
Если бы это было сформулировано так: «Каковы ведущие библиотеки NLP для Java и Python и их относительные преимущества?» может это решит это? Ответ со временем меняется, но я также считаю, что подобные вопросы очень полезны.
Скотт Смит
5
Я также хотел бы, чтобы такие вопросы приветствовали на SO. Недавно я попытался изучить сильные стороны НЛП в Python и R, и это сразу же было отклонено. Не bueno для тех, кто пытается сформулировать свои проекты на правильном языке.
Ksofiac 04

Ответы:

133

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

Помимо 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 г.) инструмент НЛП: https://github.com/alvations/awesome-community-curated-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:

Alvas
источник
1
Спасибо за много информации об инструментах НЛП и машинного обучения,
Джин Лин
42

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

Python

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

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

Ява

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

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

Натаниэль Пейн
источник
9
Отличный ответ. Я действительно не понимаю, почему на подобные вопросы здесь смотрят свысока. +1
L0j1k
8
Я полностью согласен. Заданный вопрос носит общий характер. Тем не менее, это именно те вопросы, с которыми я часто сталкиваюсь, особенно когда я новичок в той или иной области.
Натаниэль Пейн
1
Что касается библиотек и инструментов на основе Java, еще один замечательный инструмент, на который вы можете обратить внимание, - это LingPipe. alias-i.com/lingpipe
Натаниэль Пейн
2
@NathanielPayne: Большое спасибо за ваши предложения. Это дает мне некоторое руководство по началу работы с НЛП.
Джин Лин