一种抽取论坛网页中帖子内容的方法及***
技术领域
本申请涉及计算机互联网领域,特别涉及一种抽取论坛网页中帖子内容的方法及***。
背景技术
随着国际互联网的日益普及和迅猛发展,论坛已成为网络上重要的数据资源。由于论坛为人们提供了大量关于各种题材的非常有价值的知识和信息,越来越多的研究工作将利用从论坛数据中抽取信息并建立各种应用。
为了有效利用论坛数据,大部分应用都是首先从论坛网页中抽取结构化的数据,再进一步利用这些数据实现各种功能。
目前,论坛信息的抽取方法多是基于规则,一般而言,都是针对某一网站指定规则并以此构造包装器,而包装器是一种软件构件,主要通过以下两种途径来进行构建:
一、知识工程的途径,即通过领域专家来制定抽取规则;
二、采用机器学习的途径自动构建包装器,根据标注样板,机器学习算法通过自动学习来建立抽取模型。
本申请人在实现本申请实施例的过程中,发现上述手段至少存在如下问题:
一、通过领域专家来制定抽取规则需要耗费大量的人力,成本很高;
二、采用机器学习的途径时,需要手工标注样本。
上述利用包装器的信息抽取技术都存在一定程度上依靠人工辅助,自动化程度比较低,同时,由于论坛网页形式多样且不断更新,因此,包装器的维护成本较高,适用性差,不适合大规模应用。
发明内容
本申请提供一种抽取论坛网页中帖子内容的方法,用以解决现有技术中存在信息抽取自动化较低和适用性差的问题。
一方面,通过本申请的一个实施例,提供如下技术方案:
一种抽取论坛网页中帖子内容的方法,包括:
获得一论坛网页;
将所述论坛网页转换成DOM树,其中,所述DOM树至少包括一根节点及从属于所述根节点的至少一个子节点;
一一对应地为所述根节点及所述至少一个子节点生成频繁模式;
根据所述频繁模式中一符合预设条件的频繁模式,确定出与所述论坛网页中信息内容所对应的节点;
基于一预设的公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中提取所述论坛网页中的信息内容。
可选的,所述符合预设条件的频繁模式具体为:最大频繁模式;所述预设的公共子树算法具体为:最大公共子树算法。
可选的,所述将所述论坛网页转换成DOM树,具体包括:
删除所述论坛网页中无用的网页标签;
将无用的网页标签删除了的所述论坛网页转换成DOM树。
可选的,所述基于一预设的公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中提取所述论坛网页中的信息内容,具体包括:
过滤掉所述论坛网页中帖子之间相同部分;
基于所述最大公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中提取所述论坛网页中的信息内容。
可选的,所述在根据所述频繁模式中一符合预设条件的频繁模式,确定出与所述论坛网页中信息内容所对应的节点之前还包括:
判断所述频繁模式中每个频繁模式的频繁度与支持度是否大于等于预设的频繁度和支持度;
当一频繁模式的频繁度与支持度小于预设的频繁度和支持度时,对所述频繁模式进行剪枝处理。
可选的,所述预设的频繁度和支持度具体为:最小频繁度和最小支持度。
另一方面,通过本申请的另一实施例提供了如下技术方案:
一种抽取论坛网页中帖子内容的***,所述***包括:
获得模块,用于获得一论坛网页;
转换模块,用于将所述论坛网页转换成DOM树,其中,所述DOM树至少包括一根节点及从属于所述根节点的至少一个子节点;
生成模块,用于一一对应地为所述根节点及所述至少一个子节点生成频繁模式;
确定模块,用于根据所述频繁模式中一符合预设条件的频繁模式,确定出与所述论坛网页中信息内容所对应的节点;
提取模块,用于基于一预设的公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中提取所述论坛网页中的信息内容。
可选的,所述符合预设条件的频繁模式具体为:最大频繁模式;所述预设的公共子树算法具体为:最大公共子树算法。
可选的,所述转换模块,具体包括:
删除单元,用于删除所述论坛网页中无用的网页标签;
转换单元,用于将无用的网页标签删除了的所述论坛网页转换成DOM树。
可选的,所述提取模块,具体包括:
过滤单元,用于过滤掉所述论坛网页中帖子之间相同的部分;
提取单元,用于基于所述最大公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中提取所述论坛网页中的信息内容。
可选的,所述***还包括:
判断模块,用于判断所述频繁模式中每个频繁模式的频繁度与支持度是否大于等于预设的频繁度和支持度;
剪枝模块,用于当一频繁模式的频繁度与支持度小于预设的频繁度和支持度时,对所述频繁模式进行剪枝处理。
上述技术方案中的一个或多个技术方案,具有如下技术效果或优点:
一、通过采用本申请提供的抽取论坛网页中帖子内容的方法,解决了现有技术中对帖子内容抽取存在自动化程度低,***适用性差的缺陷,进而具有较广的应用范围。
二、通过抽取出帖子的最大频繁模式,定位到帖子内容节点所在频繁模式树中的位置,再通过最大公共子树动态规划匹配算法,能够快速、准确、完整的抽取出帖子内容中的所有主、回帖内容、发帖时间、作者、及楼层信息等相关元数据。
附图说明
图1为本申请实施例中抽取论坛网页中帖子内容的方法流程图;
图2为本申请实施例中频繁模式树的示意图;
图3为本申请实施例中网页帖子内容结构图;
图4为本申请实施例中抽取网页论坛中帖子内容的***结构图。
具体实施方式
本申请根据采集到的论坛帖子页对应的网页内容,抽取出帖子页的最大频繁模式,再通过最大频繁模式计算出帖子信息内容所在的节点,基于最大公共子树算法,过滤掉帖子之间相同的部分,进而实现抽取出帖子内容及元数据,同时,根据本申请提供的方法还可以抽取出同一论坛中其他帖子的内容及元数据。
下面结合各个附图对本申请实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
请参考图1,为本申请实施例中抽取论坛网页中帖子内容的方法流程图;
步骤100,获得一论坛网页;
在具体的实施过程中,抽取网页中帖子内容时,首先建立采集页任务,并以列表页的形式保存,基于此采集任务的间隔,自动的从列表页中的URL获得相应的网页地址,比如想要采集梁静茹百度贴吧中的帖子内容,则其采集任务的地址则为:http://tieba.***.com/f?kw=%C1%BA%BE%B2%C8%E3#。
步骤110,将所述论坛网页转换成DOM树;
在具体的实施过程中,基于前述步骤110中的网页地址,获取网页地址对应的论坛网页内容,先删除所述论坛网页中无用的网页标签;具体来讲,所述无用的网页标签包括:head节点、注释节点、script等脚本节点、input节点、form节点、select节点、textarea节点、style节点、字体节点等。本领域所属的技术人员根据实际的应用情况,其他相同或相似的网页标签都属于本申请保护的范围,此处不在赘述。
再将无用的网页标签删除了的所述论坛网页转换成DOM树,所述DOM树至少包括一根节点及从属与所述根节点的至少一个子节点;
步骤120,一一对应地位所述根节点及所述至少一个子节点生成频繁模式;
首先,用频繁模式树给出WEB数据及频繁模式的定义,对于某个集合A,设|A|表示A的基数(大小),设L={L0,L1,L2...Ln}表示对应于半结构化数据中属性或者用来标记文本的有限字母表。
建立在L上的频繁模式树,简称频繁树,是一个六元组OT={V,E,B,L,M,r}。其中V是一个有限的节点集合,E=V×V表示(parent,child),E满足的双亲-孩子关系。B表示满足(可能间接)的兄弟关系。频繁树中的任意一个节点都可以通过一条路径到达另一个节点,称该路径为频繁模式。
下面结合图2,频繁模式的结构图作具体描述;
如图2所示,(HTML(HEAD(TITLE))(BODY(TABLE)(DIV))),此模式表示了网页频繁树中的一个频繁模式,这棵树的根节点是<HTML>标签,并且所有的内容节点(如:文本、图片等)都是这棵树的叶节点。每一个内部节点代表一对标签(开始的标签和结束的标签),或者仅代表一个标签(该标签没有对应的结束的标签),根标签和内部的节点统称为标签节点。
通过对步骤110中生成的DOM树中的每一个节点进行前序遍历,对应的把DOM树中每一个节点进行前序遍历,将每一个节点转换成频繁模式。
需要说明的是,一个频繁模式包含一系列的路径节点,根据对标签路径的不同定义,每一个路径节点的构成元素是不同的。
步骤130,根据所述频繁模式中一符合预设条件的频繁模式,确定出与所述论坛网页中信息内容所对应的节点;
所述符合预设条件的频繁模式具体为:最大频繁模式;所述预设的公共子树算法具体为:最大公共子树算法。
另外,在此步骤之前,即在根据所述频繁模式中一符合预设条件的频繁模式,确定出与所述论坛网页中信息内容所对应的节点之前还包括:
判断所述频繁模式中每个频繁模式的频繁度与支持度是否大于等于预设的频繁度和支持度;
当一频繁模式的频繁度与支持度小于预设的频繁度和支持度时,对所述频繁模式进行剪枝处理。具体而言,所述预设的频繁度和支持度具体为:最小频繁度和最小支持度。
当进行剪枝处理后,进一步的避免了产出无用的模式,过滤完成后,开始进行扩展,扩展时按照频繁模式树的层次进行扩展,即查看这些模式是否还有其他兄弟节点,如果有则在此频繁模式基础上加入兄弟节点,扩展出新的频繁模式。在扩展兄弟节点后,再查看此模式是否有孩子节点,如果有则在此频繁模式基础上加入孩子节点,扩展出新的频繁模式。每扩展出一个新的频繁模式,就把新找到的模式以及位置等其它相关信息***到队列中。一直循环此步骤直到扩展完队列中的所有模式。
步骤140,基于一预设的公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中提取所述论坛网页中的信息内容。
在具体的实施过程中,本步骤包括以下过程:
过滤掉所述论坛网页中帖子之间相同部分;
基于所述最大公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中。
根据论坛网页格式可以知道,同一论坛往往具有相似的格式,所以根据频繁模块抽取出的最大频繁模式,必然是论坛主从帖所在的分支所生成的模式,比如百度贴吧主贴所形成的模式(div(a)(div(a)(table(tbody(tr)))(div(div))))。此模式就是论坛信息区域所在的分支。论坛网页内容区域的识别就是要找到网页中有大量相似结构的区域,对应于网页频繁树,就是找到最常出现的频繁模式,此模式不一定是包含内容数据的区域,但一定是频繁树中包含内容数据区域节点的某一个子孙节点形成的频繁模式。而包含了数据的区域,就在其附近。所以找到此频繁模式就可以进行内容数据区域定位并进行数据抽取。
请结合图3,为本申请实施例中网页帖子内容结构图;
如图3所示,主从贴有着相同的结构,基本上除了帖子内容信息不同外,其它结构基本相同。所以当找到出现次数最多的频繁模式后,就可以利用最大公共子树动态规划算法,找出子树中完全一样的结构(文本,tag都一样)。当剔除掉相同部分后,剩余的部分就是从主从贴的内容以及内容对应的元数据。提取所述论坛网页中的信息内容。
下面请参考图4,为本申请实施例中抽取论坛网页中帖子内容的方法流程图;
如图4所示,所述***包括:
获得模块,用于获得一论坛网页;
转换模块,用于将所述论坛网页转换成DOM树,其中,所述DOM树至少包括一根节点及从属于所述根节点的至少一个子节点;
所述转换模块具体包括:
删除单元,用于删除所述论坛网页中无用的网页标签;
转换单元,用于将无用的网页标签删除了的所述论坛网页转换成DOM树。
生成模块,用于一一对应地为所述根节点及所述至少一个子节点生成频繁模式;
确定模块,用于根据所述频繁模式中一符合预设条件的频繁模式,确定出与所述论坛网页中信息内容所对应的节点;所述符合预设条件的频繁模式具体为:最大频繁模式;所述预设的公共子树算法具体为:最大公共子树算法。
提取模块,用于基于一预设的公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中提取所述论坛网页中的信息内容。
所述提取模块具体包括:
过滤单元,用于过滤掉所述论坛网页中帖子之间相同的部分;
提取单元,用于基于所述最大公共子树算法,从所述与所述论坛网页中信息内容所对应的节点中提取所述论坛网页中的信息内容。
所述***还包括:
判断模块,用于判断所述频繁模式中每个频繁模式的频繁度与支持度是否大于等于预设的频繁度和支持度;
剪枝模块,用于当一频繁模式的频繁度与支持度小于预设的频繁度和支持度时,对所述频繁模式进行剪枝处理。所述预设的频繁度和支持度具体为:最小频繁度和最小支持度。
通过本申请的一个或多个实施例,可以实现如下技术效果:
一、通过采用本申请提供的抽取论坛网页中帖子内容的方法,解决了现有技术中对帖子内容抽取存在自动化程度低,***适用性差的缺陷,进而具有较广的应用范围。
二、通过抽取出帖子的最大频繁模式,定位到帖子内容节点所在频繁模式树中的位置,再通过最大公共子树动态规划匹配算法,能够快速、准确、完整的抽取出帖子内容中的所有主、回帖内容、发帖时间、作者、及楼层信息等相关元数据。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。