软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > Web前端 > 工具与技巧 > 网页噪音消除处理

网页噪音消除处理

随着Internet的迅猛发展,Web上的信息呈现爆炸式的增长,因此WEB已经成为当今世界上最大的信息源。面对如此巨大的资源,越来越多的人开始研究如何在WEB上检索及发现有价值的信息。然而网页噪音是大多数网页都不可避免的部分,它也是极大的影响我们对网页正文信息的处理的一个重要因素。因此对准确的消除网页中的噪音内容(也就是对HTML正文内容的提取),是WEB信息处理(信息检索,搜索引擎和WEB数据挖掘等)的一个重要环节和关键性技术之一。本文在VIPS(Vision-based page segmentation)算法的基础上,对内容块划分,根据内容相关度合并内容块等技术,提出了一种网页噪音消除的方法及相应算法,对网页的主题以及和正文内容进行提取,从而达到网页噪音消除的目的。

大多数网页,通常都包含与主题无关的内容,比如与主题内容无关的导航条、广告信息、版权信息以及评论等内容,我们称之为“噪音”内容。而另一部分内容则体现了网页的主题信息,比如在新闻网页中的新闻部分,这部分就是正文内容;我们通常关心的是正文内容。对于搜索引擎,网络蜘蛛获取到的网页后,下一步就是对这些网页进行噪音消除,提取页面的正文信息,对噪音消除的正确性,直接影响到搜索引擎查询关键字的相关度,是搜索引擎的一个重要竞争点,正常情况下,搜索引擎是不对噪音信息(广告,导航内容等)进行索引,就是说我们查询的关键字,不应该把广告等噪音信息也当结果返回。因此数据挖掘和搜索引擎中的数据预处理首要任务就是噪音消除,提取正文内容。

WEB页面噪音描述:

网页噪音通常分布在主题内容周围的页面次要位置,有时也夹杂在主题内容中间,但它们与主题内容并无相关性。网页设计者通常为了人的浏览习惯而将重要的内容放在网页的中间部分,突出网页主题。因此也有人提出基于视觉上的噪音消除办法,比如VISP算法等。但是我觉得完全基于视觉上的判断,还是不够的,并不是所有人都能很好的做到按大家的视觉艺术去设计网页的,甚至设计者本身就不是特别刻意要把噪音按视觉上要明显区分,比如广告信息,甚至有些设计者出于利益目的就没希望噪音信息(广告等)要在视觉上和正文内容要特意区分开来。而且这些页面如何准确重现本身也是个问题(虽然可以利用IE提供的功能),再者就是效率问题。

为了更准确的消除噪音,提取正文信息,本算法除了视觉上判断,也从噪音特点,和主题内容关联度作综合判断。WEB上的网页大致有几种类别:
主题型网页:正文内容比较突出,整个网页用来描述主题的篇幅比例较大。比如新闻网页,产品介绍网页等。
目录型网页:该类别的网页主题不明确,内容较分散,没有特别突出的主题,这类型网页多出现在网站首页。比如百度新闻首页。
表格型网页:该类别的网页虽然也有个主题,但是各部分内容比较分散在一个表单形式。比如人才网的个人简历页面。

这是赛迪网的一个新闻网页,该类别的网页属于主题型网页,从图1中我们观察到:正文内容篇幅比例较大,链接较少,标点符号分布比较均衡,内容与标题比较有关联性。而噪音信息通常是以链接导航文字(anchor text)的形式出现。

算法描述:
与VIPS的语义块类似,本算法中同样也定义了“内容块”的概念,但又不完全一致,内容块是指从视觉角度把HTML页面或分为若干个内容区域,一个区域就是一个内容块.内容块可以是DOM中的”#text”节点(DOM中名称为”#text”的文本节点)中的内容, 也可以是由包含文本内容的<P>、<FONT>、<TD>等标签构成的区域,甚至整个页面都有可能是一个内容块。

本算法分析大量页面,考虑网页设计者在设计网页的一些特性及内容关联性,提出以下算法:

