使用Gibbs采样和burnin + thin选项的LDA主题模型的Python实现?

时间:2017-11-02 16:07:25

标签: python r lda topic-modeling

我正在尝试使用折叠的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中运行模型?谢谢!

1 个答案:

答案 0 :(得分:0)

假设您没有使用在线培训,请检查gensim&#39; Latent Dirichlet Allocation via Mallet吗?

  

该模块允许从训练语料库中进行LDA模型估计,并使用从MALLET采集的(优化版本)折叠gibbs样本,在新的未见文档中推断主题分布。