Подтвердить что ты не робот

Моделирование темы в MALLET vs NLTK

Я просто прочитал увлекательную статью о том, как MALLET можно использовать для моделирования тем, но я не мог найти что-либо в Интернете, сравнивая MALLET с NLTK, с которым у меня уже был некоторый опыт.

В чем главные различия между ними? Является ли MALLET более "полным" ресурсом (например, имеет больше инструментов и алгоритмов под капотом)? Или где хорошие статьи, отвечая на эти первые два вопроса?

4b9b3361

Ответ 1

Это не тот, кто более совершенен, чем другой, это скорее вопрос о том, что у кого-то есть что-то другое, а другое нет. Это также вопрос целевой аудитории и цели.

Mallet - это инструментарий для машинного обучения на базе Java, который предназначен для обеспечения надежных и быстрых реализаций для различных задач обработки естественного языка.

NLTK построен с использованием Python и поставляется с большим количеством дополнительных материалов, таких как корпуса, такие как WordNet. NLTK нацелена больше на людей, изучающих НЛП, и поэтому используется больше как платформа обучения и, возможно, меньше как инженерное решение.

По моему мнению, основное различие между ними заключается в том, что NLTK лучше позиционируется как учебный ресурс для людей, заинтересованных в машинных процессах и НЛП, поскольку он поставляется с целым кучей документации, примеров, корпусов и т.д. и т.д.

Маллет больше нацелен на исследователей и практиков, которые работают на местах и ​​уже знают, что они хотят делать. Он поставляется с меньшим количеством документации (хотя он имеет хорошие примеры, и API хорошо документирован) по сравнению с обширной коллекцией NLP NLTK.

UPDATE: Хорошие статьи, описывающие их, - это документы и примеры Mallet в http://mallet.cs.umass.edu/ - на боковой панели есть ссылки на теги последовательности, моделирование тем и т.д.

а для NLTK - книга NLTK Обработка естественного языка с помощью Python - это хорошее введение как в NLTK, так и в NLP.

UPDATE

Недавно я нашел библиотеку sklearn Python. Это нацелено на машинное обучение в более общем плане, а не непосредственно на НЛП, но может быть использовано и для этого. Он поставляется с очень большим набором инструментов для моделирования, и большинство из них, похоже, полагаются на NumPy, поэтому это должно быть довольно быстро. Я использовал его совсем немного и могу сказать, что он очень хорошо написан и документирован и имеет активное сообщество разработчиков, продвигающее его вперед (по крайней мере, с мая 2013 года).

ОБНОВЛЕНИЕ 2

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

Если все, что вы хотите сделать, это использовать инструменты командной строки для молотка, это прекрасно, используя API, требуется много копания через сам код молотка и, как правило, исправление некоторых ошибок. Будьте предупреждены, что mallet поставляется с минимальной документацией в отношении API.

Ответ 2

Вопрос в том, работаете ли вы на Python или Java (или ни один из вышеперечисленных). Mallet хорош для Java (поэтому Clojure и Scala), так как вы можете легко получить к нему API в Java. Mallet также имеет приятный интерфейс командной строки, поэтому вы можете использовать его вне приложения.

По той же причине с Python, NLTK отлично подходит для python, и вам не придется делать сумасшествие Jython, чтобы заставить их хорошо играть вместе. Если вы используете python, Gensim просто добавил обертку Mallet, которую стоит проверить. Прямо сейчас, это в основном голова-альфа-функция, но она может делать то, что вам нужно.

Ответ 3

Я не знаком с инструментарием моделирования моделей NLTK, поэтому я не буду пытаться его сравнивать. Источники Mallet в Github содержат несколько алгоритмов (некоторые из которых недоступны в "выпущенной" версии). Насколько мне известно, есть

  • SimpleLDA (LDA с сбитой выборкой Gibbs)
  • ParallelTopicModel (LDA, который работает на многоядерных процессорах)
  • ИерархияLDA
  • LabeledLDA (полуконтролируемый подход к LDA)
  • Распределение Pachinko с LDA.
  • WeightedTopicModel

Он также имеет

  • несколько классов, которые помогают в диагностике моделей LDA. (TopicModelDiagnostics.java)
  • Возможность сериализации и де-сериализации обучаемой модели LDA.

В целом, это прекрасный инструментарий для экспериментов с тематическими моделями с доступной лицензией с открытым исходным кодом (CPL).