大规模文档相似度计算—基于MapReduce框架
来源:互联网 发布:手机版数据库 编辑:程序博客网 时间:2024/06/05 23:46
图1. 建立倒排索引计算文档相似度(来源于参考文献[1])
上述方法虽然避免了计算相似度为0的文档之间的相似度,但是当有些word对应的文档数很大时,就会出现严重的数据倾斜问题。如果如图2所示中word “B” 对应文档数有8个, 在该节点下需计算8*(8-1)/2=28个文档对之间的相似度。
图2 建立倒排索引
当某个word对应的文档个数很多时,一种解决思路是采用矩阵分块的思想,将其打散到多个节点,分别进行处理[2]。令M表示一个节点上最多可以处理的文档对个数,blocksize表示一个块中有多少个文档,blocknum表示分多少块,docnumi表示wordi对应的文档个数,则有:
令doc_vec表示包含word的文档-权重向量,di表示向量第i个元素。Bi表示di划分到块的序号, 计算公式为:
然后依次遍历分块,对每个di重新构造blocknum个(newkey,newvalue)对,其中
具体过程参见图2. 这样每个节点保证不会超过M个文档对需要处理,提升了运算效率。然后在reduce阶段对相同文档对之间的相似度相加,最终得到相似度不为0的两两文档之间的相似度。
图3 分块索引
图4 reduce阶段计算文档之间的相似度
参考文献
1. Tamer Elsayed, Jimmy Lin, Douglas W. Oard. Pairwise Document Similarityin Large Collections with MapReduce. Proceedings of ACL-08:HLT, pp265-268.
2. http://blog.csdn.NET/lilyth_lilyth/article/details/9269693
- 大规模文档相似度计算—基于MapReduce框架
- 大规模文档相似度计算—基于MapReduce框架
- spark或者mapreduce文档相似度计算
- WMD:基于词向量的文档相似度计算
- lsi计算文档相似度
- doc2vec计算文档相似度
- 计算文档的相似度
- 自然语言处理(2)——文档相似度计算
- 基于word2vec与Word Mover Distance的文档相似度计算
- 计算两个文档的相似度
- 使用gensim计算文档的相似度
- gensim similarity计算文档相似度
- NLP计算文档相似度之doc2vec
- NLP计算文档相似度之LSH
- 如何计算两个文档的相似度
- SparkMLlib---基于余弦相似度的用户相似计算
- SparkMLlib---基于余弦相似度的用户相似计算
- 基于Map-Reduce的相似度计算
- 将QWebkit 转化到 Qt 5.8下使用QWebEngine
- linux 常用命令
- 第二章 编译系统设计
- linux下安装tar.gz
- 编程第八十五天
- 大规模文档相似度计算—基于MapReduce框架
- SDUT 2144 图结构练习——最小生成树
- python3树莓派配置
- 欢迎使用CSDN-markdown编辑器
- 【C++】学习笔记四十——引用变量
- eclipse中Android环境搭建
- CSS文本居中问题
- 关于eclipse里的项目字符集问题
- Linux 常用的帮助命令