minhash算法检索相似文本_文本去重之MinHash算法——就是多个hash函数对items计算特征值,然后取最小的计算相似度...

MinHash是一种用于快速估算两个集合相似度的算法,由Andrei Broder提出,常用于检测重复网页和大规模聚类问题。通过定义哈希函数h(x)和最小哈希值hmin(S),可以利用Jaccard指数计算相似度。MinHash分为使用多个哈希函数和单个哈希函数两种方法,适合处理海量文档的相似度计算,降低计算复杂度。
摘要由CSDN通过智能技术生成

1.概述

跟SimHash一样,MinHash也是LSH的一种,可以用来快速估算两个集合的相似度。MinHash由Andrei Broder提出,最初用于在搜索引擎中检测重复网页。它也可以应用于大规模聚类问题。

2.Jaccard index

在介绍MinHash之前,我们先介绍下Jaccard index。

也就是说,集合A,B的Jaccard系数等于A,B中共同拥有的元素数与A,B总共拥有的元素数的比例。很显然,Jaccard系数值区间为[0,1]。

3.MinHash

先定义几个符号术语:

h(x):  把x映射成一个整数的哈希函数。

hmin(S):集合S中的元素经过h(x)哈希后,具有最小哈希值的元素。

那么对集合A、B,hmin(A) = hmin(B)成立的条件是A ∪ B 中具有最小哈希值的元素也在 ∩ B中。这里

有一个假设,h(x)是一个良好的哈希函数,它具有很好的均匀性,能够把不同元素映射成不同的整数。

所以有,Pr[hmin(A) = hmin(B)] = J(A,B),即集合A和B的相似度为集合A、B经过hash后最小哈希值相

等的概率。

有了上面的结论,我们便可以根据MinHash来计算两个集合的相似度了。一般有两种方法:

第一种:使用多个hash函数

为了计算集合A、B具有最小哈希值的概率,我们可以选择一定数量的hash函数,比如K个。然后用这K个hash函数分别对集合A、B求哈希值,对

每个集合都得到K个最小值。比如Min(A)k={a1,a2,...,ak}&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值