论坛贴内容抽取方法和装置的制作方法

文档序号:6438694阅读:212来源:国知局
专利名称:论坛贴内容抽取方法和装置的制作方法
技术领域
本发明涉及互联网信息技术领域,具体而言,涉及一种论坛贴内容抽取方法和装置。
背景技术
随着互联网应用的普及,网络论坛蓬勃发展,论坛的使用者数量日益增加,数据量呈爆炸式增长,对舆情传播起了重要的作用,所以对论坛数据的检索和挖掘等应用越显重要。而对网页数据的正确抽取是各种论坛应用的基础。目前抽取网页数据信息的方法两种:一种是人工配置模板,用正则表达式匹配出数据信息;一种是通过样例页面,自动抽取出模板,然后再利用模板去匹配出数据信息。上述方法一,耗费大量人力,对用户知识要求高;上述方法二,必须离线学习得到模板,然后测试出模板优劣才能使用。上述两种方法因为都需要事先准备好模板才能抽取工作,一旦网页结构改版失去效用,需要大量专业人员进行维护,成本较高。目前许多内容页抽取方法的研究主要集中在新闻以及类新闻的网页上,但是论坛的内容页的视觉布局与新闻是不同的。新闻类页面结构相对简单,正文布局较为集中,而论坛内容页页面结构层次较为复杂,正文内容分为主贴与跟帖,其布局较为分散,因此,类新闻网页抽取方法不适用于论坛类网页抽取。

