APP下载

基于改进内容分析算法的网页正文提取

2018-04-18陈婷婷

计算机工程与设计 2018年4期
关键词:剪枝正文噪音

陈婷婷,严 华,2,臧 军

(1.四川大学 电子信息学院,四川 成都 610000;2.电子信息控制重点实验室,四川 成都 610000;3.中石化管道储运有限公司 荆门输油处,湖北 荆门 448000)

0 引 言

互联网上的网站由于某些商业原因,网页中的正文内容通常会被一些广告、版权信息、评论版块等网页噪音围绕,这无疑对精确抽取正文内容带来难度。另外,随着互联网网页的爆炸式增长,网页布局风格也是变化万千,不同类型网站网页样式通常大不相同。如何将正文提取方法适用于各种网站的网页布局,正确过滤网页噪音,使其具有通用性,仍是我们需要解决的问题。

1 相关研究

目前国内外对于网页正文提取的算法主要分为4大类:

(1)基于模板规则。这类算法从大量网页中生成模板,进而通过模板匹配来过滤网页噪音从而生成网页正文[1-3]。通常,不同的网站拥有不同的网页布局,同一网站下的网页拥有相似网页布局。基于模板规则的正文提取方法复杂度较低,但由于其主要针对一个或相似网页布局的网站,不具有通用性。

(2)基于视觉分块。这类算法根据网页中的位置视觉信息来确定正文区域块,虽然提取效果很好但其依赖于浏览器内核代码,耗时长,算法复杂度高[4,5]。

(3)基于启发式规则。这类算法首先将HTML解析成DOM树或某种特定格式,根据正文特征如文本长度、纯文本比率、标点,人为指定若干规则最终找到正文块并提取正文内容,复杂度较低,针对新闻、博客类网站有较好的正文提取效果[6-8]。

(4)基于机器学习。这类算法使用机器学习算法,如粒子群算法[9,10]、决策树算法[11],对网页正文特征,如文本特征密度、特征标签个数、标点个数或标点密度等确定其影响因子权值,根据目标函数最大值确定正文内容。该类算法适应性较高,但其运算量较大,算法复杂度较高。

Readability内容分析算法作为一种启发式算法,以其高效过滤网页噪音,目前已被应用到多种浏览器的文本浏览应用中。该算法通过遍历DOM对象,结合标签和属性值对节点进行加权计分,根据分数和文本特性重新整合出页面内容。然而,在应用到不同风格的网页正文抽取中时,容易遗漏正文内部数据信息的问题显得尤为突出。针对该不足,从正文块生成和剪枝两个方面对Readability算法进行改进,在确保过滤网页噪音基础上有效地保留了正文数据信息。

2 网页正文提取

目前互联网上的网页主要分为3种类型,即导航型、主题型、图片型。导航型网页主要由各种超链接构成,例如各大网站的首页,主要目的是方便用户选择感兴趣的网页浏览;主题型网页主要由成段而连续的纯文本构成,以此来描述一个或多个主题,这些文字一般位于网页中心,被一些广告、相关链接块、版权说明信息等网页噪音围绕;图片型网页主要以图片的形式阐述内容,仅含有少量的文字说明。另外,在浏览网页过程中还发现一种类似于半导航半主题型的网页,即在导航链接下有部分不完整的文字描述链接主题。

本文提出的正文提取方法针对主题型网页,通过大量搜集各大网站主题型网页后,得到了关于正文特征的几点规律,即:

(1)正文信息紧密地集中分布于网页中的某一区域,其通常集中包含在一个容器标签中或者分散包含在多个同级容器标签中。

(2)网页中的正文与广告链接这类网页噪音均为文本内容,区别在于两者之间的文本特性,即正文内容文本长度较大、纯文本比率较高、标点符号较多。

(3)网页中还存在部分文本特性与正文相似的网页噪音,如版权信息,其纯文本比率较高。这类网页噪音通常与其它广告链接一起分布在正文四周,极少夹杂在正文内部。

3 Readability算法原理

Readablitity算法主要通过p标签的文本特性以及定义的正则表达式对标签进行过滤和加权计分,从而进行内容分析。正则表达式见表1。

表1 正则表达匹配

算法步骤:

步骤1HTML解析。如图1所示,将HTML解析成一棵DOM树,通过遍历树节点,操作HTML标签。

