SHINGLE
2012-11-09 13:55
295 查看
shingle是指文档中一组邻近的 有序词。基于shingle的算法要求从文档中选取一系列 shingle,然后把shingle映射到Hash表中,一个 shingle对应一个Hash值,最后统计Hash表中相同的shingle比率,作为判定文本相似度依据,比率越高,相
似度越高。
下面就用维基百科的一个浅显例子来讲解shingle算法的原理,这个比较权威。
比如,一个文档
"a rose is a rose is a rose"
分词后的词汇(token,语汇单元)集合是
(a,rose,is,a,rose,is, a, rose)
那么w=4的4-shingling,即四个邻近有序词的组合,它们形成这个么一个类似数组的集合集合:
{ (a,rose,is,a), (rose,is,a,rose), (is,a,rose,is), (a,rose,is,a), (rose,is,a,rose) }
如上分别以一个词的开后向后扩展3个词,一共4个词,我们把它们编号分别为1-5号。然后往掉重复 的子集合,我们发现2号,4号,5号这四个组合里面的词是一样的,所以只保存2号,往掉4号,5号,那么就 只留下1号,2号,3号,结果如武汉网站建设哪家好下:
{ (a,rose,is,a), (rose,is,a,rose), (is,a,rose,is) }
给定shingle的大小,两个文档A和B的相似度 r 定义为:
r(A,B)=|S(A)∩S(B)| / |S(A)∪S(B)|
意思是两个文档相交的shingle数及相同的shingle数除以两个文档相加的shingle数,,再精练一点就是两 个文档的shingle数的交集除以并集,由此可见相似度r是一个0-1之间的数,r值越来,相似度越高。
似度越高。
下面就用维基百科的一个浅显例子来讲解shingle算法的原理,这个比较权威。
比如,一个文档
"a rose is a rose is a rose"
分词后的词汇(token,语汇单元)集合是
(a,rose,is,a,rose,is, a, rose)
那么w=4的4-shingling,即四个邻近有序词的组合,它们形成这个么一个类似数组的集合集合:
{ (a,rose,is,a), (rose,is,a,rose), (is,a,rose,is), (a,rose,is,a), (rose,is,a,rose) }
如上分别以一个词的开后向后扩展3个词,一共4个词,我们把它们编号分别为1-5号。然后往掉重复 的子集合,我们发现2号,4号,5号这四个组合里面的词是一样的,所以只保存2号,往掉4号,5号,那么就 只留下1号,2号,3号,结果如武汉网站建设哪家好下:
{ (a,rose,is,a), (rose,is,a,rose), (is,a,rose,is) }
给定shingle的大小,两个文档A和B的相似度 r 定义为:
r(A,B)=|S(A)∩S(B)| / |S(A)∪S(B)|
意思是两个文档相交的shingle数及相同的shingle数除以两个文档相加的shingle数,,再精练一点就是两 个文档的shingle数的交集除以并集,由此可见相似度r是一个0-1之间的数,r值越来,相似度越高。
相关文章推荐
- 动易2006序列号破解算法公布
- C#数据结构与算法揭秘二
- JavaScript 组件之旅(二)编码实现和算法
- 将15位身份证补全为18位身份证的算法示例详解
- C++算法系列之日历生成的算法代码
- 1 2 3 4 5 6 7 8 9 = 110的java实现
- Sedgewick之巨著《算法》,与高德纳TAOCP一脉相承
- 算法的时间复杂度
- 算法导论:选择排序的原理与实现
- PHP实现四种常用的排序算法
- 图解插入排序算法
- 一些常见算法的JavaScript实现
- 平方根sqrt()函数的底层算法效率
- 二叉搜索树的一些相关算法介绍
- 欧几里德算法(辗转相处法)练手
- 面试中常见的一些算法问题
- 计算机编程中一些重要的算法
- 合并排序算法解说与例子
- JavaScript排序算法之冒泡排序
- JavaScript排序算法之插入排序