Google对simhash的用法论文读书笔记
Posted ybdesire
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google对simhash的用法论文读书笔记相关的知识,希望对你有一定的参考价值。
1. 引入
最近需要对xml计算hash值,做分类与相似性搜索,查资料时正好看了google在2007年发表的“Detecting Near-Duplicates for Web Crawling”,有一些收获,记录一下。
2. 为什么用simhash
- simhash使用比较短的位数,就能打败(达到相同的效果)其他hash值
- cryptographic hash(比如sha1或者md5)会让相似输入(文本)的hash值区别很大
- simhash会让相似输入(文本)的hash值区别很小
3. 多特征hash融合
- 对每个特征(具体见6)计算hash后,得到hash_i
- 叠加hash_i的每一位;若第j位为1,则该位叠加值加一;若第j位为0,则该位叠加值减一
- 最终用符号正负来表示1/0
优点:多个特征不需要排序就能直接计算hash值,提高计算效率
4. (批量)相似性搜索的思路
- 线性搜索,与库里所有hash值都对比计算汉明距离,耗时
- 先计算/穷举出汉明距离在3之内的所有可能的向量,然后做直接对比
- 巧妙的通过某些位数的的值,将库里的hash值分表存储与查询
- 批量搜索,就用mapreduce来实现
这些思路,都是2007年的当时的思路,并非目前的最优解(直接用相似性搜索引擎)。
5. hash值压缩
- 他这里hash值是存储到文件系统的,hash值压缩后能节约存储,提高相似性搜索速度。
- 压缩过程主要是使用XOR运算结合霍夫曼编码等方法来实现
6. 从文档中提取了哪些特征
整个求simhash的流程,是先从文档中,提取出features。然后对各个feature求simhash,再用3中的方法把多个hash值融合为一个。
那么,能从文档中,提取出哪些feature呢?
- 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)
- 文档向量
比如IDF向量,原文中也提到了很多类似IDF的其他向量。
- 链接信息
比如从哪几个page中的url能连接到该page
- Anchor Text
Anchor Text就是html的a元素标记的可点击的文本。参考2中有详细讲解。
- 段落
参考
- https://www.cs.princeton.edu/courses/archive/spring13/cos598C/broder97resemblance.pdf
- Anchor Text. https://moz.com/learn/seo/anchor-text
以上是关于Google对simhash的用法论文读书笔记的主要内容,如果未能解决你的问题,请参考以下文章
SRE Google 运维解密读书笔记一:SRE 方法论概述