图1 构造DOM树

步骤2过滤。遍历标签节点,提取其class和id属性进行正则匹配。表1中,unlikely_Candidates用于节点的过滤,表示该节点内容不太可能是正文,仅当出现正文抽取结果为空时,选择不过滤这些节点进行二次提取操作。

步骤3确定正文主块节点。针对段落标签

,对其父节点和祖父节点进行计分。计分因子包括

标签所含文本长度、包含标点个数、节点标签名。若

标签文本长度达标(>25),将其父节点和祖父节点加入候选节点列表。最后通过遍历候选节点,结合纯文本比率选出最高分数的标签节点作为正文主块节点。步骤4正文块生成。遍历正文主块节点的同辈节点,判断其是否为正文节点。首先评估其节点分数,若节点分数达标则标注为正文节点,否则判断其是否为

标签节点,若为

标签节点且其文本特性达标则同样标注为正文节点。最后,创建一容器节点作为正文块节点,将筛选得到的正文节点与正文主块节点拼接到正文块节点中。

步骤5剪枝。对正文块节点中的特定标签进行清理,遍历其中的

、、
    标签节点,依据节点权重、标签个数、纯文本比率等因素进行标签清除,达到清除块内网页噪音的效果。其中,positive和negative以节点的标签属性进行正则匹配产生节点权重。

    4 Readability算法的改进

    Readability算法在正文块生成部分仅简单地考虑节点分数和

    标签节点的文本特性, 易丢失其它可能含有正文信息的文本标签, 如标签、 不含

标签。 另外,在剪枝环节中Readability算法忽略了正文中一些含较多锚文本的结构数据(表格、列表信息),导致其被误删而造成数据缺失。综上,有必要从正文块生成和剪枝两个方面对Readability算法进行改进。

4.1 正文块生成

获取了正文主块后,Readability算法在抓取分散包含于多个标签中的正文信息时,由于对正文其它节点的筛选只评估其节点分数和节点为

标签节点的文本特性, 忽略了其它可能包含正文信息的非

标签, 如、 不含

标签, 导致遗漏了一些正文信息。为避免丢失正文信息,改进的算法将同时评估非

标签节点的文本特性, 取纯文本比率和文本长度作为文本特性参数。同时,为有效过滤部分文本特性与正文相似的网页噪音,根据正文信息在网页分布上的紧密集中性,在原算法基础上添加节点相对距离作为正文节点的评估因子。

定义1文本节点:若节点文本长度大于等于L、纯文本比率大于p1,或者节点文本长度小于L、纯文本比率大于p2,其中p1

定义2节点相对距离:根据标签出现顺序定义节点索引,设节点N1索引为i1,节点N2索引为i2,则节点相对距离RD定义为

RD=|i1-i2|

(1)

设正文主块节点为contentNode,创建一参考节点为refferNode,并通过当前节点与参考节点的相对距离来衡量节点在分布上与正文的紧密性程度,结合前面的分析,正文块生成算法如下:

算法1:正文块生成算法

(1)通过Readability算法获取contentNode,并将其初始化refferNode,使得refferNode=contentNode。

(2)以contentNode为起点分别向前、向后依次搜索其同辈节点。若当前节点node的节点分数大于阈值Tscore,或其与参考节点的相对距离小于等于阈值Tdistance并且为文本节点,则标注该节点为正文节点,并更新参考节点为该节点,即refferNode=node,继续搜索;否则,如果其与参考节点的相对距离大于阈值,停止搜索;如果与参考节点的相对距离小于等于阈值,但不为文本节点,则继续搜索。

(3)搜索完毕,创建正文块节点,将正文主块节点和筛选得到的正文节点拼接到其中。

算法中考虑了所有标签节点的文本特性,并引入当前节点与参考节点的相对距离体现正文节点与正文节点分布上的紧密性、与网页噪音节点分布上的非紧密性,有效排除了网页噪音,保证了正文块的纯净度和完整性。其中,节点分数阈值Tscore继承Readability算法的设置。

