摘 要:利用网页的视觉特征和DOM树的结构特性对网页进行分块,并采用逐层分块逐层删减的方法将与正文无关的噪音块删除,从而得到正文块。对得到的正文块运用VIPS算法得到完整的语义块,最后在语义块的基础上提取正文内容。试验表明,这种方法是切实可行的。
关键词:页面分块;信息提取;视觉特征
随着互联网的迅速发展,互联网上的信息量以几何级数倍增。人们需要在海量的信息库中查找自己需要的信息。虽然搜索引擎能帮助人们快速地搜索到想要的信息,但每个网页除了正文内容外还掺杂了很多用户不需要的信息。例如,为了方便用户浏览而加入的导航链接、出于商业利益而加入的广告链接、版权信息以及相关主题阅读推荐链接等。这些信息掺杂在网页中,影响了用户对主题内容的浏览。因此,如何从包含大量噪音内容的网页中将正文信息准确、完整地提取出来成为众多研究者研究的课题。
1 相关工作
在Web信息抽取领域,已经有大量的研究工作,包括HTML结构分析方法(如XWRAP和Lixto)、基于自然语言处理的方法(如SRV和WHISK)、机器学习方法等。但是这些方法都是针对特定网站或特定格式的,不具有通用性,并且不能完成自动抽取。众多的Web网页正文信息提取方法都有各自的优缺点。
参考文献[1]采用机器学习的方法提取网页正文信息。此方法通过对网页集的学习,不断生成新的模板,从而建立模板库。提取信息时,查找对应的模板,利用模板中主题结点信息,直接定位主题信息块,快速提取主题信息。虽然此方法采用自动抽取的方式,其智能化程度也在一定程度上方便了用户的使用,但对于一个新的网页,若找不到匹配的模板,此方法就不适用了。而且随着模板数量的增加,模板库的维护工作也变得越来越复杂。
从页面视觉特征的角度对网页结构进行挖掘也是很有效的途径。典型的代表就是微软亚洲研究院提出的VIPS(Vision-based Page Segmentation)算法[2]。它利用背景颜色、字体颜色和大小、边框、逻辑块和逻辑块之间的间距等视觉特征,通过制定相应的规则把页面分成了各个视觉信息块。这能在一定程度上满足复杂页面对算法的要求,但由于视觉特征的复杂性,运用的启发知识往往较为模糊,需要人工不断地总结调整规则,因此如何保证规则集的一致性是一大难点。
有许多研究者考虑使用HTML标签信息来划分页面。其中,中科院计算所软件研究室提出利用TABLE标记和视觉特征对页面进行语义块划分,并识别各语义块属性的算法TVPS(Table and Vision based Page Segmentation)[3]。TVPS算法中的分块方法只考虑了各个最底层的TABLE标记,但是实际情况中网页样式结构和TABLE标记的嵌套关系都非常复杂,网页正文信息不一定全在最底层的TABLE标记中。如果只考虑最底层的TABLE标记,会遗漏部分正文信息。
参考文献[4]根据正文字数多、标点符号多2个特征,提出一种基于正文特征的网页正文信息提取方法。该方法利用HTML标签对网页内容进行分块,把具有正文特征的块保留,不具有正文特征的块舍弃,从而进行网页正文信息的提取。这种方法对于新闻、财经、科技等类型网页提取效果较好,但对于图片多文字少或对于用户回帖字数较少的论坛型网页提取效果较差。
以往的基于分块的网页信息提取算法都是对整个网页进行处理,并分完块后再对页面块进行取舍,确定正文块。这类方法对与页面主题无关的噪音信息也进行了处理,增加了算法的复杂度。本文在前人工作的基础上结合参考文献[3]、[4]、[7],提出采用逐层分块逐层删减的方法对Web网页进行信息提取,以降低算法的复杂度,提高抽取的准确度,并用试验验证其可行性。
2 正文提取算法
Web网页通常分为3种类型:主题型网页、图片型网页、目录型网页[5]。主题型网页通常通过成段的文字描述1个或多个主题(如新闻网页);图片型网页中内容是通过图片体现的,只用少量文字对图片进行说明;目录型网页通常不会用成段的文字描述,而是提供指向相关网页的超链接,也可称为索引页。本文所研究的网页正文提取是针对主题型网页展开的。
2.1 VIPS算法
VIPS算法充分利用了Web页面的布局特征。它首先从DOM树中提取出所有合适的页面块,然后根据这些页面块检测出它们之间所有的分割条,包括水平和垂直方向;最后基于这些分割条,重新构建Web页面的语义结构。对于每一个语义块又可以使用VIPS算法继续分割为更小的语义块。该算法分为页面块提取、分隔条提取和语义块重构3部分,并且是递归调用的过程,直到条件不满足为止。在此仅对页面块提取方法做简单介绍。
整个VIPS算法自顶向下,图1(a)显示的是一个表格,该表格是整个Web页面的一部分,它的DOM树结构如图1(b)所示。在页面块的提取过程中,当遇到
孩子结点,但是它们中只有3个是有效结点,而且第1个孩子结点的背景颜色与父亲结点的颜色不同。根据参考文献[2]中规则,该 | ||
结点在本次迭代中不进行分割,将其保存到页面块池中。第2个和第4个 | 结点为无效结点,因此将被删除。对于第3个和第5个 | 结点,根据参考文献[2]中规则,在本次迭代中不再分割,被保存到页面块池中。因此最终得到3个页面块VB2_1、VB2_2和VB2_3。
2.2 页面块提取和过滤 (1)构建DOM树。由于HTML书写的随意性,首先对HTML代码进行预处理,例如对书写不规范的标签进行补全处理,以免在后面的程序处理中造成错误,并去除一些无用标签,如 --> |