我对使用Spark MLlib应用LDA主题建模感兴趣。我已经检查了here中的代码和解释,但我找不到如何使用模型然后在一个新的看不见的文档中找到主题分布。
答案 0 :(得分:13)
从Spark 1.5开始,DistributedLDAModel
尚未实现此功能。您需要做的是使用LocalLDAModel
方法将模型转换为toLocal
,然后调用topicDistributions(documents: RDD[(Long, Vector])
方法documents
为新方法(即(培训)文件,如下:
newDocuments: RDD[(Long, Vector)] = ...
val topicDistributions = distLDA.toLocal.topicDistributions(newDocuments)
这比this paper建议的EM算法要准确得多,但它会起作用。或者,您可以使用新的在线变分EM训练算法,该算法已经生成LocalLDAModel
。除了速度更快之外,这种新算法也是优选的,因为它与拟合DistributedLDAModels
的旧EM算法不同,是在优先于主题混合权重之前优化Dirichlet的参数(alphas)。文档。根据{{3}},alphas的优化对于获得好的主题非常重要。