发明内容
本发明旨在提供一种论坛贴内容抽取方法和装置,以解决论坛贴内容的抽取问题。在本发明的实施例中,提供了一种论坛贴内容抽取方法,包括:由论坛贴的源代码生成HTML标签树;将HTML标签树中的文本率大于第一阈值的标签子树合并得到一颗最大候选子树;从最大候选子树中筛选得到所有具有相似结构的节点簇;从节点簇中筛选文本率大于第二阈值的节点簇;抽取筛选的节点簇中的文本内容。在本发明的实施例中,提供了一种论坛贴内容抽取装置,包括:标签树模块,用于由论坛贴的源代码生成HTML标签树;最大候选子树模块,用于将HTML标签树中的文本率大于第一阈值的标签子树合并得到一颗最大候选子树;节点簇模块,用于从最大候选子树中筛选得到所有具有相似结构的节点簇;筛选模块,用于从节点簇中筛选文本率大于第二阈值的节点簇;抽取模块,用于抽取筛选的节点簇中的文本内容。本发明上述实施例的论坛贴内容抽取方法和装置采用了树结构来模拟论坛贴,所以实现了论坛贴内容的自动抽取。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了根据本发明实施例的论坛贴内容抽取方法的流程图;图2示出了根据本发明实施例的创建最大候选子树的流程图;图3示出了根据本发明实施例的筛选节点簇的流程图;图4示出了根据本发明实施例的论坛贴内容抽取装置的示意图。
具体实施例方式下面将参考附图并结合实施例,来详细说明本发明。图1示出了根据本发明实施例的论坛贴内容抽取方法的流程图,包括:步骤S10,由论坛贴的源代码生成HTML标签树;步骤S20,将HTML标签树中的文本率大于第一阈值的标签子树合并得到一颗最大候选子树,根据多次实验的结果,优选地,设置第一阈值为0.8 ;步骤S30,从最大候选子树中筛选得到所有具有相似结构的节点簇即为各楼层帖子;步骤S40,从节点簇中筛选文本率大于第二阈值的节点簇,根据多次实验的结果,优选地,设置第二阈值为0.9;步骤S50,抽取筛选的节点簇中的文本内容。新闻类页面结构相对简单,正文布局较为集中,而论坛内容页页面结构层次较为复杂,正文内容分为主贴与跟帖,其布局较为分散。对一篇内容页网页而言,在视觉效果上其正文、广告、版权声明 以及导航信息是区域集中且是区域可分的,在正文区域中纯文本的比例要多于超链接的比例的;论坛内容页是由服务器端靠CGI模块依照相同的模板自动生成HTML标签的,因此论坛内容页中的各楼层帖子是有类似结构的。本实施例的步骤SlO由论坛贴的源代码生成HTML标签树,使得论坛贴的内容变得结构化,方便进行各种算法处理。步骤S20可以抽取出包含正文的html标签子树,换言之,就意味着网页中广告被去掉了,步骤S30筛选得到所有具有相似结构的节点簇,即为各楼层帖子,步骤S40进而确定具有正文内容的楼层帖子。本实施例步骤S20在网页中抽取出正文节点簇,步骤S30在所选择的节点簇中抽取出各回帖节点簇。本实施例实现了论坛数据抽取的自动化,节省了人工维护成本。优选地,步骤SlO包括:获取论坛贴的源代码;按照源代码对应的HTML文本顺序生成HTML标签树。本优选实施例利用HTML的语言结构特点,可以很容易地通过源代码构建标签树。优选地,步骤SlO还包括:删除HTML标签树中的head节点、注释节点、script等脚本节点、input节点、form节点、select节点、textarea节点、style节点和字体节点等噪声。这些节点都是用于描述页面布局或页面编程等信息的,与正文内容没有直接关系,本优选实施例通过删除这些噪声,可以简化后期的处理流程。优选地,确定标签子树的文本率TextRatio = W1* (TextCount-LinkCount) /TextCount+W2*TextCount/PageTextCount,其中,0<¥2<<¥1< I, W2+W1 = I, W1' W2 是设定的权值,TextCount代表标签子树的纯文本数,LinkCount代表标签子树的链接数,PageTextCount代表论坛贴的纯文本数。可以确定TextCount = SUM(TextCounti),其中,SUM(TextCounti)表不对标签子树中所有节点i的纯文本数TextCounti求和;可以确定LinkCount = SUM(LinkCounti),其中,SUM(LinkCounti)表不对标签子树中所有节点i的链接数LinkCounti求和;可以确定PageTextCount = SUM(TextCounti),其中,SUM(TextCounti)表不对论坛贴中所有节点i的纯文本数TextCounti求和;其中,对于节点i为终端节点,如果是纯文本节点,则设置TextCounti =节点i的纯文本字数,LinkCounti = 0 ;如果是链接节点,贝U设置TextCounti = LinkCounti = I ;如果是其他节点,贝U设置TextCounti = LinkCounti = 0 ;对于节点i为非终端节点,设置TextCounti =节点i自身的纯文本字数+所有子节点的TextCount总和,设置LinkCounti =节点i自身的链接数+所有子节点的LinkCount总和。上述计算过程比较简单,很容易通过计算机编程来实现。图2示出了根据本发明实施例的创建最大候选子树的流程图,包括:后序遍历HTML标签树,计算每个标签子树的文本率,把大于第一阈值的子树归入候选子树中,不再遍历其兄弟节点,直接遍历候选子树的父亲节点;候选子树多于I个时,对两个候选子树进行合并,分以下两种情况进行合并:一、如果候选子树A是候选子树B的子树,则在候选子树中除去候选子树A,保留候选子树B,继续遍历步骤;二、如果候选子树A和候选子树B分处不同子树,则寻找共同祖先节点,然后把以共同祖先节点为根节点的子树作为候选子树,把其他两个子树除去,继续遍历步骤,遍历完成后得到的候选子树即为最大候选子树;遍历最大候选子树进行剪枝,把文本率不大于第一阈值的叶子节点全部除去,生成新的最大候选子树。图3示出了根据本发明实施例的筛选节点簇的流程图包括:广度优先遍历最大候选子树,计算兄弟节点间的标签差异度,两个兄弟节点的标签差异度大于第三阈值则认为两个兄弟节点具有相似结构,其中,对不同层次的节点设置不同的第三阈值,层次越深,设置第三阈值越大,将具有相似结构的节点聚类为一个子集,根据多次实验的结果,优选地,设置第三阈值为0.1 ;分别对各个已经聚类的子集重复遍历步骤,直至即各个聚类子集元素个数均为I ;选择包含子集数量最多的集合,将集合中的各子集分别作为各楼层贴。图4示出了根据本发明实施例的论坛贴内容抽取装置的示意图,包括:标签树模块10,用于由论坛贴的源代码生成HTML标签树;最大候选子树模块20,用于将HTML标签树中的文本率大于第一阈值的标签子树合并得到一颗最大候选子树;节点簇模块30,用于从最大候选子树中筛选得到所有具有相似结构的节点簇;筛选模块40,用于从节点簇中筛选文本率大于第二阈值的节点簇;抽取模块50,用于抽取筛选的节点簇中的文本内容。优选地,最大候选子树模块确定标签子树的文本率TextRatio =W1* (TextCount-LinkCount) /TextCount+W2*TextCount/PageTextCount,其中,0 < W2 < < W1
<1,W2+W1 = 1,W1^ W2是设定的权值,TextCount代表标签子树的纯文本数,LinkCount代表标签子树的链接数,PageTextCount代表论坛贴的纯文本数。优选地,最大候选子树模块包括:遍历模块,用于后序遍历HTML标签树,计算每个标签子树的文本率,把大于第一阈值的子树归入候选子树中,不再遍历其兄弟节点,直接遍历候选子树的父亲节点;合并模块,用于候选子树多于I个时,对两个候选子树进行合并,分以下两种情况进行合并:一、如果候选子树A是候选子树B的子树,则在候选子树中除去候选子树A,保留候选子树B,继续遍历步骤;

