Пакеты R для выполнения тематического моделирования / LDA: просто `topicmodels` и` lda` [закрыто]


29

Мне кажется, что только два пакета R способны выполнять скрытое выделение Дирихле :

Один из них lda, автор Джонатан Чанг; а другой topicmodelsавтор - Беттина Грюн и Курт Хорник.

Каковы различия между этими двумя пакетами с точки зрения производительности, деталей реализации и расширяемости?

Ответы:


26

Реализация: пакет topicmodels предоставляет интерфейс для кода GSL C и C ++ для тематических моделей, выполненных Blei et al. и Phan et al. Для более ранней версии он использует вариационную ЭМ, для последней - выборку Гиббса. См. Http://www.jstatsoft.org/v40/i13/paper . Пакет хорошо работает с утилитами из пакета tm.

В пакете lda используется свернутый образец Гиббса для ряда моделей, аналогичных тем, которые есть в библиотеке GSL. Однако он был реализован самими авторами пакета, а не Blei et al. Следовательно, эта реализация в целом отличается от методики оценки, предложенной в оригинальных работах, в которых представлены эти варианты модели, где обычно применяется алгоритм VEM. С другой стороны, пакет предлагает больше функциональности, чем другой пакет. Пакет также предоставляет функциональность интеллектуального анализа текста.

Расширяемость. Что касается расширяемости, код тематической модели по самой своей природе может быть расширен для взаимодействия с другим кодом тематической модели, написанным на C и C ++. Пакет lda, кажется, больше полагается на конкретную реализацию, предоставленную авторами, но там сэмплер Gibbs может позволить указать вашу собственную модель темы. Что касается вопросов расширяемости nota bene, первый лицензируется по GPL-2, а второй LGPL, поэтому он может зависеть от того, для чего вам нужно его расширять (GPL-2 более строг в отношении аспекта открытого исходного кода, т.е. вы не можете его использовать в проприетарном программном обеспечении).

Производительность: я не могу вам здесь помочь, я пока использовал только тематические модели.

Заключение:
Лично я использую topicmodels, так как это хорошо задокументировано (см. Статью JSS выше), и я доверяю авторам (Grün также реализовал flexmix, а Hornik является основным участником R).


7
Во-первых, я уверен, что topicmodels - отличный пакет, и я согласен, что он очень хорошо задокументирован. Что касается «доверия» авторам пакета LDA, Джонатан Чанг был моим аспирантом, и я полностью доверяю его коду. Он и отличный инженер-программист, и ученый. Его пакет прост, хорошо масштабируется до довольно больших коллекций, и приятно изучить результаты в R. (Мне нравится, и я привык к редкому матричному представлению документов.) Следует отметить, что LDA реализует другие модели, включая реляционные. тематические модели, контролируемые LDA (с GLM) и стохастическая блочная модель со смешанным членством.

Спасибо за взвешивание. Я уверен, что ldaпакет отличный, я не хотел подразумевать, что он ldaимеет какой-то худший код. Я изложил свое личное впечатление (документация показалась немного небрежной). Так как это было> 2 года назад, я немного отредактировал ответ (опечатки на странице CRAN все еще там, я думаю, было бы хорошо, чтобы они были исправлены, но это электронное письмо, похоже, потеряно).
Момо

Я полагаю, что у вас большой опыт работы с обоими пакетами и вы знаете больше всего об общей теме, как насчет того, чтобы дать ответ, перечисляющий некоторые преимущества и недостатки обоих пакетов? Я не использовал lda, поэтому я не мог дать эмпирическую оценку этого. Обеспечение этого, несомненно, поможет ФП и всем остальным, а также исправит любые возможные несправедливости (которые не были предназначены). Благодарность!
Момо

1
Я также попробовал оба ldaварианта и обнаружил, что пакет содержит больше опций. Однако трудно понять, как отформатировать ваши данные, чтобы они вписывались в модель. topicmodelsПакет хорошо работает с tmпакетом, в то время как ldaпакет запрашивает список, не ясно , как создать.
Omri374

12

+1 для топовых моделей . @ Ответ Момо очень исчерпывающий. Я бы просто добавил, что topicmodelsпринимает входные данные в виде матрицы терминов документа, которые легко создаются с помощью tmпакета или с использованием Python. ldaПакет использует более эзотерическую форму ввода ( на основе Блея LDA-C) , и у меня не было никакой удачи , используя встроенные функции для преобразования ЦМР вlda формате пакета (документация Lda очень плохо, так как Momo нот).

У меня есть некоторый код, который начинается с необработанного текста, предварительно обрабатывает его tmи передает его topicmodels(включая поиск оптимального количества тем заранее и работу с выводом) здесь . Может быть полезным для тех, кто приезжает topicmodelsв первый раз.


3
Для тех, кто еще не использует tm и хочет поиграть с lda , JFreq также помещает простые тексты в предпочтительный формат LDA-C.
сопряженный

Полезно знать о JFreq, я не видел его раньше. Спасибо за совет!
Бен

1
Я только что заметил read_dtm_Blei_et_alфункцию в tmпакете, которая делает то же самое.
Бен

3

Пакет R Structural Topic Model (STM) от Молли Робертс, Брэндона Стюарта и Дастина Тингли также является отличным выбором. Построенный поверх пакета tm, это общая структура для моделирования тем с информацией о ковариате на уровне документа.

http://structuraltopicmodel.com/

Пакет STM включает ряд методов (поиск по сетке) и мер (семантическая согласованность, остатки и эксклюзивность) для определения количества тем. Установка количества тем в 0 также позволит модели определить оптимальное количество тем.

Пакет stmBrowser является отличным дополнением для визуализации данных, позволяющим визуализировать влияние внешних переменных на темы. См. Этот пример, связанный с президентскими дебатами 2016 года: http://alexperrier.github.io/stm-visualization/index.html .


0

Я использовал все три библиотеки, среди всех 3, а именно, topicmodels, lda, stm; не у всех работает грамм. Библиотека topicmodels хороша с ее оценкой, и она также работает с n граммами. Но если кто-то работает с униграммами, то практикующий врач может предпочесть stm, поскольку он дает структурированный вывод.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.