НЛТК против Стэнфордского НЛП

Недавно я начал использовать инструментарий NLTK для создания нескольких решений с использованием Python.

Я слышал много об активности сообщества в отношении использования stanford NLP. Может ли кто-нибудь сказать мне, в чем разница между НЛТК и НЛП Стэнфорда? Являются ли они двумя разными библиотеками? Я знаю, что у NLTK есть интерфейс для stanford NLP, но кто-нибудь может пролить свет на несколько базовых различий или даже более подробно.

Можно ли использовать stanford NLP с помощью Python?

Ответ 1

Может ли кто-нибудь сказать мне, в чем разница между NLTK и Stanford NLP? Являются ли они двумя разными библиотеками? Я знаю, что NLTK имеет интерфейс к NLP Stanford, но может кто-нибудь пролить свет на несколько базовых различий или даже более подробно.

(Я предполагаю, что вы имеете в виду " Stanford CoreNLP".)

Это две разные библиотеки.

  • Stanford CoreNLP написан на Java
  • NLTK - это библиотека Python

Основное функциональное различие заключается в том, что NLTK имеет несколько версий или интерфейсов для других версий инструментов NLP, в то время как Stanford CoreNLP имеет только свою версию. NLTK также поддерживает установку сторонних Java-проектов и даже включает в себя инструкции для установки некоторых пакетов Stanford NLP в вики.

Оба имеют хорошую поддержку для английского языка, но если вы имеете дело с другими языками:

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

Можно ли использовать NLP в Stanford с помощью Python?

Да, существует несколько интерфейсов и пакетов для использования Stanford CoreNLP в Python (независимо от NLTK).

Ответ 2

Выбор будет зависеть от вашего варианта использования. NLTK отлично подходит для предварительной обработки pre-processing и токенизации текста. Он также включает в себя хороший тег POS. Standford Core NLP только для маркировки/маркировки POS - это немного излишне, потому что Standford NLP требует больше ресурсов.
 Но есть одно принципиальное отличие: вы не можете разобрать синтаксические зависимости из коробки с NLTK. Для этого вам нужно указать грамматику, которая может быть очень утомительной, если текстовая область не ограничена. Принимая во внимание, что Standford NLP предоставляет вероятностный анализатор для общего текста в виде загружаемой модели, что является довольно точным. Он также имеет встроенную функцию распознавания имен NER и многое другое. Также я рекомендую взглянуть на Spacy, который написан на python, прост в использовании и намного быстрее, чем CoreNLP.

Ответ 3

Похоже, что вы новичок в НЛП.

Я недавно начал использовать инструментарий NLTK

Если вы действительно новичок в НЛП, то лучше всего начать с простого. Так что в идеале вы должны начать с nltk. Я относительно новичок в обработке естественного языка (несколько месяцев). Я могу подтвердить, что для новичков nltk лучше, поскольку у него есть отличная и бесплатная онлайн-книга, которая помогает новичку быстро учиться.

Как только вы почувствуете себя комфортно и действительно решите проблему, посмотрите на Stanford Core NLP, чтобы узнать, будет ли она лучше в решении вашей проблемы.

Если вы хотите придерживаться NLTK, вы также можете получить доступ к API Stanford CoreNLP в NLTK.

Теперь о сходствах и различиях:

Может кто-нибудь сказать мне, в чем разница между НЛТК и Стэнфордом НЛП? Это две разные библиотеки?

Оба предлагают обработку естественного языка. Некоторые из наиболее полезных частей Stanford Core NLP включают в себя тегер части речи, распознаватель именованных объектов, анализ настроений и изучение шаблонов.

Распознавание именованных объектов лучше в Stanford Core NLP. Stanford Core NLP лучше справляется с грамматическими функциями, например, подбирает субъект, объект, предсказания (вот почему я частично переключился с nltk на Stanford Core NLP). Как сказал @user812786, NLTK имеет несколько интерфейсов с другими версиями инструментов NLP. НЛТК также лучше для изучения НЛП. Если вам нужно использовать несколько корпусов, используйте NLTK, поскольку вы можете легко получить доступ к множеству текстовых корпусов и лексических ресурсов. Оба имеют POS-теги и анализ настроений.

Можно ли использовать stanford NLP с использованием Python?

Да, конечно. Вы можете использовать StanfordNLP, представляющий собой пакет анализа естественного языка Python, который может вызывать пакет CoreNLP Java. Есть также несколько пакетов Python, использующих сервер Stanford CoreNLP

Ответ 4

Я хотел бы добавить к этому ответу, что если вы хотите анализировать события даты/времени, StanfordCoreNLP содержит SuTime, который является лучшим из доступных анализаторов даты и времени. Поддержка произвольных текстов, таких как "Следующий понедельник днем", отсутствует ни в одном другом пакете.

Ответ 5

NLTK может использоваться на этапе обучения, чтобы выполнять процесс естественного языка с нуля и базового уровня. Standford NLP дает вам гибкость на высоком уровне для выполнения задачи очень быстрым и простым способом.

Если вы хотите быстро и производственное использование, можете перейти на Standford NLP.