网页去重思路浅析(一)

最近,由于工作需要,需要对爬虫爬下来的网页数据进行相似度去重。 那么问题来了,为什么要去重? 爬虫采集的数据可能来自各个网站,比如一个热门新闻,可能网易,搜狐,新浪,都有转载报道,如果不做任何措施,那么存储到库里就是3条数据,当然这仅仅是一个例子,假如,你有几TB或PB的数据,如果还这样,那么你的库可能有30%都是大量的重复数据,这些重复数据,一般不会给你带来任何价值,而且会占用大量的存储空间,查询和计算性能。所以这些然并卵的数据,还是需要考虑一下去重删减的步骤。 其实去重是一件说复杂也非常复杂的事情,说简单也是一件非常简单的事情。不同的情景下,可能处理的规则也是不一样,所以还得因地制宜。 大部分情况,去重一般分为如下几个步骤,网上找了个图,比较直接,如下所示:

其中分几个步骤: (1)正文抽取: 尽可能的保留文档主要信息,抛弃无关紧要的信息,一般而言,定向采集的内容会比较准确,非定向采集的内容需要考虑 如何拿到文档的主要信息,不让噪音,影响数据去重质量。 (2)特征抽取: 一般会使用分词算法,通过tf-idf词频得到前topN个特征词,当前在这之前是需要把一些禁用词给去掉的,这种方式比较 粗糙,相对来说,比较适合大部分网页数据,另外一种方式,就是培训语料库特征词,并给与权重,比如汽车这个词,在不同的类别的文章中是不一样的权重,然后分词完后,提取这些特征词,这些特征词并不一定会和前n个高频词一致,这种方式适合已知比较精确的行业或定向采集的爬虫数据里。 (3)生成指纹:其实如果数据量很小,那么完全没必要生成指纹,直接拿着特征词与库里已经有的数据的特征词做对比,求相似度即可,具体步骤:两两做比较时,把他们的特征词的共同部分提取出来个数/特征词个数多的总数,得到即为相似度,当然这是最简单有效的,而且准确率一般比较高,但是这种这种方式不太适合海量数据的去重,因为中间涉及的计算的部分太多了,所以就有了指纹一说,有了指纹以后,比较简单粗暴的方式,直接对特征词合并做md5,然后当成一个字段,存储进去,此列做索引,然后新增数据,就是判断有没有重复,比较高效,但有一定几率误杀,如果有其他能够解析的业务字段作为辅助,则比较好,最后一种方法,就是类似于google的simhash(局部敏感hash)的做法,对每个特征做加权hash映射,并降维为32或者64位特征向量,来形成指纹,最后使用海明距离来求相似度,所为海明距离,举个例子:010011和010000的海明距离就为2,其实就是求同位数0和1的差异为有多少,google的网页去重,映射向量64位特征,求海明距离3之内的文档,就是非常接近重复的数据了。当然这种方式,也是需要遍历全库做比较的,效果比较适合长文本,短文本貌似特性提取比较不太好,性能方面,没有测过,不过貌似效率还是非常高的,值得探究。 (4)以上几步大致就是通用的网页去重套路了,当然每步都可以有多种定制实现思路,与自己的业务结合,找到最优的去重策略。

原文发布于微信公众号 - 我是攻城师(woshigcs)

原文发表时间:2015-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏月色的自留地

从锅炉工到AI专家(11)(END)

24770
来自专栏CDA数据分析师

资源 | 工程师必备!最好的九张机器学习;深度学习代码速查

作者在 Github 上建立了一个代码速查表,对机器学习初学者来说是不可多得的一个资源。文章中的高清图片附加百度网盘,读者可从中浏览,也可以点击项目地址或文后的...

24490
来自专栏人工智能头条

25个Java机器学习工具库

33960
来自专栏我是攻城师

25个Java机器学习工具&库

42580
来自专栏PPV课数据科学社区

【数据挖掘】rattle:数据挖掘的界面化操作

R语言是一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。这里的统计计算可以是数据分析、建模或是数据挖掘等,通过无数大牛提供的软件包,...

36360
来自专栏数据小魔方

R语言可视化——多边形与数据地图填充

ggplot函数中有一类特殊的图表类型叫做多边形,很难用传统的视角来定义它属于哪一类图表,因为它能够呈现信息多种多样。 特别是在做某些比较高阶的图表——地图时,...

36340
来自专栏CSDN技术头条

25个Java机器学习工具&库

本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法。这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用。W...

25980
来自专栏机器之心

业界 | 微软RobustFill:无需编程语言,让神经网络自动生成程序

选自Microsoft Research blog 作者:Rishabh Singh等 参与:李泽南 长久以来,摆脱编程语言的束缚,让计算机自我生成程序一直是开...

34750
来自专栏机器学习-数据挖掘

基于多维数据频繁项挖掘的母机隐患排查

本文首先通过“啤酒与尿布”的故事入手,介绍机器学习中常见问题——频繁项挖掘的应用背景;其次,简要介绍频繁项挖掘最常用的两种算法——Apriori算法和FP-gr...

26160
来自专栏AI科技评论

动态 | ACL 2018 公布四篇最佳 demo 候选论文,三篇论文第一作者来自中国

雷锋网 AI 科技评论按:7 月 9 日,自然语言处理顶会 ACL 公布了最佳 demo 论文的四篇候选论文,名单如下:

14940

扫码关注云+社区

领取腾讯云代金券