资讯内容采集系统(大数据文本去重的方法实现及流程,欢迎批评指正)

优采云 发布时间: 2021-12-07 17:13

  资讯内容采集系统(大数据文本去重的方法实现及流程,欢迎批评指正)

  在我们的实际工作中,当我们提到分布式数据采集框架时,不免会谈到重复数据删除的问题。对于一个7*24小时不间断的爬虫框架,爬虫任务的循环调度需要做好重复数据删除,否则相同数据或者相似数据会被多次抓取,造成系统资源浪费,并且可能会推送N条与用户相同或相似的信息,导致用户体验不佳等问题。本文主要介绍大数据文本去重的实现和流程。我水平有限。帖子中如有问题,欢迎批评指正。

  在采集信息爬取系统中,大数据文本去重的过程大致如下:redis去重链接URL过滤

  正如我们上面提到的,分布式数据采集框架一般是7*24小时连续捕获的。我们只需要配置要抓取的任务,比如:任务名称、任务描述、任务优先级、是否重复抓取、抓取间隔、下载路径、重新抓取次数等,然后上传站点的初始url文件和配置文件,框架会自动调度和分发任务

  

  simhash 去重

  反应快的同学其实已经发现上述解决方案存在bug。如果站点A和站点B从站点C抓取了一条信息分发和数据同步,他们会将他们的url链接变成自己唯一的:

  在这种情况下,信息实际上是相同的信息,它仍然会被爬虫爬进我们的系统。这时候就需要我们今天的主角-simhash来处理了。

  simhash 简介

  Simhash 是 Google 用来处理大量文本以删除重复项的算法。谷歌出品,你懂的。simhash 最厉害的就是把一个文档转换成64位的字节,暂时称为特征词,然后判断重复,只需要判断它们的特征词之间的距离是否为simhash 和 hash 算法的区别。

  传统的Hash算法只负责将原创内容尽可能均匀、随机地映射到一个签名值上,原则上只相当于一种伪随机数生成算法。如果传统哈希算法生成的两个签名不相等,除了表明原创内容不相等外,不会提供任何信息,因为即使原创内容仅相差一个字节,生成的签名也很可能是非常不一样。因此,传统的Hash无法在签名的维度上衡量原创内容的相似度。SimHash 本身属于局部敏感的哈希算法,其降维生成的哈希签名可以在一定程度上表征原创内容的相似性。

  算法实现流程大致如下: 具体流程实现

  simhash算法分为5个步骤:分词、哈希、加权、合并、降维。具体流程如下:

  哈希加权合并降维

  比较相似度,计算两条信息的simhash值,那么如何计算两条simhash的相似度呢?这里介绍汉明距离的概念。汉明距离是判断文本相似度的众多标准之一。有欧几里得距离和余弦角等相似之处。有兴趣的同学可以深入研究。不管怎样,两个不同二进制值(01字符串)对应的simhash的个数就叫做两个simhash的汉明距离。举例如下:10101和00110从第1位到第5位不同,汉明距离为3。对于二进制串的a和b,汉明距离等于结果中的1的个数a XOR b 操作(通用算法)

  通过simhash算法,我们可以处理不同数据源中相似信息的去重

  留下一个问题想一想,那么在我们实际工作的应用场景中,采集程序在不断的爬取,当前爬取的信息怎么可能和已经进入数据库的海量信息相似呢?这个问题在下一部分分解

  少年出品,一定是精品

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线