二、如果候选子树A和候选子树B分处不同子树,则寻找共同祖先节点,然后把以共同祖先节点为根节点的子树作为候选子树,把候选子树A、B除去,继续遍历步骤,遍历完成后得到的候选子树即为最大候选子树;剪枝模块,用于遍历最大候选子树进行剪枝,把文本率不大于第一阈值的叶子节点全部除去,生成新的最大候选子树。优选地,节点簇模块包括:遍历模块,用于广度优先遍历最大候选子树,计算兄弟节点间的差异度,两个兄弟节点的标签差异度大于第三阈值则认为两个兄弟节点具有相似结构,其中,对不同层次的节点设置不同的第三阈值,层次越深,设置第三阈值越大,将具有相似结构的节点聚类为一个子集;循环模块,用于分别对各个已经聚类的子集重复遍历步骤,直至即各个聚类子集元素个数均为I ;选择包含子集数量最多的集合,将集合中的各子集分别作为各楼层贴。从以上的描述中可以看出,本发明实现了论坛贴内容的自动抽取。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种论坛贴内容抽取方法,其特征在于,包括: 由论坛贴的源代码生成HTML标签树; 将所述HTML标签树中的文本率大于第一阈值的标签子树合并得到一颗最大候选子树; 从所述最大候选子树中筛选得到所有具有相似结构的节点簇; 从所诉各个节点簇筛选文本率大于第二阈值的节点簇; 抽取所述筛选的节点簇中的文本内容。
2.根据权利要求1所述的方法,其特征在于,由论坛贴的源代码生成HTML标签树包括: 获取所述论坛贴的源代码; 按照所述源代码对应的HTML文本顺序生成所述HTML标签树。
3.根据权利要求2所述的方法,其特征在于,由论坛贴的源代码生成HTML标签树还包括:` 删除所述HTML标签树中的head节点、注释节点、脚本节点、input节点、form节点、select节点、textarea节点、style节点和字体节点。
4.根据权利要求1所述的方法,其特征在于,确定标签子树的文本率TextRatio=W1* (TextCount-LinkCount) /TextCount+W2*TextCount/PageTextCount,其中,0 < W2 < < W1<I, W2+W1 = 1,W1、W2是设定的权值,TextCount代表所述标签子树的纯文本数,LinkCount代表所述标签子树的链接数,PageTextCount代表所述论坛贴的纯文本数。
5.根据权利要求4所述的方法,其特征在于,还包括: 确定TextCount = SUM(TextCounti),其中,SUM(TextCounti)表不对所述标签子树中所有节点i的纯文本数TextCounti求和; 确定LinkCount = SUM(LinkCounti),其中,SUM(LinkCounti)表不对所述标签子树中所有节点i的链接数LinkCounti求和; 确定 PageTextCount = SUM(TextCounti),其中,SUM(TextCounti)表不对所述论坛贴中所有节点i的纯文本数TextCounti求和; 其中,对于节点i为终端节点,如果是纯文本节点,则设置TextCounti =节点i的纯文本字数,LinkCounti = 0 ;如果是链接节点,则设置TextCounti = LinkCounti = I ;如果是其他节点,则设置 TextCounti = LinkCounti = 0 ; 对于节点i为非终端节点,设置TextCounti =节点i自身的纯文本字数+所有子节点的TextCount总和,设置LinkCounti =节点i自身的链接数+所有子节点的LinkCount总和。
6.根据权利要求1所述的方法,其特征在于,将所述HTML标签树中的文本率大于第一阈值的标签子树合并得到一颗最大候选子树包括: 后序遍历所述HTML标签树,计算每个标签子树的文本率,把大于所述第一阈值的子树归入候选子树中,不再遍历其兄弟节点,直接遍历所述候选子树的父亲节点; 所述候选子树多于I个时,对两个所述候选子树进行合并,分以下两种情况进行合并:一、如果候选子树A是候选子树B的子树,则在所述候选子树中除去候选子树A,保留候选子树B,继续所述遍历步骤;二、如果候选子树A和候选子树B分处不同子树,则寻找共同祖先节点,然后把以共同祖先节点为根节点的子树作为所述候选子树,把A、B子树除去,继续所述遍历步骤,遍历完成后得到的所述候选子树即为所述最大候选子树; 遍历所述最大候选子树进行剪枝,把文本率不大于所述第一阈值的叶子节点全部除去,生成新的所述最大候选子树。
7.根据权利要求1所述的方法,其特征在于,从所述最大候选子树中筛选得到所有具有相似结构的节点簇包括: 广度优先遍历所述最大候选子树,计算兄弟节点间的差异度Diff = Distance/Larger (TextLengthA, TextLengthB),其中,Distance是两兄弟节点之间的HTML标签编辑距离,TextLengthA、TextLengthB分别是两个兄弟节点HTML标签字符长度,Larger是取最大值函数。差异度小于第三阈值则认为两个兄弟节点具有相似结构,其中,对不同层次的节点设置不同的第三阈值,层次越深,设置所述第三阈值越大,将具有相似结构的节点聚类为一个子集; 分别对各个已经聚类的子集重复所述遍历步骤,直至即各个聚类子集元素个数均为I ; 选择包含子集数量最多的集合,将集合中的各子集分别作为各楼层贴。
8.一种论坛贴内容抽取装置,其特征在于,包括: 标签树模块,用于由论坛贴的源 代码生成HTML标签树; 最大候选子树模块,用于将所述HTML标签树中的文本率大于第一阈值的标签子树合并得到一颗最大候选子树; 节点簇模块,用于从所述最大候选子树中筛选得到所有具有相似结构的节点簇; 筛选模块,用于从所述节点簇中筛选文本率大于第二阈值的节点簇; 抽取模块,用于抽取所述筛选的节点簇中的文本内容。
9.根据权利要求8所述的装置,其特征在于,所述最大候选子树模块确定标签子树的文本率 TextRatio = W1* (TextCount-LinkCount)/TextCount+W2*TextCou nt/PageTextCount,其中,0 < W2 << W1 < I, W^ff1 = I, W1^ff2 是设定的权值,TextCount 代表所述标签子树的纯文本数,LinkCount代表所述标签子树的链接数,PageTextCount代表所述论坛贴的纯文本数。
10.根据权利要求8所述的装置,其特征在于,所述最大候选子树模块包括: 遍历模块,用于后序遍历所述HTML标签树,计算每个标签子树的文本率,把大于所述第一阈值的子树归入候选子树中,不再遍历其兄弟节点,直接遍历所述候选子树的父亲节占.合并模块,用于所述候选子树多于I个时,对两个所述候选子树进行合并,分以下两种情况进行合并:一、如果候选子树A是候选子树B的子树,则在所述候选子树中除去候选子树A,保留候选子树B,继续所述遍历步骤;二、如果候选子树A和候选子树B分处不同子树,则寻找共同祖先节点,然后把以共同祖先节点为根节点的子树作为所述候选子树,把候选子树A、B除去,继续所述遍历步骤,遍历完成后得到的所述候选子树即为所述最大候选子树; 剪枝模块,用于遍历所述最大候选子树进行剪枝,把文本率不大于所述第一阈值的叶子节点全部除去,生成新的所述最大候选子树。
11.根据权利要求8所述的装置,其特征在于,所述节点簇模块包括: 遍历模块,用于广度优先遍历所述最大候选子树,计算兄弟节点间的差异度,两个兄弟节点的标签差异度大于第三阈值则认为两个兄弟节点具有相似结构,其中,对不同层次的节点设置不同的第三阈值,层次越深,设置所述第三阈值越大,将具有相似结构的节点聚类为一个子集; 循环模块,用于分别对各个已经聚类的子集重复所述遍历步骤,直至即各个聚类子集元素个数均为I ; 选择包含子集数量最多的集合,将集合`中的各子集分别作为各楼层贴。
全文摘要
本发明提供了一种论坛贴内容抽取方法,包括由论坛贴的源代码生成HTML标签树;将HTML标签树中的文本率大于第一阈值的标签子树合并得到一颗最大候选子树;从最大候选子树中筛选得到所有具有相似结构的节点簇;从节点簇中筛选文本率大于第二阈值的节点簇;抽取筛选的节点簇中的文本内容。本发明还提供了一种论坛贴内容抽取装置。本发明实现了论坛贴内容的自动抽取。
文档编号G06F17/30GK103116591SQ20111036636
公开日2013年5月22日 申请日期2011年11月17日 优先权日2011年11月17日
发明者张涛, 于晓明, 杨建武 申请人:北大方正集团有限公司, 北京大学, 北京北大方正电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1