如何使用MapReduce计算相似度

作者: 朱小虎XiaohuZhu | 来源:发表于2014-10-13 14:30 被阅读998次

Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。
作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth(行业智库培训)等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。

Cosine similarity


image

由于在索引中的数据结构是倒排索引,其结构如下:

倒排索引(<word doc_i1 doc_i2 doc_ik ...>

举例如下:

Word occurrence@DocID........
cat 6@Doc1 3@Doc2 4@Doc3... etc
Hot 9@Doc1 2@Doc3 10@Doc5... etc 

倒排索引是MapReduce的关键部分。我们需要解决的问题是将两个文档向量(也就是将要进行比较的文档)输入到reducer中。

我们要考虑的是<Doc1, Doc3>的相似性。如何获得他们对应的向量并传给reducer?

相当简单~

Mapper的输出应该是这样的:

Key:<Document_one, Document_two> Value:<occurrence, occurrence>

所以对上面的两个文档,<Doc1, Doc3>对应第一个word cat将是:

Key:<doc1, doc3> Value:<6, 3>

通过这样的方法,在reducer中,你们会有这些值的一个list,对两个文档中出现的word的向量,这就可以在reducer中计算相似度了。

当然,也可以将occurrence改称TF或者TF-IDF向量或者其他什么东西。这里的关键就是要得到正确的KEY-VALUE。

在reducer这儿,你可以获得:

Key: <doc1, doc3> Value: [<6, 4>, <9, 2>]

因此,余弦相似度可以直接通过doc1 (6, 9)doc3 (4, 2)点乘获得:

(6*4)+(9*2)... etc for larger vectors

分母部分可以这样计算:

sqrt(6^2 + 9^2) * sqrt(4^2 + 2^2) * ...

你可以在reducer中进行这个计算,因为你有两个文档的向量。当然在你的值计算完后,你可以以任何方式从reducer中输出他们

相关文章

  • 如何使用MapReduce计算相似度

    Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist...

  • MapReduce

    MapReduce介绍 在Hadoop中计算模型使用的是MapReduce。Hadoop MapReduce计算编...

  • Some Questions about MapReduce

    一、MapReduce作业在计算过程中会使用和产生哪些数据?这些数据是如何存储的,目前MapReduce提供哪些安...

  • 相似度测量

    在分类聚类算法,推荐系统中常常需要计算物品之间的相似度,而如何衡量物品之间的相似度,下文将介绍几种常用的计算方法。...

  • 计算句子相似度

    计算句子相似度,①常用方法有基于语义和词序相似度计算方法,②基于关系向量模型基于语义和词序的句子相似度计算方法简介...

  • NLP详解

    (一)余弦相似度、向量空间模型 1、相似度 • 相似度度量:计算个体间相似程度• 相似度值越小,距离越大,相似度值...

  • Python 使用sklearn计算余弦相似度

    背景 在计算相似度时,常常用到余弦夹角来判断相似度,Cosine(余弦相似度)取值范围[-1,1],当两个向量的方...

  • MapReduce工作流程最详细解释

    MapReduce是我们再进行离线大数据处理的时候经常要使用的计算模型,MapReduce的计算过程被封装的很好,...

  • 两个不等长序列距离计算之DTW

    目前我理解的DTW,是计算两个不等长序列之前的相似度,至于如何从距离转化为相似度,还没想好,不过先把计算两者之间距...

  • 图像相似度计算

    利用直方图特征计算图像之间的相似度,得到相关矩阵

网友评论

    本文标题:如何使用MapReduce计算相似度

    本文链接:https://www.haomeiwen.com/subject/cmrptttx.html