Google对simhash的用法论文读书笔记

1. 引入

最近需要对xml计算hash值,做分类与相似性搜索,查资料时正好看了google在2007年发表的“Detecting Near-Duplicates for Web Crawling”,有一些收获,记录一下。

2. 为什么用simhash

  1. simhash使用比较短的位数,就能打败(达到相同的效果)其他hash值
  2. cryptographic hash(比如sha1或者md5)会让相似输入(文本)的hash值区别很大
  3. simhash会让相似输入(文本)的hash值区别很小

3. 多特征hash融合

  1. 对每个特征(具体见6)计算hash后,得到hash_i
  2. 叠加hash_i的每一位;若第j位为1,则该位叠加值加一;若第j位为0,则该位叠加值减一
  3. 最终用符号正负来表示1/0

优点:多个特征不需要排序就能直接计算hash值,提高计算效率

4. (批量)相似性搜索的思路

  1. 线性搜索,与库里所有hash值都对比计算汉明距离,耗时
  2. 先计算/穷举出汉明距离在3之内的所有可能的向量,然后做直接对比
  3. 巧妙的通过某些位数的的值,将库里的hash值分表存储与查询
  4. 批量搜索,就用mapreduce来实现

这些思路,都是2007年的当时的思路,并非目前的最优解(直接用相似性搜索引擎)。

5. hash值压缩

  1. 他这里hash值是存储到文件系统的,hash值压缩后能节约存储,提高相似性搜索速度。
  2. 压缩过程主要是使用XOR运算结合霍夫曼编码等方法来实现

6. 从文档中提取了哪些特征

整个求simhash的流程,是先从文档中,提取出features。然后对各个feature求simhash,再用3中的方法把多个hash值融合为一个。

那么,能从文档中,提取出哪些feature呢?

  1. n-gram

原文中用的是shingle这个词来表示特征,从参考1中,得到shingle的定义如下

  • A contiguous subsequence contained in D is called a shingle
    就是D中的连续子序列,也就是N-Gram,比如 4-gram中的一个shingle例子:(a,rose,is,a)
  1. 文档向量

比如IDF向量,原文中也提到了很多类似IDF的其他向量。

  1. 链接信息

比如从哪几个page中的url能连接到该page

  1. Anchor Text

Anchor Text就是HTML的a元素标记的可点击的文本。参考2中有详细讲解。

  1. 段落

参考

  1. https://www.cs.princeton.edu/courses/archive/spring13/cos598C/broder97resemblance.pdf
  2. Anchor Text. https://moz.com/learn/seo/anchor-text
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值