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

Posted ybdesire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Google对simhash的用法论文读书笔记的主要内容,如果未能解决你的问题,请参考以下文章

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

海量数据去重之SimHash算法简介和应用

海量数据去重之SimHash算法简介和应用

2 读书笔记之论文感想

Raft论文读书笔记

SRE Google 运维解密读书笔记一:SRE 方法论概述