Как я могу инициализировать модель темы gensim LDA? - PullRequest
0 голосов
/ 29 июня 2018

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

Создайте объект LdaModel, но не передавайте корпус.

lda_model =
LdaModel(
         id2word=id2word,
         num_topics=30,
         eval_every=10,
         pass=40,
         iterations=5000)

Затем присвойте какое-нибудь свойство объекта, соответствующее вероятностям прорисовки каждого слова из темы в матрицу моей собственной конструкции.

lda_model.topics = my_topic_mat

Затем подгоните корпус:

lda_model.update(corpus)

Спасибо за помощь!

1 Ответ

0 голосов
/ 30 июня 2018

На практике установка априора может быть лучшим выбором, чем инициализация оптимизатора.

Существует два гиперпараметра alpha и eta, где alpha - это для матрицы документа-темы, а eta - для Матрица тематических слов. Чтобы повлиять на вероятность слов в темах, попробуйте передача eta в качестве дополнительного аргумента:

lda_model = gensim.models.ldamodel.LdaModel(num_topics=30, id2word=id2word, eta=your_topic_mat, 
                                            eval_every=10, iterations=5000)

Из Гензим документы

эта может быть скаляром для симметричного априора над темой / словом распределения, или вектор формы num_words, который может быть использован для накладывать (определяемые пользователем) асимметричные априоры на распределение слов. Это также поддерживает специальное значение «auto», которое учитывает асимметричность перед словами прямо из ваших данных. Эта также может быть матрицей shape num_topics x num_words, которые можно использовать для наложения асимметричного Приоритеты над распределением слов по теме (не может быть извлечено из данных).

...