【发布时间】:2017-02-02 08:01:28
【问题描述】:
我对使用 Spark MLlib 应用 LDA 主题建模很感兴趣。我已经检查了here 中的代码和解释,但我找不到如何使用模型然后在一个新的看不见的文档中找到主题分布。
【问题讨论】:
标签: apache-spark lda apache-spark-mllib topic-modeling
我对使用 Spark MLlib 应用 LDA 主题建模很感兴趣。我已经检查了here 中的代码和解释,但我找不到如何使用模型然后在一个新的看不见的文档中找到主题分布。
【问题讨论】:
标签: apache-spark lda apache-spark-mllib topic-modeling
从 Spark 1.5 开始,DistributedLDAModel 尚未实现此功能。您需要做的是使用toLocal 方法将您的模型转换为LocalLDAModel,然后调用topicDistributions(documents: RDD[(Long, Vector]) 方法,其中documents 是新的(即训练外的)文档,一些像这样:
newDocuments: RDD[(Long, Vector)] = ...
val topicDistributions = distLDA.toLocal.topicDistributions(newDocuments)
这将不如this paper 建议的 EM 算法准确,但它会起作用。或者,您可以只使用新的在线变分 EM 训练算法,该算法已经产生LocalLDAModel。除了更快之外,这种新算法也更可取,因为它与用于拟合 DistributedLDAModels 的旧 EM 算法不同,它在文档的主题混合权重上优化 Dirichlet 先验的参数(alpha)。根据Wallach, et. al. 的说法,alphas 的优化对于获得好的主题非常重要。
【讨论】: