网络爬虫之网页排重:语义指纹

管理员账号

2017-05-05

小编说:网络爬虫让我们高效地从网页获取到信息,但网页的重复率很高,网页需要按内容做文档排重,而判断文档的内容重复有很多种方法,语义指纹是其中比较高效的方法。

现代社会,有效信息对人来说就像氧气一样不可或缺。互联网让有效信息的收集工作变得更容易。当你在网上冲浪时,网络爬虫也在网络中穿梭,自动收集互联网上有用的信息。

自动收集和筛选信息的网络爬虫让有效信息的流动性增强,让我们更加高效地获取信息。随着越来越多的信息显现于网络,网络爬虫也越来越有用。

不同的网站间转载内容的情况很常见。即使在同一个网站,有时候不同的URL地址可能对应同一个页面,或者存在同样的内容以多种方式显示出来,所以,网页需要按内容做文档排重。

例如,一个企业商品搜索。搜商品名,有一家公司发的商品名字都一样,结果这家公司发的商品都显示在前面,但是要求一家企业只显示一条相似的商品在前面,可以把近似重复的文档权重降低,只保留一个文档不降低权重。

判断文档的内容重复有很多种方法,语义指纹的方法比较高效。语义指纹是直接提取一个文档的二进制数组表示的语义,通过比较相等来判断网页是否重复。语义指纹是一个很大的数组,全部存放在内存会导致内存溢出,普通的数据库效率太低,所以采用内存数据库Berkeley DB。可以通过Berkeley DB判断该语义指纹是否已经存在。另外一种方法是通过布隆过滤器来判断语义指纹是否重复。

提取网页语义指纹的方法是:从净化后的网页中,选取最有代表性的一组关键词,并使用该关键词组生成一个语义指纹。通过比较两个网页的语义指纹是否相同来判断两个网页是否相似。

网络上一度出现过很多篇关于“罗玉凤征婚”的新闻报道,其中的两篇新闻内容对比如下表。

对于这两篇内容相同的新闻,有可能提取出同样的关键词:“罗玉凤”“征婚”“北大”“清华”“硕士”,这就表示这两篇文档的语义指纹也相同。

为了提高语义指纹的准确性,需要考虑到同义词,例如,“北京华联”和“华联商厦”可以看成相同意义的词。最简单的判断方法是做同义词替换。把“开业之初,比这还要多的质疑的声音环绕在北京华联决策者的周围”替换为“开业之初,比这还要多的质疑的声音环绕在华联商厦决策者的周围”。

设计同义词词典的格式是:每行一个义项,前面是基本词,后面是一个或多个被替换的同义词,请看下面的例子。

华联商厦 北京华联 华联超市

这样可以把“北京华联”或“华联超市”替换成“华联商厦”。对指定文本,要从前往后查找同义词词库中每个要替换的词,然后实施替换。同义词替换的实现代码分为两步。首先是查找Trie树结构的词典过程。

然后是同义词替换过程。

语义指纹生成算法如下所示。

第1步:将每个网页分词表示成基于词的特征项,使用TF*IDF作为每个特征项的权值。地名、专有名词等,名词性的词汇往往有更高的语义权重。

第2步:将特征项按照词权值排序。

第3步:选取前n个特征项,然后重新按照字符排序。如果不排序,关键词就找不到对应关系。

第4步:调用MD5算法,将每个特征项串转化为一个128位的串,作为该网页的指纹。

调用fseg.result.FingerPrint中的方法。

MD5可以将字符串转化成几乎无冲突的hash值,但是MD5速度比较慢,MurmurHash或者JenkinsHash也可以生成冲突很少的hash值,在Lucene的企业搜索软件Solr1.4版本中提供了JenkinsHash实现的语义指纹,叫作Lookup3Signature。调用MurmurHash生成64位的Hash值的代码如下所示。

本文选自《网络爬虫全解析——技术、原理与实践》,了解本书详情请点击阅读原文。

本周正在进行一项热门活动——《尽在双11》阿里专家问答!《尽在双11》的作者乐田、仁重正通过开源问答来答复读者有关《尽在双11》这本书的疑问~更多好问题,期待你来问!(点击文字直接跳转至活动页面)

读者评论

相关专题

相关博文

  • Spark四大特征分析介绍

    Spark四大特征分析介绍

    Jessica瑾妞 2018-03-21

    Spark是一种基于内存的、分布式的、大数据处理框架,在 Hadoop 的强势之下,Spark凭借着快速、简洁易用、通用性以及支持多种运行模式四大特征,冲破固有思路成为很多企业标准的大数据分析框架。 1 快速 面向磁盘的MapRed...

    Jessica瑾妞 2018-03-21
    10789 0 1 1
  • 数据治理“知易行难”?来看看《数据治理实践者手记》

    数据治理“知易行难”?来看看《数据治理实践者手记》

    博文小编 2024-04-22

    当前,在全球信息化快速发展的背景下,我国对数据治理的重视程度显著提升,各地纷纷成立大数据局、数据交易所,同时数据资产入表的工作也在尝试和快速推进中。 这些动作不仅标志着数据治理在政策和战略层面得到重视,也反映了数据作为一种新的生产要...

    博文小编 2024-04-22
    231 0 1 0
  • 用Python构建大数据推荐系统:一个世界500强企业的成功案例

    用Python构建大数据推荐系统:一个世界500强企业的成功案例

    博文小编 2023-06-02

    推荐系统是大数据时代的利器,它能够为企业提升用户体验、增加用户粘性、促进销售转化、提高营销效率等。但是,搭建一个成功的推荐系统并不容易,它需要综合考虑多方面的因素,并根据业务场景、用户需求、数据变化等不断地进行迭代和优化。 本文将以...

    博文小编 2023-06-02
    391 0 0 0