Тематическая модель Gensim HDP: как тренироваться на нескольких проходах корпуса?

HDP-модель Gensim для тематического моделирования (gensim.models.hdpmodel.HdpModel) имеет конструктор, который принимает аргумент с именем max_chunks.

В документации указано, что max_chunks — это количество фрагментов, которые будет проходить модель, и если это число больше, чем количество фрагментов в предоставленном корпусе, обучение будет проходить вокруг корпуса.

Поскольку журналы INFO предупредили меня, что функция правдоподобия уменьшается, я полагаю, что мне может потребоваться несколько проходов по корпусу для сходимости.

Модель LDA предоставляет с аргументом passes функциональность для обучения на корпусе для нескольких итераций. Мне трудно понять, как max_chunks в HDP сопоставляется с passes в LDA.

Например, допустим, в моем корпусе 1000000 документов. каким именно должен быть max_chunks, чтобы тренировать, скажем, 3 прохода на моем корпусе.

Любое предложение? Большое большое спасибо


person Mai    schedule 28.03.2017    source источник


Ответы (2)


class gensim.models.hdpmodel.HdpModel(corpus, id2word, max_chunks=None, max_time=None, chunksize=256, kappa=1.0, tau=64.0, K=15, T=150, alpha=1, gamma=1, eta=0.01, scale=1.0, var_converge=0.0001, outputdir=None, random_state=None)

Я думаю, что если у вас есть 1000000 документов, то если вы используете размер фрагмента по умолчанию, равный 256, вам потребуется max_chunks=100000/256*3, чтобы принудительно выполнить 3 прохода.

Я также получаю сообщение WARNING : likelihood is decreasing! и думаю, что мой корпус слишком мал (608 коротких текстов) и слишком однообразен, чтобы в нем можно было найти темы.

person brenda    schedule 02.11.2018

Варианты chunksize, passes, а также update_every могут немного сбивать с толку. Мне помогла эта ссылка и, в частности, раздел Chunksize, Passes, and Update_every

Итак, в вашем случае, если вы выполняете batch-LDA с update_every установленным на 0 и chunksize установленным к количеству документов, с passes установленным на 3, вы должны получить три прохода по всему корпусу.

В случае online-LDA, где update_every имеет значение 1, вы можете дополнительно использовать chunksize контролировать размер мини-партий за проход.

person tkja    schedule 03.04.2017