相关疑难解决方法(0)

从Pyspark LDA模型中提取文档主题矩阵

我已经通过Python API在spark中成功训练了LDA模型:

from pyspark.mllib.clustering import LDA
model=LDA.train(corpus,k=10)
Run Code Online (Sandbox Code Playgroud)

这完全正常,但我现在需要LDA模型的文档 -主题矩阵,但据我所知,我能得到的是使用的单词 -topic model.topicsMatrix().

有没有办法从LDA模型中获取文档主题矩阵,如果没有,是否有一种替代方法(除了从零开始实现LDA)以运行LDA模型,它将为我提供我需要的结果?

编辑:

经过深入挖掘后,我在Java api中找到了DistributedLDAModel的文档topicDistributions(),我认为这正是我所需要的(但我敢肯定,如果Pyspark中的LDAModel实际上是一个在引擎盖下的DistributedLDAModel ...).

无论如何,我可以像这样间接调用这个方法,没有任何明显的失败:

In [127]: model.call('topicDistributions')
Out[127]: MapPartitionsRDD[3156] at mapPartitions at PythonMLLibAPI.scala:1480
Run Code Online (Sandbox Code Playgroud)

但是如果我真的看结果,我得到的只是字符串告诉我结果实际上是一个Scala元组(我认为):

In [128]: model.call('topicDistributions').take(5)
Out[128]:
[{u'__class__': u'scala.Tuple2'},
 {u'__class__': u'scala.Tuple2'},
 {u'__class__': u'scala.Tuple2'},
 {u'__class__': u'scala.Tuple2'},
 {u'__class__': u'scala.Tuple2'}]
Run Code Online (Sandbox Code Playgroud)

也许这通常是正确的方法,但有没有办法获得实际结果?

python lda apache-spark pyspark

16
推荐指数
2
解决办法
4980
查看次数

构建 ClassDict 的预期零参数(用于 pyspark.ml.linalg.SparseVector)

我正在努力创建一个 LDA 模型。

这是我到目前为止所做的 - 创建了一个 unigram 并根据这篇文章将数据帧转换为 RDD 。

这是代码:

countVectors = CountVectorizer(inputCol="unigrams", outputCol="features", vocabSize=3, minDF=2.0)
model = countVectors.fit(res)

result = model.transform(res)
result.show(5, truncate=False)
Run Code Online (Sandbox Code Playgroud)

这是数据集

+------------------------------------------------------------------------+---+-------------------+
|unigrams                                                                |id |features           |
+------------------------------------------------------------------------+---+-------------------+
|[born, furyth, leaguenemesi, rise, (the, leaguenemesi, rise, seri, book]|0  |(3,[0,1],[1.0,1.0])|
|[hous, raven, (the, nightfal, chronicl, book]                           |1  |(3,[0,1],[1.0,1.0])|
|[law, 101everyth, need, know, american, law, fourth, edit]              |2  |(3,[],[])          |
|[hot, summer, night]                                                    |3  |(3,[],[])          |
|[wet, bundlemega, collect, sex, stori, (30, book, box, set)]            |4  |(3,[0],[1.0]) …
Run Code Online (Sandbox Code Playgroud)

python lda apache-spark pyspark apache-spark-mllib

2
推荐指数
1
解决办法
2716
查看次数

标签 统计

apache-spark ×2

lda ×2

pyspark ×2

python ×2

apache-spark-mllib ×1