专利名称:基于dom节点文本密度的网页核心块确定方法
技术领域:
本发明涉及一种基于DOM节点文本密度的网页核心块确定算法,属于计算机应用技术领域。
背景技术:
随着互联网的高速发展,Wffff已经成为目前世界上最大的资料库。因此,在web中进行数据挖掘以获取有用的信息或知识逐渐成为一个新兴的热点研究方向。这些研究需要快速高效地收集、处理和存储web中核心内容。然而,网页中的这些核心内容,往往被大量的无关信息所包围。如,导航菜单、边栏广告、版权信息等等。虽然这些信息,能够使网页的内容丰富美观,同时方便用户浏览,但是其与网页的主题并不相关, 也使得这些网页难以被计算机程序解析。为了显著提高web数据挖掘和信息检索的效果,内容抽取(Content Extraction——CE)技术被提出以删除网页中存在的这些噪声数据。一般情况下,内容抽取技术能够显著地提高这些算法的效果,并且对于很多实际应用来说,其也是必不可少的。在传统情况下,构建语料库是一个非常昂贵且耗时的工程。但是,通过从web中自动地下载文本数据,可以在短时间内以相对较低的开销来建立一个异常庞大的语料库。 因此,“ffeb as Corpus”(网络语料库)这个创意,已经吸引了众多自然语言处理以及相关领域的研究人员。为准备数据以用于自然语言研究,ACL-SIGWAC在2007年举行了第一届 CleanEval 匕匕胃0另一方面,随着手机、PDA等小屏幕移动设备的大量普及,得到网页核心内容,从而调整网页以适应这些小屏幕已成为一个日益重要且极具挑战的任务。近十年来,研究人员已经提出了大量的CE方法。早期,一些方法根据多个结构相似的网页中存在的共同模板,利用正则表达式来手动提取网页中的核心内容。这种方法的准确度非常好,计算效率也很高。但是一个明显的缺陷是,对于不同的网站,都需要生成不同的正则表达式。甚至,大多数网站都具有多个不同的结构模板。另外,即使只针对一个站点,网站的改版也会使得此算法失效。2010年WWW会议,Tim Weninger等人提出了 CETR算法对网页进行核心内容的抽取。CETR算法首先计算每一行中字符个数与标签个数的比例,然后在此基础上提出了三种不同的方法来提取核心内容。CETR-TM使用简单的阈值办法进行核心内容的抽取;CETR-KM 使用K-means聚类进行核心块的抽取;而最终的CETR算法添加了另一维数据,在二维数据上进行聚类。但CETR算法存在以下缺点1.以行为单位计算文本比例。导致这种计算方法,受不同的网页代码风格影响很大,使得对于不同的网页可能效果差异很大。如极端情况下,所有的代码都写在一行。虽然作者进行了一定的处理,当一行字符数超过65,则截断。但并不能完全消除这样的影响。2.只能提取网页核心块的文本信息,不能保留网页原本的结构信息。这样难以与其他应用集成,如结构化信息抽取。3.没有充分利用网页中噪声数据的特点,区分效果不是十分明显。4.不能完整地提取出核心块内容,容易丢失其中密度低的行。
发明内容
本发明的目的在于针对现有技术的缺点,提供一种新的高效的网页核心块确定方法。本发明提供了一种基于DOM节点文本密度的网页核心块确定方法,包括以下步骤步骤一、解析HTML网页,生成DOM树;本发明基于网页的DOM树结构对网页进行核心内容的抽取。文档对象模型 (Document Object Model,DOM)是通用的用来操作和更新文档内容、结构和样式的标准的、 语言和平台无关的接口。每一个网页都对应了一个DOM树,其中每一个HTML标签对应于 DOM中的一个节点,其中网页中的文字内容,则是DOM树的叶子节点。优选的,在生成DOM树之前,首先删除网页中的script、comment和style等标签内容,因为这些内容在网页中并不可见,如果将其计算在内则会干扰最终结果。在生成DOM 树过程中,我们以<body>为起始标签,因为整个网页中所有可视内容都包含在<body>标签中。步骤二、计算DOM树中各节点的文本密度一旦一个HTML文档被解析成一棵DOM树,每一个节点所包含的文本字符和标签的数量都可以被统计出来。因此,可对每个节点添加两个统计信息1. Chars 节点所包含的所有文本字符的个数;2. Tags 节点所包含的所有标签的个数;一般情况下,网页的核心内容包含的字符会远高出其他部分。进一步的研究表明, 网页中的噪声数据绝大部分都是以链接的形式存在。据此,我们可以统计出每一个节点所包含链接个数以及其下所有链接文本的字符个数。对每个节点添加如下信息1. LinkChars 节点所包含的所有超链接文本字符个数;2. LinkTags 节点所包含的所有超链接个数;利用上述四个统计,对于每一个节点,我们定义其文本密度如下若i是网页中的一个标签(对应于DOM树中的一个节点),则标签i的文本密度 (Text Density, TD)为
权利要求
1.一种基于DOM节点文本密度的网页核心块确定方法,包括以下步骤步骤一、解析HTML网页,生成DOM树,使每一个HTML标签对应于DOM树中的一个节点, 网页中的文字内容则是DOM树的叶子节点;步骤二、为每个节点添加4个统计信息(1)Chars节点所包含的所有文本字符的个数;(2)Tags节点所包含的所有标签的个数;(3)LinkChars 节点所包含的所有超链接文本字符个数;(4)LinkTags节点所包含的所有超链接个数;对于每一个节点,定义其文本密度如下若i是网页中的一个标签,即i对应于DOM树中的一个节点,则标签i的文本密度为CCT =^log c LC'-)其中,Ci表示标签i对应的Chars,Ti表示标签i对应的Tags,LCi表示标签i对应的 LinkChars,]iX;表示标签i所含的所有非超链接字符的个数即Chars与LinkChars的差值;LTi表示标签i对应的LinkTags,LCb表示<body>标签对应的LinkChars ;Cb表示<body> 标签对应的Chars ;步骤三、根据DOM树中节点的文本密度确定网页核心块。
2.根据权利要求1所述的一种基于DOM节点文本密度的网页核心块确定方法,其特征在于,在步骤一中,以<body>为起始标签。
3.根据权利要求1或2所述的一种基于DOM节点文本密度的网页核心块确定方法,其特征在于,利用节点文本密度值的高低作为是否是核心块的判断依据,根据对文本密度值的统计定义一个阈值,如果其高于阈值,则认为为核心块;反之,则认为是噪声数据。
4.根据权利要求3所述的一种基于DOM节点文本密度的网页核心块确定方法,其特征在于,将<body>的文本密度作为阈值来区分核心块和噪声数据。
5.根据权利要求1或2所述的一种基于DOM节点文本密度的网页核心块确定方法,其特征在于,在步骤三中,对于网页中任一标签N,定义N的密度和如下DensitySumN = ^ TextDensityiieC其中,C表示N子标签的集合,TextDensityi表示标签i的文本密度值;利用密度和值的高低作为是否是核心块的判断依据。
6.根据权利要求5所述的一种基于DOM节点文本密度的网页核心块确定方法,其特征在于,找到密度和最大的节点,并将其下所有子节点一起提取出来,作为网页的核心块。
7.根据权利要求5所述的一种基于DOM节点文本密度的网页核心块确定方法,其特征在于,从<body>的下层节点开始,按照以下步骤提取出网页的核心块(一)定义一个阈值;(二)按照从上至下的顺序,遍历DOM树中所有节点,对每个节点执行如下操作(1)如果节点文本密度低于阈值,则认为其为噪声数据,将该节点及其所包含的子树删除;(2)如果节点文本密度高于阈值,则寻找其下密度和最大的节点,将其所包含的子树标记为核心块。
8.根据权利要求7所述的一种基于DOM节点文本密度的网页核心块确定方法,其特征在于,所述阈值为<body>的文本密度。
9.根据权利要求7所述的一种基于DOM节点文本密度的网页核心块确定方法,其特征在于,首先寻找网页中文本密度和最大的节点,然后从此节点回溯到<body>节点,设此路径上文本密度最小值为阈值。
全文摘要
本发明涉及一种基于DOM节点文本密度的网页核心块确定方法,包括以下步骤一、解析HTML网页,生成DOM树,使每一个HTML标签对应于DOM树中的一个节点,网页中的文字内容则是DOM树的叶子节点;二、为每个节点添加包含节点所包含的所有文本字符的个数、节点所包含的所有标签的个数、节点所包含的所有超链接文本字符个数、节点所包含的所有超链接个数的统计信息,并根据统计信息定义节点的文本密度;三、根据DOM树中节点的文本密度确定网页核心块。本发明可以在免受网页代码风格的影响及保留原始网页DOM结构的前提下,完整地提取出网页中的核心内容块。
文档编号G06F17/30GK102184189SQ20111009613
公开日2011年9月14日 申请日期2011年4月18日 优先权日2011年4月18日
发明者孙飞, 宋丹丹, 廖乐健, 王晓华 申请人:北京理工大学