spark或者mapreduce文档相似度计算
来源:互联网 发布:王者荣耀网络问卷调查 编辑:程序博客网 时间:2024/05/17 09:20
计算pairwise文档相似度一般来说是n2复杂度的,最近看了看一篇比较老的论文:Pairwise Document Similarity in Large Collections with MapReduce,采用了一种两阶段的方案,先以词为单位建立倒排,再计算相似度,写了代码进行实现,如下:
import org.apache.spark.rdd.RDDimport utility.Helpersimport scala.collection.mutable/** * Created by fhqplzj on 2017/7/21. */object DocSimilarity { case class IndexedDocument(id: Long, words: Array[String]) def pairwise_document_similarity(docs: RDD[IndexedDocument]): RDD[((Long, Long), Int)] = { /*Indexing*/ val inverted_indices = docs.flatMap { doc => val word_count = new mutable.HashMap[String, Int]().withDefaultValue(0) doc.words.foreach { word => word_count(word) += 1 } word_count.toArray.map { case (word, cnt) => (word, (doc.id, cnt)) } }.groupByKey() /*Pairwise Similarity*/ inverted_indices.flatMap { case (_, elems) => val items = elems.toSeq.sortBy(_._1) val len = items.length for { i <- 0 until len - 1 j <- i + 1 until len } yield ((items(i)._1, items(j)._1), items(i)._2 * items(j)._2) }.groupByKey().mapValues(_.sum) } def main(args: Array[String]): Unit = { val sc = Helpers.getSc val docs = sc.makeRDD(Seq( IndexedDocument(1, "A A B C".split(" ")), IndexedDocument(2, "B D D".split(" ")), IndexedDocument(3, "A B B E".split(" ")) )) pairwise_document_similarity(docs).foreach(println) }}
阅读全文
0 0
- spark或者mapreduce文档相似度计算
- 大规模文档相似度计算—基于MapReduce框架
- 大规模文档相似度计算—基于MapReduce框架
- spark mllib 中的tf-idf算法计算文档相似度
- lsi计算文档相似度
- doc2vec计算文档相似度
- 计算文档的相似度
- 使用Spark实现相似度计算
- 计算两个文档的相似度
- 使用gensim计算文档的相似度
- gensim similarity计算文档相似度
- NLP计算文档相似度之doc2vec
- NLP计算文档相似度之LSH
- 如何计算两个文档的相似度
- Mapreduce 矩阵相乘应用--计算文本间的相似度
- 华为OJ 计算字符串相似度或者编辑距离 JAVA
- TDW千台Spark千亿节点对相似度计算
- TDW千台Spark千亿节点对相似度计算
- ubuntu文档保存出现的一些错误
- 不要重新定义继承而来的缺省参数值
- linux命令---sort
- hdu 1272 判断是否为一棵无向树
- android studio导入第三方库和demo
- spark或者mapreduce文档相似度计算
- Python使用数据库
- Sql Server 的crud(增删改查)以及一些简单的嵌套查询
- URAL 1553Caves and Tunnels(树链剖分-点更新-区间最值查)
- ios-NSTimer定时器
- HDU 5934 Bomb(强连通分量缩点)
- 常用命令记录
- CC2640R2 ANCS
- 近期遇到小知识点总结