图2为正文节点筛选过程,其中每个圆圈代表每个节点,节点中数字表示节点索引。点填充圆圈表示正文节点、斜线填充圆圈表示网页噪音节点、空白圆圈表示待筛选节点。由于最开始只知道正文主块节点为正文节点,所以其它节点均为待筛选节点,如图2(a)所示。然后以获取的正文主块节点为起点,分别向前、向后搜索,参考节点初始为正文主块节点。图2(b)为向前搜索过程,通过节点文本特性评估前一个节点为网页噪音节点,因此继续向前搜索,参考节点不变。假设设定阈值Tdistance为2,则图2(b)中当搜索到第(m-3)个待筛选节点时,由于该节点与参考节点的相对距离等于3,因此评估该节点为网页噪音,并停止搜索。图2(c)为向后搜索过程,其后一个节点评估为正文节点,因此将参考节点指向该节点继续向后搜索。继而评估第(m+2)个节点为网页噪音节点,继续搜索到第(m+3)个节点,评估其为正文节点,再次更新参考节点,并继续搜索。

图2 正文节点搜索筛选

4.2 正文块剪枝

在获得正文块后,块内可能含有纯文本形式的正文信息、锚文本形式的正文信息、网页噪音。对于网页中含锚文本较多的容器节点,如

    节点, 应用Readability算法对正文块进行剪枝时,由于正文内部分
    标签的文本特性与网页噪音相似, 因此会被误删,导致剪枝过度从而使得正文块信息不完整。改进的算法中,通过调整剪枝范围来改善该问题。

    通过观察统计大量网页结构,发现不管是正文信息集中分布在一个容器节点还是分散位于多个不同容器节点,其正文块中的网页噪音主要分布于正文主块节点中,并且通常位于其首尾两端。基于此,将剪枝范围从正文块节点调整为正文主块节点内的子节点,并从首尾两边开始逐步剪枝,当节点不符合剪枝条件时,停止该方向的剪枝,尽可能地避免了正文内部锚文本较多的容器节点被当做网页噪音过滤。以节点权重、文本特性作为评估因子进行剪枝判断,正文块剪枝算法如下:

    算法2:正文块剪枝算法

    (1)确定剪枝条件为节点权重weight小于0或为非文本节点。

    (2)从正文主块的第一个子节点开始,向后依次搜索,若该节点满足剪枝条件则删除该节点并继续搜索,否则停止剪枝。

    (3)同样地,从正文主块的最后一个子节点开始向前依次搜索,若该节点满足剪枝条件则删除该节点并继续搜索,否则停止剪枝。

    算法中节点weight值由Readability算法中的negative与positive匹配加权得到。

    5 实验结果及分析

    使用java语言,调用第三方软件包JSoup来解析HTML文件并构造DOM树,其在解析过程中有以下优点:

    (1)能够修复不完整标签对、隐式标签、创建可靠的HTML结构,得到一个干净的解析结果。

    (2)提供选择器语法查找、操作元素,根据深度建立标签索引。

    (3)防止跨站脚本攻击,消除不受信任的HTML。

    5.1 实验结果

    为了验证该算法的有效性,从国内各大博客、新闻、科普、专业类8个不同网站各随机抽取200张网页,共计1600张,作为主题网页测试集。对正文提取结果的正确性做如下规定:

    (1)提取结果与人工观察实际网页所得正文信息一致,则完全正确。

    (2)提取结果除包含全部正文信息外,含少量非正文信息(不超过正文信息的5%,该信息位于正文内容前后),不影响阅读,则也视为正确。

    (3)提取结果缺少部分正文信息或包含较多网页噪音内容(超过正文信息5%),视为不正确。

    定义3设主题网页测试集中的网页数量为web_sum,正确提取正文信息的网页数量为correct_num,则正文提取准确率P定义为

    P=correct_num/web_sum

    (2)

    其衡量的是在整个测试集中正文提取正确的网页数量的比例,实验统计结果见表2。实验中取L=25,p1=0.5,p2=0.7,Tdistance=2。

    表2 实验统计结果

    5.2 结果分析

    从实验结果可以看出,Readability算法总体上有较好的正文提取效果,特别是针对新闻类网站,准确率达到95%以上。但在百度百科和网易这两个网站上,其正文提取准确率偏低,与改进后的算法在正文提取准确率上有较大差距。

    分析发现,百度百科网页中常含有大量锚文本表格或列表,Readability算法会因为剪枝过度而缺失部分正文信息。而网易其部分网页(如汽车专栏),正文由分散的多个容器节点拼接构成,Readability算法在正文节点拼接过程中遗漏正文子块,导致正文提取准确率偏低。

    改进后的Readability算法针对以上问题,通过正文块生成和剪枝两个方面有效地保证了正文内容的准确提取。其正文提取准确率达到95%以上,平均准确率97.81%,具有较强的通用性。

    6 结束语

    Readability算法在应用到大规模正文提取时,易丢失正文信息中的部分字段、锚文本、结构数据。在搜集大量网页总结网页布局及正文特征规律基础上,就正文块生成和剪枝两个方面对Readability算法进行改进。

    实验结果表明,改进后的方法能在有效过滤网页噪音基础上,改善Readability算法丢失部分正文信息的问题,从而提高网页正文提取的准确率。

    参考文献:

    [1]YANG Liuqing,LI Xiaodong,GENG Guanggang.Study of web pages content extraction based on layout similarity[J].Application Research of Computers,2015,32(9):2581-2586(in Chinese).[杨柳青,李晓东,耿光刚.基于布局相似性的网页正文内容提取研究[J].计算机应用研究,2015,32(9):2581-2586.]

    [2]Mane TB,Potdar GP.Template extraction from heteroge-neous web pages[J].International Journal of Advanced Computer Research,2012,2(6):197-201.

    [3]Kadam V,Devale PR.A methodology for template extraction from heterogeneous web pages[J].Indian Journal of Computer Science & Engineering,2012,3(3):449-452.

    [4]HU Bo.Research of text extraction algorithm based on visual semantic block[D].Hangzhou:Zhejiang University,2013(in Chinese).[胡波.基于视觉语义块的网页正文提取算法研究[D].杭州:浙江大学,2013.]

    [5]XIE Fangli,ZHOU Guomin,WANG Jian.Approach of extracting web page informational content based on node type an- notation[J].Computer Science,2016,43(s2):31-34(in Chinese).[谢方立,周国民,王健.基于节点类型标注的网页主题信息抽取方法[J].计算机科学,2016,43(s2):31-34.]

    [6]XIONG Zhongyang,LIN Xianqiang,ZHANG Yufang,et al.Content extraction method combining web page structure and text feature[J].Computer Engineering,2013,39(12):200-203(in Chinese).[熊忠阳,蔺显强,张玉芳,等.结合网页结构与文本特征的正文提取方法[J].计算机工程,2013,39(12):200-203.]

    [7]CHEN Yang,CHEN Xingshu,WU Qi.Extraction of content from web pages based on magnitude of reduction of information quantity[J].Computer Engineering and Design,2012,33(7):2555-2560(in Chinese).[陈阳,陈兴蜀,吴麒.基于信息量衰减幅度的网页正文提取[J].计算机工程与设计,2012,33(7):2555-2560.]

    [8]LONG Long,DENG Wei.Text content extraction algorithm for green network web age[J].Computer Engineering,2013,39(7):252-256(in Chinese).[龙珑,邓伟.绿色网络网页正文内容提取算法[J].计算机工程,2013,39(7):252-256.]

    [9]AN Zengwen,XU Jiefeng.The research on vision-based web page information extraction algorithm[J].Microcomputer & Its Application,2010,29(3):38-41(in Chinese).[安增文,徐杰锋.基于视觉特征的网页正文提取方法研究[J].微型机与应用,2010,29(3):38-41.]

    [10]WU Qi,CHEN Xingshu,TAN Jun.Content extraction algorithm of HTML pages based on optimized weight[J].Journal of South China University of Technology(Natural Science Edition),2011,39(4):32-37(in Chinese).[吴麒,陈兴蜀,谭骏.基于权值优化的网页正文内容提取算法[J].华南理工大学学报(自然科学版),2011,39(4):32-37.]

    [11]Kim M,Kim Y,Song W,et al.Main content extraction from web documents using text block context[M]//Database and Expert Systems Applications.Springer Berlin Heidelberg,2013:81-93.

    猜你喜欢

    剪枝正文噪音
    人到晚年宜“剪枝”
    更正声明
    更正启事
    基于YOLOv4-Tiny模型剪枝算法
    噪音,总是有噪音!
    无法逃避的噪音
    噪音的小把戏
    白噪音的三种用法
    剪枝
    一种面向不平衡数据分类的组合剪枝方法