Java або Python для обробки природних мов [закрито]


112

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

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

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

Оновлено

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


47
Я ненавиджу, що подібні запитання не вітаються тут на ПП. Я думаю, що наміром було запобігти святі війни, але це сприяє змісту ІМО.
L0j1k

2
Якби сказати: "Які провідні бібліотеки Java та Python NLP та їх відносна потужність?" можливо, це вирішує? Відповідь з часом змінюється, але я також вважаю такі питання дуже корисними.
Скотт Сміт

5
Я також бажаю, щоб такі запитання були привітані на SO. Нещодавно я намагався оглянути сильні сторони NLP в Python vs R, і це було негайно збито. Не бує для тих, хто намагається створити свої проекти правильною мовою.
Ksofiac

Відповіді:


133

Java проти 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

Якщо ви не впевнені, яку саме мову слід шукати для NLP, я особисто кажу: "будь-яка мова, яка дасть вам бажаний аналіз / вихід", дивіться, яку мову чи інструменти вивчити для обробки природних мов?

Ось досить недавній (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/Comppare_of_deep_learning_software

Я уникаю перераховувати засоби глибокого навчання через недоброзичливість / нейтральність.


Інші питання Stackoverflow, які також задавали інструменти NLP / ML:


1
Дякуємо, що надали багато інформації про інструменти NLP та ML
Джин Лінг

42

Питання дуже відкрите. Сказане, замість того, щоб вибрати одну, нижче - порівняння залежно від мови, якою ви хочете скористатись (оскільки на обох мовах доступні хороші бібліотеки).

Пітон

Що стосується Python, перше місце, на яке слід звернути увагу, - це інструментарій з природних мов Python . Як вони зазначають у своєму описі, NLTK є провідною платформою для побудови програм Python для роботи з даними людської мови. Він надає прості у використанні інтерфейси для понад 50 корпоративних та лексичних ресурсів, таких як WordNet, а також набір бібліотек для обробки тексту для класифікації, токенізації, стримування, маркування, розбору та семантичного міркування.

Існує також чудовий код, який ви можете шукати, що виник із проекту "Інструментарій з природних мов Google" на основі Python. Ви можете знайти посилання на цей код тут, на GitHub .

Java

Перше місце, на яке звернеться, - група з обробки природних мов Стенфорда . Все програмне забезпечення, яке там розповсюджується, написане на Java. Для всіх останніх дистрибутивів потрібні Oracle Java 6+ або OpenJDK 7+. Пакети дистрибуції включають компоненти для виклику командного рядка, файли jar, API Java та вихідний код.

Інший чудовий варіант, який ви бачите в багатьох машинних умовах навчання тут (загальний варіант), - Weka . Weka - це сукупність алгоритмів машинного навчання для завдань з пошуку даних. Алгоритми можуть бути застосовані безпосередньо до набору даних або викликані з вашого власного коду Java. Weka містить інструменти для попередньої обробки даних, класифікації, регресії, кластеризації, правил асоціації та візуалізації. Він також добре підходить для розробки нових схем машинного навчання.


9
Дивовижна відповідь. Я дійсно не розумію, чому такі питання запитують тут. +1
L0j1k

8
Я згоден повністю. Питання, яке було задано, є загальним. Однак, саме такі питання, з якими я часто стикаюся, особливо, коли я новачок у цій галузі.
Натаніель Пейн

1
Щодо бібліотек та інструментів на базі Java, ще один чудовий, який ви можете подивитися - це LingPipe. alias-i.com/lingpipe
Натаніел Пейн

2
@NathanielPayne: Дякую вам за ваші пропозиції. Це дає мені кілька посібників, щоб почати NLP.
Джин Лінг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.