1 前言

最简单的检测重复网页的方法就是对每一个网页计算用指纹生成算法出一个简洁的“指纹”。接着,当两个网页的“指纹”一样时,我们就进一步地去比对它们的网页内容是否一样,但是这个最简单的办法在捕捉“相似的副本”方面是失败的。在许多情况下,一个网页只有几个字符与另一个网页不同——比如一篇文章最后落款的日期不同,但是文章内容完全一致。面对这种情况,我们就要去识别两个网页之间的相似度来让我们只需检索其中一个网页。

2 直接计算Jaccard系数的shingling算法

首先给定一个正整数k,和文档d。我们定义“the k-shingle of d”为“文档d中所有长度为k的连续词序列”,例如:

文档d: "a rose is a rose is a rose"

the 4-shingle of d(k=4是在文档相似度检测方面比较经典的值):(a rose is a)、(rose is a rose)、(is a rose is)。其中前两个shingle(小瓦片)都出现了两次。

很直观地,两个文档的shingle集合很接近,那么它们也就是相似的。但是我们想要更精确,然后就发展出了一种高效计算和比对互联网上所有网页的方法,那就是我们令S(dj)为文档dj的shingle集合;J(S(d1),S(d2))为两个文档的shingle集的Jaccard系数(交集 / 并集),我们用这个Jaccard系数作为两个网页之间的相似度,假如这个相似度大于一阈值(比如0.9),我们就将它们判定为相似网页。

3 MinHash估计Jaccard系数的shingling算法

上一部分所述的直接计算两个文档的shingle集的jaccard系数虽然精确,但是通常一个文档可以分出上千个shingle,两个文档放一起计算jaccard系数需要逐一比对shingle,计算量会很大,更别说去和互联网上大量的网页去比对。所以,用MinHash来估计jaccard系数的方法被提出。该方法基于一个结论:

J(S(d1),S(d2))=P(x1=x2)

即两个集合的jaccard系数等于两个集合的MinHash值相等的概率。该算法流程如下:

(1)用n个哈希函数来哈希S(d1),S(d2)得到哈希集H(d1),H(d2);

(2)用每次hash过程后的哈希序列第一个哈希值用来表示该集合;

(3)n次hash后,每个文档都会生成一个n维的“签名”,两个n维签名序列间对应相等的个数(可以用Hamming Distance来计算)就是Jaccard的估计值。

原来计算Jaccard系数每一个shingle都要逐一比对另一文档的所有shingle,计算量非常之大,现在只需比对对应位置的数值,比对n次,用一个概率来估计这个Jaccard系数,实现了文档特征向量的降维。

网页重复度检测——shingling算法相关推荐

  1. python在线考试系统设计csdn下载_一种通用的网页相似度检测算法

    如果我们需要在海量的结构未知的网页库中找到和指定的网页相似度比较高的一些网页,我们该怎么办呢?本文提出的"一种通用的网页相似度检测算法"就是专门解决这个问题. 算法如下: 1.提取 ...

  2. php文章重复度检测,百度如何判断网页文章的重复度?两个页面相似度确认方法介绍...

    在这个科技高度发达的时代,百度已经成为人们能获取消息的主要途径.但如今的百度,到处充斥着一些重复的内容,对用户的访问造成很大的困扰.因此,百度需要对网页重复进行判断,对重复的网页,只选取一些高质量的我 ...

  3. c语言代码重复度检测,C语言过滤重复文本数据+代码【原创】

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [原创] #include"stdio.h" #include"stdlib.h" #include"s ...

  4. php正文重复度,百度如何判断网页文章的重复度?两个页面相似度确认方法介绍...

    在这个科技高度发达的时代,百度已经成为人们能获取消息的主要途径.但如今的百度,到处充斥着一些重复的内容,对用户的访问造成很大的困扰.因此,百度需要对网页重复进行判断,对重复的网页,只选取一些高质量的我 ...

  5. python+openCV使用SIFT算法实现印章的总相似度检测

    python实现,使用SIFT算法和文字相似度检测算法,并使用了pyqt5做的印章相似度检测工具,还有很大优化空间,对于我这水平费了不少力气,记录一下. 首先整体流程是预建了一个印章库,包含若干张图片 ...

  6. 数据清洗:相似重复记录检测算法SNM及其Python实现

    1. 相似重复记录删除   相似重复记录是指数据库中存在这样的两条记录R1R_{1}R1​和R2R_{2}R2​,他们的内容相同或者相似,且都对应着同一个现实实体,则记录对<R1,R2>& ...

  7. shingling算法——提取特征,m个hash函数做指纹计算,针对特征hash后变成m维向量,最后利用union-find算法计算相似性...

    shingling算法用于计算两个文档的相似度,例如,用于网页去重.维基百科对w-shingling的定义如下: In natural language processing a w-shinglin ...

  8. 文本相似度计算——Simhash算法(python实现)

    互联网网页存在着大量重复内容,必须有一套高效的去重算法,否则爬虫将做非常多的无用功,工作时效性无法得到保证,更重要的是用户体验也不好.业界关于文本指纹去重的算法众多,如 k-shingle 算法.go ...

  9. Shingling算法-简单说

    什么是Shingling算法 shingling算法用于计算两个文档的相似度,例如,用于网页去重.维基百科对w-shingling的定义如下: In natural language processi ...

最新文章

  1. Facebook 开源了一整套重要的 Linux 内核组件与工具!
  2. Angular2入门:TypeScript的装饰器
  3. 计算机组成原理国防科大课件,中科大计算机组成原理课件ppt.pdf
  4. vue cli 对解析的html内容的图片添加样式
  5. python 彩票分析_294期钱哥福彩3D预测奖号:杀号分析
  6. 中国如何在 AI 芯片实现弯道超车?
  7. 2018只剩32天,动着心思想跳槽的你,还要YY到什么时候
  8. U盘不显示文件但有内存
  9. 惠普服务器修改ilo密码,HP 修改ILO密码
  10. 从破解运动世界校园学习模拟器检测与Xposed检测
  11. Excel学习日记:L33-二八法则的神奇图表-柏拉图(帕累托图)
  12. k-近邻算法 From Machine Learning
  13. Allegro如何复用软件设置参数Parameters
  14. Spring 实战(第 5 版)
  15. VIVADO使用——打开已有文件
  16. 蒙特卡洛树搜索 棋_蒙特卡罗树搜索赢得黑白棋
  17. 基于OpenLayer的室内地图前端设计开发
  18. c语言莹源码,exp5/wc/client.c · 张雪莹20175227/ISSDF - Gitee.com
  19. 读者写者模型---读优先与写优先
  20. 答:怎样把图片文件转换成.ico图标文件?

热门文章

  1. 正确处理Ordered Broadcasts
  2. 每次打开计算机是快速访问,如何关闭Win10电脑的快速访问功能
  3. 计算机辅助遥感制图的基本过程,项目八-遥感专题图的制作
  4. 摩拜服务器维护,摩拜单车云服务器
  5. Android布局深究(六)——AbsoluteLayout(绝对布局)
  6. 安卓,运维,大数据,前端,java,区块链学习路线
  7. python opencv如何读取透明png图片以及如何编辑透明度
  8. GitHub标星8W,Google面试指南
  9. 关于python中Y组合子的问题讨论
  10. 蓝桥杯:旅行家的预算 贪心解法