错误博客( cuowu.com )发布于 2019-06-10 19:19:09

页面去除噪声

页面去除噪声教程。

一些网页中含有文本、链接和图片,但这些内容并不是和页面的主要内容直接相关的。例如,图3-16中,网页含有一个新的新闻。页面的主要内容用黑色方框括起来了。内容块(content block)在页面中只占20%的显示区域,余下的部分包括徽标、广告、图片、导航链接、服务(如搜索和警告)以及各种各样的信息,如版权。从搜索引擎的角度看,这些多余的内容绝大多数都是噪声(noise),对页面的排序会起负面的作用。搜索引擎中使用的页面表示的主要组件是基于词频统计的,页面中存在大量的与主要话题无关的词就成为一个问题。因此,出现了用于对网页中的内容块进行检测的技术,同时忽略页面上的其他内容或者在索引时降低其他内容的重要性。

simhash指纹处理过程

Finn等人(2001)提出了一个非常简单的方法,该方法是基于对HTML标签的观察得到的方法,在网页中主要内容部分的文本会比网页中附加内容的文本中含有更少量的HTML标签。图3-17(文档斜率曲线,document slope curve)中,给出了图3-16所示的网页中标签的累加式分布。页面的主要内容对应于该分布中间的“高地”部分。平坦的区域相对较小,这是由于页面的HTML源文件中含有大量的格式和外观描述的信息。

对该分布中最大的平坦区域进行检测的一种方法是,使用二进制位序列对网页进行表示,bn=1表示第n个词素是一个标签,否则bn=0。大多数用于文本格式的标签,如字体变化、标题和表格标签,在这里被忽略掉(可以用0来表示)。这样,主要内容块的检测可以看作是一个优化问题,可以找到i和j两个值,用于最大化低于i和高于j的标签数量以及在i和j之间的非标签词素的数量,相应的就是最大化对应的目标函数:

网页中的主要内容块

标签统计用于区别网页中的文本块

N是页面中词素的数量。可以通过粗略地设定可能的i和j的值,计算这个目标函数。可以看到,只有非内容块中文本词素的比例小于标签的比例,这个过程才会起作用,而不适用于图3-17中的网页。Pinto等人(2002)对这个方法进行了修改,使用一个文本窗口对文档斜率曲线中的低斜率部分进行搜索。

网页的结构也可以直接用于识别页面的内容块。用浏览器显示一个网页,HTML解析器使用标签解释页面指定的结构,并创建文档对象模型(DOM)表示。DOM表示的类似于树的结构,可以用来识别网页中主要的部分。图3-18给出了图3-16中网页的部分DOM结构。该结构中含有新闻文本的部分通过注释 cnnArticalContent 给出。

Gupta等人(2003)提出了一种方法,递归遍历DOM树,使用不同的过滤技术来删除和修改树中的节点,只留下内容部分。HTML中的图片、脚本等元素通过简单的过滤就可以去除。很多复杂的过滤技术可以用于去除广告、链接列表及没有内容的表格。

示例网页的DOM结构中的一部分

DOM结构提供了网页中各组成部分的有用信息,但它很复杂,并且是逻辑和布局组成部分的混合。如图3-18中,文章的内容隐藏在HTML表格(TABLE标签)中,在一行(TR标签)的表格单元(TD标签)中。这时候使用表格是为了规定网页的布局,而不是在语义上对数据进行关联。识别页面中内容块的另外一种方法侧重于页面的布局和外观。换句话说,视觉特征,如块的位置、使用的字体大小、字体和背景颜色,以及分隔符(如横线和空格),这些都用于定义显示的网页中用户明显看到的信息块。Yu等人(2003)中提出了一个算法,从DOM树和视觉特征构建出可视块的层次结构。

上述讨论的第一个算法,即基于标签分布的方法,对于只有单一内容块的网页来说非常有效。使用DOM结构和视觉分析的算法,可以处理可能有多个内容块的网页。在有较多内容块的情况下,索引处理中可以利用每个块的相对重要性来生成更加有效的表示。判断网页中内容块重要性的一个方法是训练一个分类器(classifier),根据视觉和内容特征分配一个重要的类别(R. Song et al.,2004)。

参考文献和深入阅读

Cho和Garcia-Molina(2002,2003)撰写了一系列关于网络爬虫设计的很有影响力的文章。关于页面时新性策略的讨论,很多来自Cho和Grarcia-Molina(2003)的文章,3.2.7节则摘自Cho和Grarcia-Molina(2002)的文章。

现在有很多开源的网络爬虫。Heritrix爬虫是为Internet Archive项目开发的,这是一个功能强大的、可升级的爬虫系统。系统采用模块化设计,在运行过程中可重新配置,这样的特点使得该系统特别适合在实验中使用。