1、使用DOM(Document Object Model)对整个页面的HTML进行遍历,从叶节点开始,把整个页面从最小内容块开始划分,再依据小的内容块之间的紧密关联度向外(向上,就是向父节点)合并,直到关联度低的就划分为一个独立内容块。最后把整个页面分割成相互独立的较大的内容块,我们把这些内容块定义正文候选内容块,简称候选内容块。正文必需只存在于某个候选内容块中,而不能分布在一个以上的候选内容块。因此对候选内容块划分的准确性直接影响到正文的完整性和纯净度。

2、递归处理内容块时,把<B>、<BR>、<P>、<FONT>、<STRONG>等HTML元素划分为最小内容块,这些元素定为内联节点inline node,不可再分割。依据版面设计规则,这些元素只是改变文字外观,或换行,实际版面中两个互相独立的内容块并不是用这些元素分隔的,因此这些元素不必再细分,由这些元素所包围的文字已是最小独立内容块。

3、递归处理内容块时,递归到内联节点,由内联节点向同胞节点(邻居节点)合并,如果全部同胞节点全部能合并,即全部同胞节内容是紧密关联的,那么再向父节点扩展,依此递归,直到内容块之间的关联很低为止,到此已分割出一独立内块,并计算该内容块的阀值,作为最后判断该内容块是否为正文的依据(阀值计算办法后面分析)。再把分割出来的独立内容块和它的阀值一并存入内容块池中,按其阀值进行排序。然后继续按上述方法分割内容块,直到整个页面分割完毕。对于两个内容块之间的关联度后面再做分析。

4、一些概念说明:

1

文本节点(text node)

就是字符串内容,DOM模型中:

node.nodeName==”#text”

数据挖掘”, “网页噪音消除等等都属于文本节点(text node)

2

抽象文本节点(abstract text node)

最内层是text node,<P>,<B>,<STRONG>包围的节点。可以嵌套多层,但不得包含<P>,<B>,<STRONG>和文本节点(text node)以外的节点,<td>,<tr>,<table>,<div>等等节点。

文本节点(text node)同时也属于抽象文本节点。

以下都属于抽象文本节点

<font size=2>数据挖掘</font>

<B><font size=2>网页噪音消除</font></B>

以下则不数据抽象文本节点:

<td><font size=2>数据挖掘</font></td>

<div><font size=2>数据挖掘</font></div>






算法实现:
1.  Anchor 板块识别
Anchor板块通常是以锚链接文字(anchor text)的形式出现。<A>….</A>的比例占比较大。

该板块属于噪音类别。通常要消除, 同时Anchor板块也可以作为内容块分割判断标识。同时Anchor板块也可以作为内容块分割判断标识。遍历一个节点时,如果在它的子节点中出现了Anchor板块,则这个节点的子节点需要继续分割为更小的内容块。

判别算法:根据一个板块内的锚链接文字(anchor text)和非锚链接文字数量的比例作判断。

递归节点时,如果遇到<TABLE><TD><DIV>等节点时,计算其内部的锚链接文字(anchor text)和非锚链接文字数量的比例。基本能比较准确的判断是否Anchor板块。



具体算法:

1

如果出现一块单独的非锚文字大于40个字符,则可以判断不是Anchor.

2

如果非锚文字总计大于300个字符,且锚数量少于20,则可以判断不是Anchor板块.

3

如果非锚文字总计大于200个字符,非锚文字总计大于锚文字总计,则可以判断不是Anchor版块.

4

如果连续的非锚文字长度大于60个字符, 则可以判断不是Anchor板块.

5

如果连续出现3个以上的非锚文字,则可以判断不是Anchor板块.

6

如果锚个数大于1,且非锚文字总计与锚文字总计之比大于 1,可判断为Anchor.


2.表单板块识别

表单板块中,<TEXTAREA></TEXTAREA><input type="text" name=txt>这类HTML元素中比例较大

写在最后
这篇文章是写在另外一个博客的未完成的文章,现在把博客转移过来,也顺便把这个文章转移过来,关于Web内容提取,上面只是简单的介绍,事实上要想有更好的效果,还需要加入上下文语义关联检测算法来结合分析,通过收集大量文章,进行学习训练,最后达到准确识别的目的。关于语义的识别,下次再分析。

    相关阅读
    栏目导航
    推荐软件