微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark LDA 实例

Spark LDA 实例

一、准备数据

数据格式为:documents: RDD[(Long, Vector)],其中:Long为文章ID,Vector为文章分词后的词向量;

通过分词以及数据格式的转换,转换成RDD[(Long, Vector)]即可。

二、建立模型

import org.apache.spark.mllib.clustering._
val ldaOptimizer = new OnlineLDAOptimizer().setoptimizeDocConcentration(true)
val lda = new LDA()
lda.setK(params.k)
.setMaxIterations(params.maxIterations)
.setDocConcentration(params.docConcentration)
.setTopicConcentration(params.topicConcentration)
.setoptimizer(ldaOptimizer)
.setCheckpointInterval(10)
.setSeed(1234)
val modelLDA: Ldamodel = lda.run(corpus)
modelLDA.save(sc.sparkContext, params.modelPath)

三、模型参数

case class NewsParams(
    k: Int = 100,
    maxIterations: Int = 100,
    docConcentration: Double = -1,
    topicConcentration: Double = -1,
    stopWordFile: String = "zh_stopwords.txt",
    modelPath: String = "Ldamodel.14.100",
    ldaJsonPath:String = "ldamodel.14.200.json",
    vocabPath: String = "vocab_info" )

四、结果输出

topicsMatrix以及topics(word,topic))输出。mllib上的lda不是分布式的,目前只存储topic的信息,而不存储doc的信息,如果获取只能使用ml中的lda或者通过以下代码实现。

val ldamodel = lda.run(documents)
val distLdamodel = ldamodel.asInstanceOf[distributedLdamodel]
distLdamodel.topicdistributions

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