在早期网络搜索中,主题搜索引起很大的关注。Menczer和Belew(1998)及Chakrabarti 等人(1999)撰写了两篇很有影响力的文章。Menczer和Belew(1998)的文章中提出了一个主题爬虫想法,它是由多个自主的软件代理组成的,理论上每个用户使用一个代理。用户输入URL和关键词的列表,接下来代理找到那些对用户可能有用的网页,用户可以通过与系统之间的反馈来对这些网页做出评价。Chakrabarti等人(1999)的文章中侧重于对指定主题的索引进行采集,爬虫使用一个分类器来确定所爬取页面的主题,还有一个提取器,用于判断一个页面作为指向其他页面的链接来源的质量。他们利用传统的非主题爬虫作为参照来对系统进行评价,结果显示出,非主题爬虫使用一个主题相关的链接作为种子,这样做是不足以完成主题信息采集的。他们对于爬虫的评价是,网络中宽泛的链接结构导致非主题网络爬虫采集的网页很快就偏离了主题,而主题爬虫却可以成功地保持在一个主题的信息采集上。

Unicode规范无疑是一项详细的工作,覆盖了成千上万的字符(Unicode Consortium,2006)。考虑到一些非西方书写字母的特性,于是将一些Unicode的字符组合在一起形成一些符号。因此,这个规范必须很详细,不仅仅表示字符是什么,而且还有它们是如何关联到一起的。目前,仍然有很多字符阶段性地添加到Unicode中。

Bergman(2001)的文章对深层网络进行了广泛研究,尽管该研究已经比较过时了。他指出通过搜索引擎如何采样,才能有助于估计网络中有多少没有索引的内容。该项研究估计深层网络中存在5 500亿的网页,而网络中可访问的网页只有10亿。He等人(2007)最近的一篇综述文章指出,近些年来深层网络在不断地增加。Ipeirotis和Gravano(2004)的文章中提出了一个称为查询探测的技术,用于生成深层网络数据库的可搜索的表示。

网络地图、robots.txt文件、RSS源和原子信息源,它们每个都有自己的规范,可以在网络上找到。这些格式说明成功的网络标准通常非常简单。

正如上面所提到的,对于一些应用系统,数据库可以用来对网络采集的文档进行存储。然而,我们对数据库的讨论只大部分限定于和BigTable进行比较。有很多教科书,如Garcia-Molina等人(2008),提供了关于数据库如何工作的更多的信息,包括查询语言、锁定机制和恢复等重要特征的细节。经常引用的BigTable,在Chang等人(2006)的文章中有详细的叙述。其他大型的网络公司也建立了他们自己的数据库系统,这些系统都是出于相似的目的:为了实现大规模分布和较高的吞吐率,但都没有明确的查询语言或者详细的事务处理来支持。亚马逊公司的Dynamo系统具有较低的时间延迟(DeCandia et al.,2007),雅虎使用UDB系统来存储大规模的数据集(Baeza Yates & Ramakrishnan,2008)。

我们提到的DEFLATE(Deutsch,1996)和LZW(Welch,1984)是特定的文档文本压缩算法。DEFLATE是常见的Zip、gzip和zlib压缩工具的基础。LZW是Unix的compress命令的基础,也可以用于GIF、PostScript和PDF格式文件的压缩。Witten等人(1999)的文章中,提供了关于文本和图像压缩算法的详细讨论。

Hoad和Zobel(2003)对指纹技术进行了综述,对近似重复检测与基于词的相似度计算方法进行了比较。他们的评价侧重于查找文档的不同版本和抄袭的文档。Bernstein和Zobel(2006)提到了使用全指纹(不进行选择)查找相互衍生(co-derivative)的文档的方法,相互衍生是指从相同的来源衍生出来的文档。Bernstein和Zobel(2005)就重复文本的影响对检索效果的评估进行了实验。他们指出在一次TREC评测中,相关文档中有15%是冗余的,从用户的角度来看,这会对结果产生很大的影响。

Henzinger(2006)叙述了网络中近似重复检测的大规模评价。对Broder的“shingling”算法(Broder et al.,1997;Fetterly et al.,2003)和simhash(Charikar,2002)的两种方法进行了比较。Henzinger的研究中,使用了16亿的网页,表明在同一站点上没有一种方法能很好地对冗余文档进行检测,由于式样文本的不断重复使用,使得不同的页面看上去也是相似的。对于不同站点上的页面,simhash算法可以得到50%的准确率(这意味着,根据相似度域值确定的那些近似重复的页面中,有50%是正确的),而Broder算法可以达到38%的准确率。

关于从网页中抽取内容的方法,在很多文章中都有介绍。Yu等人(2003)和Gupta等人(2003)是关于这类方法的很好的文章。


2020年错误博客亲测项目系列

错误教程( cuowu.com )专注网推培训、SEO培训和网赚培训,微信/电话:13722793092

关注微信公众号:第一时间获得错误博客最新教程,让我们一起成长!

公众号二维码