永发信息网

如何使用MapReduce计算相似度

答案:1  悬赏:0  手机版
解决时间 2021-03-30 19:20
  • 提问者网友:ミ烙印ゝ
  • 2021-03-30 07:15
如何使用MapReduce计算相似度
最佳答案
  • 五星知识达人网友:老鼠爱大米
  • 2021-03-30 08:05
由于在索引中的数据结构是倒排索引,其结构如下:
倒排索引(
举例如下:
Word occurrence@DocID........
cat 6@Doc1 3@Doc2 4@Doc3... etc
Hot 9@Doc1 2@Doc3 10@Doc5... etc
倒排索引是MapReduce的关键部分。我们需要解决的问题是将两个文档向量(也就是将要进行比较的文档)输入到reducer中。
我们要考虑的是的相似性。如何获得他们对应的向量并传给reducer?
相当简单~
Mapper的输出应该是这样的:
Key: Value:
所以对上面的两个文档,对应第一个word cat将是:
Key: Value:<6, 3>
通过这样的方法,在reducer中,你们会有这些值的一个list,对两个文档中出现的word的向量,这就可以在reducer中计算相似度了。
当然,也可以将occurrence改称TF或者TF-IDF向量或者其他什么东西。这里的关键就是要得到正确的KEY-VALUE。
在reducer这儿,你可以获得:
Key: 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中输出他们
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