我对使用 Spark MLlib 应用 LDA 主题建模感兴趣。我已经检查了代码和解释here http://spark.apache.org/docs/latest/mllib-clustering.html#latent-dirichlet-allocation-lda但我找不到如何使用该模型在新的看不见的文档中查找主题分布。
从 Spark 1.5 开始,此功能尚未实现DistributedLDAModel
。您需要做的是将您的模型转换为LocalLDAModel
使用toLocal
方法,然后调用topicDistributions(documents: RDD[(Long, Vector])
方法其中documents
是新的(即训练外的)文档,如下所示:
newDocuments: RDD[(Long, Vector)] = ...
val topicDistributions = distLDA.toLocal.topicDistributions(newDocuments)
这将不如 EM 算法准确建议,但它会起作用。或者,您可以使用新的在线变分 EM 训练算法,该算法已经产生了LocalLDAModel
。除了更快之外,这种新算法也更受欢迎,因为它与旧的 EM 拟合算法不同DistributedLDAModels
,正在先于文档的主题混合权重优化狄利克雷的参数(alpha)。根据瓦拉赫等。等人。 http://machinelearning.wustl.edu/mlpapers/paper_files/NIPS2009_0929.pdf,alpha 的优化对于获得好的主题非常重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)