邓良聪 晏先政
摘 要:BBS型网站作为整个互联网生态中的重要一环,其中蕴含着海量的数据,也是我们获取信息的重要来源。如何针对这些不同类型的论坛网页,设计一种通用的算法,对其主题贴和回帖等有价值的信息进行提取,是文章所研究的主要内容。文章在基于对不同类型网页结构的深入分析,并充分考虑了论坛网页类型的不一致性、单个网站的易爬取性及通用爬虫的不可靠性,设计了一种基于网页纵向分析的提取方案,并详细叙述了主题爬虫的算法方案。
关键词:BBS; 噪音处理; 聚类分析; 符号匹配
中图分类号:F724.6 文献标志码:A 文章编号:2095-2945(2018)09-0132-02
Abstract: As an important part of the whole Internet ecology, BBS-type website contains a huge amount of data, and it is also an important source of information. How to design a general algorithm for these different types of forum pages to extract valuable information such as theme posts and reply posts is the main concern of this paper. In this paper, based on the in-depth analysis of different types of web pages, the inconsistency of web page types, the accessibility of individual web sites and the unreliability of common crawlers are fully considered. An extraction scheme based on longitudinal analysis of web pages is designed, and the algorithm of topic crawler is described in detail.
Keywords: BBS; noise processing; cluster analysis; symbol matching
引言[1]
在当今的大数据时代里,伴随着互联网和移动互联网的高速发展,人们产生的数据总量呈现急剧增长的趋势,当前大约每六个月互联网中产生的数据总量就会翻一番。互联网产生的海量数据中蕴含着大量的信息,已成为政府和企业的一个重要数据来源,互联网数据处理也已成为一个有重大需求的热门行业。借助网络爬虫技术,我们能够快速从互联网中获取海量的公开网页数据,对这些数据进行分析和挖掘,从中提取出有价值的信息,能帮助并指导我们进行商业决策、舆论分析、社会调查、政策制定等工作。而大部分网页数据是以半结构化的数据格式呈现的,我们需要的信息在页面上往往淹没在大量的广告、图标、链接等“噪音”元素中。如何从网页中有效提取所需要的信息,一直是互联网数据处理行业关注的重点问题之一。
但是,不同网站甚至网页所使用的网页格式、网页结构和标签体系可能是不一样的,对于从互联网中获取的海量网页的批量处理,如果还利用传统的方法去对每个有差异的网页逐一做人工分析,是不可行的。因此,如何从这些存在差异的网页中快速有效的提取所需信息,就成为互联网数据处理中一个急需解决的问题。尽管在传统的网页结构化数据提取智能分析实践中,已经有很多开源的智能提取算法来分析新闻、文章类数据,然而这些方法只适用于提取有大段文本的页面结构数据信息,如只包含网页作者、标题、正文内容及发布时间等内容的网页。而对于BBS论坛型网页,由于文本在网页上相对分散且要提取的字段较多,传统的算法不再适用,需要重新设计通用提取算法,针对帖子内容进行有效地分析提取。
基于上述背景,本文提出一种新的算法,并详细描述了该算法的具体实现过程和原理
1 整体思路分析
通过对论坛网页结构的深入分析,发现不同类型的论坛网页具有一定的共性,比如所有网页都有发回帖时间,且所有网页的有效信息均散落在噪声中。如果能先对噪声做预处理,把主题帖和回帖从页面结构中抽离出来,然后再对帖子内部的噪声做处理,最后得到的文本信息即是需要提取的信息。
2 算法过程
2.1 外部噪声处理
通过对网页结构的深入分析,可以发现在需要提取的有效信息周围,有很多的噪声。由于本题对图片音频视频不作考虑,因此,本文只讨论对文本噪声的处理[2]。对文本噪声的具体处理步骤为:
首先,噪声分类。按照网页自上而下的分布规律,将这些文本噪声大分为以下几类:(1)导航條列表类噪声;(2)广告类噪声;(3)侧边栏列表类噪声;(4)帖子内部无用文本类噪声;(5)底部栏文本类噪声。
其次,噪声处理[3]。在分析了所有样本论坛的页面结构后,可发现几乎所有的主题贴都有发帖时间,所有的回帖都有回帖时间。而上面所提到的5类噪声中除了第4类帖子内部无用文本噪声包含着时间格式,其他类别的噪声大多都不含时间格式文本。因此,利用正则时间匹配方式,就可以匹配掉除帖子内部噪声之外的大多数噪声。除此之外,有的论坛在底部栏也会有网站系统时间,为了防止此类噪声的干扰,可提前去掉此类标签。由此即可从图2所示的整个网页盒子中分离出主题帖及回帖的盒子。
至此,主题帖盒子和回帖盒子还是紧密相连的,为了达到最终提取网页有效信息的目的,还需将这两个盒子分开。因此,本文拟采用下一步中利用id聚类分析的方法来对主题帖和回帖进行分离。
2.2 基于主帖和回帖id的聚类分析
2.2.1 思路分析
在提取到带有文本噪声的主题帖和回帖文本信息后,确定哪部分是主题帖信息、哪部分是回帖信息是该部分要解决的关键问题。本文考虑将主题帖和回帖进行分块,不断缩小盒子模型,以获取最终的有效信息。
各不同类型论坛网页的结构大体相同,大部分网页的HTML语法都是以
2.2.2 id属性值转换成ASCII做聚类分析
考虑到id属性值一般由数字、下划线、字母组成,我们无法直接对它们进行聚类。因此,在这里统一把它们转换成相同格式的ASCII码,利用上面介绍的系统聚类分析法,并结合Python和R语言的相关函数对这些ASCII码做最短距离计算,即差值小的被聚为一类,差值大的自成一类。
2.2.3 从各类中确定主题帖类和回帖类
通过系统聚类分析方法,帖子的回帖信息被聚为一类,根据主题帖id属性值与回帖id属性值的差异大小,主题帖有可能会和回帖被分为一类,也有可能被单独分成一类。在主题帖和回帖类的上面还有若干嵌套类,这些嵌套类一环套一环,主题帖和回帖id也在这些嵌套类中。
接下来即要提取主题帖id和回帖id,自上而下的办法就是删除嵌套类,自下而上的解决方法就是直接取回帖类,核心的解决思想就是判断倒数第二个类中是否含有回帖属性(文本内容,时间)具体实施方法是,取最后一个类的的第一个id中的文本信息看其是否在倒数第二个类中出现,若出现,就是主题帖和回帖在一个类,最后一个类的第一个id即为主题帖。若不出现,主题帖和回帖不在一个类,倒数第二个类的id即为主题帖,此时主题帖和回帖盒子被分开。
接下来,还需要对帖子内部的噪声信息进行处理,以提取最终的有效信息。
2.3 内部噪声处理
主题帖和回帖被分开后,其内部还有诸多无用文本噪声,对于该部分噪声,本文决定采用一种符号匹配的方法。即采用逗号进行正则匹配,只要带有逗号的文本信息即是有用信息。对于大部分包含有价值信息的帖子内容而言,逗号出现的频率最高,而且其他文本噪声一般情况下是不会含有逗号等标点符号的。为了提高提取的精度和内容完整性,还可采用以下两种方法对其进行改进:(1)建立标点符号的模型库。例如句号、省略号、感叹号这些常见的且不含在其他文本噪声的中出现的符号,以提高提取的精度。(2)利用回帖结构的一致性,遍历回帖类,记录每个id中文本信息的个数,通过符号匹配找到文本信息的位置,即处于第几个文本信息,通过这个位置去查询该类其他id中回帖的正文信息。这样做的好处是,只要全部回帖只要有一个符号例如逗号,就可以查询所有回帖内容,因为回帖结构固定。
2.4 信息提取
经过上述的噪音处理和聚类分组之后,即可把主题帖和回帖从页面中抽离出来,接下来就可以從中提取相关信息。各个字段的提取方法如下:
标题:从
主题贴作者:从已经分好的主题帖类中进行检索,遇到第一个带超链接的文本信息即是作者。
主题帖:通过符号正则匹配提取。
主题帖时间:通过时间正则匹配提取。
回帖作者:从已经分好的主题帖类中进行检索,遇到第一个带超链接的文本信息即是作者。
回帖内容:遍历回帖类,第一个匹配到标点符号模型库的文本内容,即是回帖内容。记录该回帖内容在单个回帖块中的位置信息,根据该位置信息取出所有回帖块中的回帖内容。
3 结束语
BBS论坛系统包含有大量信息,也一直为大量用户所喜爱,其信息量必然还会持续增加,因此如何设计相关提取算法去提取有价值信息也非常有必要。本文提出的算法更具有通用性,并没有只针对已有的一些大型开源论坛做信息提取。
将系统聚类分析的思想应用到分析网页结构上,很好的解决了论坛网页结构复杂,噪声过多的情况。但由于部分网页结构比较特殊,因此该算法还有许多可完善的地方。
参考文献:
[1]刘金红,陆余良.主题网络爬虫研究综述[J].计算机应用研究,2007,24(10):26-29.
[2]蒋琴琴,宫哲,辛阳.基于HTML Parser的BBS信息抽取系统的设计与实现[J].自动化技术与应用,2012(01):32-37.
[3]邓垦,胡勇.基于DOM树的通用论坛抽取技术[J].网络安全技术与应用,2015(01):20.
[4]胡雷芳.五种常用系统聚类分析方法及其比较[J].浙江统计,2007(04):11-13.