我正在尝试使用折叠的Gibbs采样来优化LDA主题模型。我一直在使用R中的ldatuning
包来优化主题数量k:
controls_tm <- list(
burnin = 1000,
iter = 4000,
thin = 500,
nstart = 5,
seed = 0:4,
best = TRUE
)
num_cores <- max(parallel::detectCores() - 1, 1)
result <- FindTopicsNumber(my_dfm, topics = seq(40, 100, by = 5), metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010", "Deveaud2014"), mc.cores = num_cores, control = controls_tm, verbose = TRUE)
这一切都很好。现在我可以在R中为具有相同控件的给定k运行topicmodels
,但每个模型运行大约需要8个小时,即使在具有27个核心的HPC群集上也是如此。我正在寻找可以使用相同控件运行的LDA主题模型的Python实现,以便它与我用来优化ldatuning
的内容一致,但更快,因为我需要运行多个模型来比较困惑。< / p>
我查看了Python中使用Gibbs的lda
库,每个模型需要1小时。但就我所知,我无法将其传递给burnin或thin参数。
我也看过sklearn.decomposition.LatentDirichletAllocation
,但是它使用的是变分贝叶斯而不是吉布斯,而且它看起来也不像是接受了倦怠或瘦。同样适用于gensim
(我认为 - 我对它不是很熟悉)。
这在Python中是否不存在?或者是否有一个解决方法,以便我可以使用Gibbs采样和我想要的参数在Python中运行模型?谢谢!
答案 0 :(得分:0)
假设您没有使用在线培训,请检查gensim&#39; Latent Dirichlet Allocation via Mallet吗?
该模块允许从训练语料库中进行LDA模型估计,并使用从MALLET采集的(优化版本)折叠gibbs样本,在新的未见文档中推断主题分布。