Тематическое моделирование в MALLET vs NLTK - PullRequest
28 голосов
/ 19 сентября 2011

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

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

Ответы [ 3 ]

23 голосов
/ 24 августа 2012

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

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

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

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

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

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

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

UPDATE

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

ОБНОВЛЕНИЕ 2

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

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

2 голосов
/ 08 апреля 2014

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

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

1 голос
/ 12 марта 2015

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

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

Имеется также

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

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

...