Scala 将主题映射回Spark LDA中的文档

Scala 将主题映射回Spark LDA中的文档,scala,apache-spark,machine-learning,lda,Scala,Apache Spark,Machine Learning,Lda,我已经在Spark 2.2中加载了许多路透社新闻通讯(1986)的文章,并希望使用LDA进行一些主题学习 +--------------------+--------------------+----+ | title| body| id| +--------------------+--------------------+----+ |FED SAYS IT SETS ...| |5434| |

我已经在Spark 2.2中加载了许多路透社新闻通讯(1986)的文章,并希望使用LDA进行一些主题学习

+--------------------+--------------------+----+
|               title|                body|  id|
+--------------------+--------------------+----+
|FED SAYS IT SETS ...|                    |5434|
|MIM TO ACQUIRE ST...|Mount Isa Mines H...|5435|
|MAGNA <MAGAF> CRE...|Magna Internation...|5436|
|J.W. MAYS INC <MA...|Shr 2.27 dlrs vs ...|5437|
运行模型

val pipelineModel = pipeline.fit(corpus)
我可以使用访问LDA(EM)模型

val ldaModel = pipelineModel.stages(3).asInstanceOf[DistributedLDAModel]
我可以使用

ldaModel.describeTopics(maxTermsPerTopic = 5).show()
经过一点DF操作,它给出了主题及其相关术语和概率

+-------+----------+--------------------+
|topicId|      term|         probability|
+-------+----------+--------------------+
|      0|   company| 0.08715003585328869|
|      0|      corp| 0.03355461912220357|
|      0|     group|0.024083945559541863|
|      0|      unit|0.016712655949244752|
|      0|     stake| 0.01314416068270042|
|      1|      dlrs|   0.072961342546073|
|      1|      debt| 0.02826491264713813|
...
我想将主题分布映射回原始文档。回到Spark 1.6,为了获得上面文档(id=5435)的主题分布,我将执行以下操作。但不再支持topicDistributions

 ldaModel.topicDistributions.filter(_._1 == 5435).collect
Spark ML LDA API确实列出了两种新方法,但我不清楚如何使用它们

 final val topicConcentration: DoubleParam
及 最终值topicDistributionCol:Param[字符串]


有人这样做过吗?

我可能错了,但看起来你只是想变换一下:

ldaModel.transform(corpus)

您的解决方案按此处提供的方式工作:,谢谢!我遇到了同样的问题。下面的答案行不通。你明白答案了吗?
ldaModel.transform(corpus)