基于文本结构权重的主题区域识别方法

文档序号:6434904阅读:185来源:国知局
专利名称:基于文本结构权重的主题区域识别方法
技术领域
本发明涉及Web数据挖掘领域的Web信息抽取技术,特别是针对文本为主的半结构化Wfeb网页,抽取Wfeb网页中与其主题相符的文本内容的方法。
背景技术
目前,Web信息抽取按自动化程度分有以下三种方式(1)人工方法这种方法是通过人工观察出Web页面的特征,然后进行手工标记, 提取目标信息的模式,再根据此模式有针对性的编写程序生成包装器(Wrapper),然后通过 Wrapper抽取目标信息。这种方法只能针对指定站点,不具通用性。这类系统要求用户具有扎实的计算机编程基础。正因为如此,人工方法适合少量站点的情况,无法适应海量站点的场合。(2)半自动抽取这种方式是半自动的,相对于手工方法,这种方式减轻了人工劳动。它通过从训练网页中提取规则,然后将此规则应用于与此类网页相似的网页中。在这种方法里,如何判断相类似的网页是关键。这类方法不需要用户具有计算机专业基础,只需要用户利用系统提供的用户界面,输入训练用例即可。国外已有许多关于这种方法的研究, 典型的系统有WHISK、STALKER、S0FTMEALY等。WHISK[1]系统适合于结构化、半结构化数据和自由文本,对结构化和半结构化数据,WHISK根据语义项的上下文定位目标信息。对于自由文本,则采用分割方式处理。但是WHISK在规则学习过程中规则不能保证以最优的方式进行扩展,且生成规则集的时间较长。STALKER系统[2][3]将Web数据建模成嵌套关系,利用地标思想,得到SkipToWlR)序列的抽取规则。S0FTMEALY系统M中曾用归纳学习方法学习两个属性间的上下文规则集来确定属性间的顺序,由元组转换机提取信息的内容,但效率较低。(3)自动抽取这种方式起始于1998年,给定一张或者若干网页,程序自动从其中发现规则,然后抽取目标数据。它不需要太多人工干预,因此适合于大量站点的情形。这类系统的代表有RoadRunner[5],该系统通过对2个或多个样本页面结构的比较,提取一个利用正则表达式表示通用结构模式,然后根据结构模式实现对相似页面的信息抽取,该系统利用了结构模式中文档对象模型(DOM,Document Object Model)标记的关系,如节点之间的嵌套的关系。Web信息抽取按照抽取技术路线可以分为以下几种(1)基于HTML解析的数据抽取技术基于HTML解析的数据抽取方法可以分为两个类别,第一种是将HTML网页看作是一个由HTML标记和普通字符串构成的序列集合。简单的说就是把整个文档当成一个字符串,利用现在已有的通用编程语言如Perl,Java等设计程序对此字符串进行处理,以文档字符串为输入,利用正则表达式进行模型匹配,输出目标信息字符串。这种方法是基于字符串的,没有利用到HTML网页已有的半结构化特征,不涉及其层次结构。STALKER是利用这种方法的典型系统,此系统基于地标思想。每一个地标是一个连续的标志序列,此标志序列用于定位一个目标项的开头或结尾。例如对于已知文档
Name :<b>Hotel 0ne</bX/p>, 则利用规则Rl =SkipTo (<b>)可以识别名字的开头。这条规则意味着系统应该从网页的开头开始,跳过所有的字符,直到看到第一个<b>字符串为止,此时<b>就是一个地标。同理, 识别名字的结尾可以使用规则R2 =SkipTo (</b>),不同的是R2从文档结尾应用到文档的开头。因此Rl被称为开始规则,R2被称为结束规则。第二种是利用HTML文档的结构,将其转换为一棵有层次的DOM树,然后通过分析和处理树的层次结构,抽取所需要的数据。这类方法的常用代表系统有W4F[6],XWrapm等。(2)基于包装器(Wrapper)归纳的数据抽取技术包装器归纳是基于有监督学习的,它从一个标注好的训练样例集合中学习抽取规则。标注通常是手工完成的,包括标记训练网页或样例中用户希望抽取的数据项。随后学到的规则被用于其他相同标记编码或者有相同模板的网页中抽取目标数据。采用这类技术的典型系统有WIEN[8],WL2[9], SOFTMEALYm等。WL2是一个能够利用文档的不同展示方式的抽取系统。对WL2来说,文档既可以是DOM水平的,也可以是节点水平的,以及几何二维展现的页面(如表格数据)。(3)基于自然语言处理的数据抽取技术基于自然语言处理的数据抽取技术适合于文档中包含大量文本的情况,它借鉴了自然语言处理技术,通常包括句法分析、语义标注、对象识别和规则生成等步骤。采用这种技术的系统抽取信息速度不够快,典型系统有WHISK[1],SRV[11]。WHISK系统适用性较广,能同时适合于结构化、半结构化数据和自由文档。其基础为正则表达式,通过正则表达识别出目标短语所在位置和短语之间的分隔符。此系统采用自上而下的方式进行归纳,先用最抽象的规则开始覆盖训练实例,然后通过不断调节,在此规则上添加约束。直到抽取目标信息为止。(4)基于本体论的数据抽取技术按照斯坦福大学人工智能专家Tom Gruber的定义,本体(Ontology)是程序与人共享知识的概念化规范,描述了代理之间的概念和关系,采用此技术的系统主要利用数据本身的特性,而不太重视这些数据所拥有的结构。但是目前的系统需要相关专家对Web网页进行本体(Ontology)建模。采用这类技术的典型系统有BYU[12]、QUIXOTEm等。BYU是由杨柏翰大学(Brigham Yong University)开发的。在使用时先要某领域专家完成本体 (Ontology)建模,如对象的模式,关键字等。然后根据启发式信息和地标对文档进行分块, 这些块的描述均有同样的抽象特征;在此基础上根据本体中的信息生成规则,最后利用规则抽取结果。从抽取技术的智能度来看,手工式的抽取技术几乎不需要智能因素,因为其所要抽取的数据已经通过手工方式进行了标注,比如数据所在位置,是否可选项等信息均人工发现。因此这种技术对使用者要求高,一般只适合于专业人士。半自动抽取和自动抽取技术则降低了使用者的要求,同是提升了智能度。正因为如此,可以自动化的处理大量数据抽取任务。从抽取技术的应用范围来看,手工抽取方法不限于特定领域,其适用范围最广泛, 延伸性最好。而随着智能因素的增加,半自动化和全自动化抽取则逐渐受到应用领域的影响。比如半自动抽取器STALKER是基于HTML解析的数据抽取技术,其对纯文本的抽取显得力不从心。全自动的抽取算法RoadRunner则是基于HTML解析结构的抽取,其对结构不标准的源数据抽取也不尽人意。而且,现有的全自动的抽取技术大多数都釆用的人工智能、机器学习的方法,这些方法计算量大,抽取速度慢,影响实际应用效果。另外这类方法往往需要附加一些前提条件,如RoadRunner需要提供同一模板生成的2个页面,要求页面里含有重复模式,使得其使用受到限制。针对上述问题,本技术领域亟待出现文本为主的半结构化Web网页的自动信息抽
取方案。参考文献[1] S0DERLAND S. Learning Information Extraction Rules for Semi-structured and Free Text[J]. Machine Learning,1999,34(1-3) :233-272.[2]Muslea,I.,Minton, S.and Knoblock,C. A hierarchical approach to wrapper induction. Agents—99,1999.[3]Muslea,S· Minton,and C· A· Knoblock,STALKER !Learning Extraction Rules for Semi-structured Web. based Information Sources.In Proc. of AAAI Workshop on AI and Information Integration,July 1998 :74-81.[4] C. N. Hsu and Μ. T. dung. Generating finite-state Transducers for Semi-structured Data Extraction from the web Information Systems,23(8),1998 : 521-538.[5]Valter Crescenzi, Giansalvatore Mecca, Paolo Merialdo RoadRunner Towards Automatic Data Extraction from Large Web Sites. Proceedings of the 27th VLDB Conference,Roma, Italy, 2001.[6]A. Saiiuguet, F Azavant. Building Intelligent Web Applications Using Lightweight Wrappers[J]. Data and Knowledge Eng, 2001, vol.36 (3) :283-316.[7]L. Liu, C. Pu, W. Han. XWRAP :An XML-Enabled Wrapper Construction System for Web Information Sources [J]. Proc. 16th IEEE Int,l Conf· Data Eng. (Idffi),2000.[8]N. Kushmerick, D. Weld, R. Doorenbos, Wrapper Induction for Information Extraction[J]. Proc. 15th Int^ 1 Conf. Artificial Intelligence (IJCAI),1997 729-735.[9] W. W. Cohen,M. Hurst, and L S. Jensen. A Flexible Learning System for Wrapping Tables and Lists in Html Documents. In Proc. of the Ilth Intl. World Wide Web Conf. (WWW,02),pp. 232—241,2002.[10] S0DERLAND S. Learning Information Extraction Rules for Semi-structured and Free Text [J]. Machine Learning,1999,34(1-3) :233-272.[11]D.Freitag.Information Extraction from HTML-Application of a General Learning Approach [J]. Proc. 15th Conf. Artificial Intelligence(AAAI,98), 1998.[12]Embley D. W. , Jiang Y. S. , NG Y. K. Record-Boundary Discovery in Web Documents[J]. In proceedings ACM SIGMOD International Conference on Management of Data. Pennsylvania, USA,1999.[13]Christina Y C. , Michael G,Neel S. Reverse engineering for web data From visual to semantic structures[J]. In proceedings of the 18'Th International Conference on Data Engineering. San Jose, California,2002.

发明内容
本发明目的在于解决现有问题不足,针对文本为主的半结构化ffeb网页,基于 HTML解析提供全自动的Web信息抽取技术。本发明的技术方案为基于文本结构权重的主题区域识别方法,其特征在于,包括以下步骤步骤1,将待识别Web网页转换成标签树,具体通过以下步骤实现,步骤1. 1,通过对待识别Web网页的HTML文档进行字符扫描,识别出起始节点、结束节点、全结构节点和文本节点;所述起始节点是以字符“ “〈”和“〉”的字符串;所述结束节点是以字符“ < “〈”、“〉”和“/”的字符串;所述全结构节点是以字符符“〈”、“〉”和“/”的字符串;所述文本节点是以上三种节点以外的字符串;步骤1. 2,采用解析器,依据步骤1. 1识别出的起始节点、结束节点、全结构节点和文本节点进行标签树的构建,得到的标签树记为A ;构建过程利用堆栈操作来确定各节点的层次关系,包括以下堆栈操作,当解析器发现一个起始节点时,触发入栈操作和在当前标签树中新建标签操作,当解析器发现一个结束节点时,触发退栈操作,当解析器发现一个全结构节点时,触发入栈操作,同时更新标签树,在更新标签树完成后立刻退栈操作;当解析器发现一个文本节点时,触发入栈操作,入栈操作后立刻退栈操作;步骤2,在步骤1所得标签树A中搜索相似区域,并进行去链接预处理,得到标签树 B,具体通过以下步骤实现,步骤2. 1,在步骤1所得标签树A中搜索相似区域;所述相似区域是由一组相似节点组成的,相似节点是标签树A中满足以下特性的节点,(1)所有的节点共同拥有同一个父节点;(2)所有节点是相邻的;(3)相似节点是子树的根节点或叶子节点;(4)与同一区域中的其他节点的相似度大于预设的阈值a ;步骤2. 2,在步骤2. 1搜索到的所有相似区域中识别语义链接块,并将识别出的语义链接块从标签树A中摘除,得到标签树B ;所述语义链接块是指由链接组成的,在视觉上呈列表状,每一项表现为超级链接的网页区域;步骤3,对步骤2所得标签树B进行主题内容抽取,具体通过以下步骤实现,步骤3. 1,求出标签树B中所有节点的文本结构权重,找出某棵子树链下文本结构
〈”开始,以字符“〉”为结束,且这两者之间不存在字符 7”开始,以字符“〉”为结束,且这两者之间不存在字符 “〈”开始,以字符“/>”为结束,且这两者之间不存在字权重值最大的节点,该节点所在相似区域即主题区域,该节点记为主题区域节点C ;所述文本结构权重是指文本在相似区域中所占的比重;步骤3. 2,对步骤3. 1所得主题区域进行去噪,包括两个步骤;步骤3. 2. 1,获取步骤3. 1所得主题区域节点C的子树所包含的所有文本节点的长度,其中最大长度记为maxlength ;步骤3. 2. 2,遍历主题区域节点C的子树,根据最大长度maxlength对子树中每一个文本节点的长度计算归一化值,并与预设的阈值K比较;如果不小于预设的阈值K则保留,否则从主题区域节点C的子树中摘除该文本节点;步骤3. 3,对步骤3. 2所得去噪后的主题区域所对应的节点输出,即输出最底层叶子节点的文本内容,得到待识别Web网页的主题内容。而且,步骤1. 2中,标签树的具体构建方式包括以下步骤,步骤1. 2. 1,声明一个解析器实例和一个单例模式堆栈实例,并从待识别Web网页的HTML文档中读取一个节点;步骤1. 2. 2,如果读取的节点是结束节点、全结构节点或者文本节点,则将该节点出栈,然后进入步骤1. 2. 3 ;否则,转步骤1. 2. 4 ;步骤1. 2. 3,层次值减一,并将父节点指针指向步骤1. 2. 2出栈的节点的父节点, 更新标签树;步骤1.2. 4,如果读取的节点是起始节点、全结构节点或者文本节点,则声明一个新的堆栈项,并将该节点入栈,然后进入步骤1. 2. 5 ;否则,直接进入步骤1. 2. 7 ;步骤1. 2. 5,层次值加一,同时将步骤1. 2. 4入栈的节点插入父节点指针当前指向的节点的孩子集中;步骤1. 2. 6,将当前节点指针指向步骤1. 2. 4入栈的节点,并更新标签树;步骤1. 2. 7,从待识别Web网页的HTML文档中读取下一个节点,重复步骤1. 2. 2至步骤1. 2. 6,直到待识别Web网页的HTML文档解析完成,构建得到的标签树记为A。而且,步骤2. 1中,在步骤1所得标签树A中搜索相似区域时,采用简单树匹配算法计算相似度,利用堆栈消除递归,对标签树A进行遍历,发现相似节点时进行标记,识别出相似区域;具体遍历实现包括以下步骤,步骤2. 1. 1,初始化当前节点指向标签树的根节点,初始化堆栈;步骤2. 1. 2,如果当前节点的孩子数不为0,则当前节点入栈,执行步骤2. 1. 3 ;否则从标签树A中取下一节点作为当前节点,返回步骤2. 1. 2,直到取完标签树A中所有节点, 进入步骤2. 1. 7 ;步骤2. 1. 3,判断堆栈是否为空,当堆栈不为空时执行步骤2. 1. 4,当堆栈为空时返回步骤2. 1.2 ;步骤2. 1. 4,栈顶元素出栈,赋值给当前节点;步骤2. 1. 5,遍历当前节点的最近一层子节点,依次比较两个相邻子节点代表的子树的相似度,如果相邻节点的相似度小于阈值a,当前两个相邻子节点标记为删除,否则当前两个相邻子节点标记为相似节点;遍历完成后进入步骤2. 1. 5 ;步骤2. 1. 6,当前节点标记为相似区域;取当前节点下的所有子节点,依次入栈, 然后转步骤2. 1. 3 ;
步骤2. 1. 7,对标签树A进行遍历完成,所有相似区域均被发现。而且,步骤2. 2中,识别语义链接块的具体方式包括以下步骤,步骤2. 2. 1,取出当前相似区域DR的根节点root,计算出根节点root所包含的子节点个数;步骤2. 2. 2,以宽度优先的方式,遍历根节点root所包含的子节点,对遍历到的当前子节点执行以下操作,对当前子节点,以宽度优先的方式遍历当前子节点的子树,如果检测到链接标签 “<a>”,则将此标签的深度偏差值存入哈希表,所述深度偏差值等于此标签的深度值减去根节点root的深度值;同时记录此深度偏差值出现的次数,记录方式是以深度偏差值为键, 次数为键所对应的值;步骤2. 2. 3,在步骤2. 2. 2遍历完根节点root所包含的子节点后,求出哈希表中所有次数之和,即得到当前相似区域DR中最低层链接标签“<a>”出现的总次数AT ;步骤2.2. 4,从哈希表中,找出次数最大的项,此项的键为j,j即是包含最多链接标签“<a>”的深度偏差值,该键对应的次数值就是最大次数取值LC ;步骤2. 2. 5,计算出链接同层次值LK,LK = LC/AT;如果当前相似区域DR的链接同层次值LK大于或等于预设值L,则认为此相似区域是语义链接块。而且,步骤3. 1中,找出某棵子树链下文本结构权重值最大的节点,具体实现包括以下步骤,步骤3. 1. 1,初始化类实例weight,类实例weight用于指向具有最大文本权重的节点;初始化最大文本权重的变量maxweight,并赋初值0 ;初始化堆栈;申明临时变量 tempweight;步骤3. 1. 2,如果输入源标签树source为空,则进入步骤3. 1. 9,否则转步骤 3. 1. 3 ;步骤3. 1. 3,源标签树source根节点入栈;步骤3. 1. 4,判断堆栈是否为空,当堆栈不为空时执行步骤3. 1. 5,当堆栈为空时进入步骤3. 1. 9 ;步骤3. 1. 5,当前节点指向栈顶节点;步骤3. 1. 6,计算当前节点的文本权重并赋值给临时变量tempweight ;步骤3. 1. 7,如果临时变量tempweight的值大于变量maxweight的值,则令变量 maxweight等于临时变量tempweight的值,同时让类实例weight的属性Treenode指向当前节点,转步骤3. 1. 8 ;否则,直接转步骤3. 1. 8 ;步骤3. 1. 8,将当前节点的子节点依次入栈,转步骤3. 1. 4 ;步骤3. 1. 9,返回类实例weight,即主题区域。本发明选择以标签树的形式来处理包含半结构化、自由文本的网页,通过树匹配、 计算文本结构权重识别数据区域、寻找主题,最后通过去噪过程实现主题文本内容的抽取。 与现有方法相比,本发明优点主要表现在(1)实现简单,不涉及机器学习等智能技术;(2) 由于实现简单,因此运行速度快,实时性好;(3)适应性强,没有附加前提条件。运用本发明技术方案能够在互联网上抽取有用的文本主题信息,为读者节约宝贵的时间和精力。此外,在现实中主题的抽取有着许多具体的应用。比如,转换成网络语音浏览器产品,该产品用于语音新闻浏览,这对视障者(包括盲人和低视力者)来说,获取互联网信息就容易多了。普通的浏览器只提供视觉上的体验,大多数网站只针对视力正常的人制作,一般都没有考虑到为视障者提供服务,因此视障者很难直接浏览WEB页面。基于HTML的TOB页面的一大特点是页面上充满着超级链接,这些链接指向着另外一个页面,视障者也无法正确定位这些链接,也就无法有效的实现网页跳转。为了能让视障者更好的利用互联网资源,可以利用自动化抽取主题的方法并通过TTS技术实现朗读,这样就可以有效的帮助他们从互联网中获取知识。


图1是本发明实施例的流程图。图2是本发明实施例的标签树生成过程示意图。图3是本发明实施例的相邻的两条记录示意图。图4是本发明实施例的记录边界示意图。图5是本发明实施例的节点权重与标签树深度之间的趋势示意图。
具体实施例方式以下结合附图和实施例详细说明本发明技术方案。如图1所示,实施例首先进行网页获取,然后进行网页去噪,从而获得待识别Web 网页。网页获取是最原始的数据来源,负责提供待识别的Web网页。具体实施可以采用一个简易的宽度优先爬虫实现网页获取,首先由种子URL地址从因特网(Internet)获取网页, 然后分析其中链接,将新鲜的链接存入队列中,接着循环从队列中取出链接,直到达到用户目的或者队列为空时停止。网页去噪就是对获取的网页进行标准化,这样可以提高识别准确率。具体实施时,可以按照事先设定的清理规则对待识别Web网页的HTML文档进行标准化,清理对解析有害的标签和无用的标签,如注释、样式和脚本等。为便于参考起见,提供实施例对待识别的Web网页进行主题区域识别的流程如下步骤1,将待识别的Web网页转换成标签树。首先通过字符扫描,识别出起始节点、结束节点、全结构节点和文本节点。然后依据这三种节点采取不同的策略进行标签树的构建,这个过程利用堆栈的特性来确定各节点的层次关系。一个遵守XML标准的Web网页可以用以下两种形态描述(1) 一个由满足特殊语法结构的(X)HTML(超文本标记语言)标签与文本组成的字符串。(2) —个由不同标签嵌套形成的树状结构。标签树是利用形态(2)建立起来的一种结构,是一个Web网页的不同描述形态,类似于D0M(文档对象模型),但其与DOM有着明显的不同。标签树是一个Web网页的静态模型,而DOM则可以看作是Web网页的动态模型,下面是标签树的基本特征(1)与标准化的Web网页有相同的层次结构。(2)标签树中不存在封闭标签。(3)标签树节点名均与(X)HTML标签名一致。
标签树构建过程如图2所示,对标准化后的待分析网页,经解析器顺序扫描,依次读取HTML标签节点HtmlTag,如果读取的节点HtmlTag是起始节点、全结构节点或者文本节点,则声明一个新的堆栈项,并将其放入堆栈UrlMack,同时层次值加一,同时将该入栈节点插入当前父节点指针指向的节点的孩子集中;如果读取的节点HtmlTag是结束节点、全结构节点或者文本节点,则将堆栈tolStack的顶层项取出,同时层次值减一,并将父节点指针指向出栈节点的父节点,更新标签树。重复此步骤,最终将网页解析成如图2所示的树状结构——称为标签树。图2中所示的起始节点、结束节点、全结构节点或文本节点定义如下定义1 以“〈”开始,以“〉”为结束,且这两者之间不存在“ <,,和“ >,,的字符串,称为起始节点。起始节点在算法中起着定义边界的作用,即确定层次的起始点。对应到堆栈操作中,它会触发一个入栈操作和在当前标签树中新建标签操作。定义2 以“ </ ”开始,以“〉”为结束,且这两者之间不存在“ < ”、“ > ”和“ / ”的字符串,称为结束节点。结束节点即一个完整标签的结束部分。在生成标签树时,解析器凡是检测到结束节点,均会发出退栈命令,此时,是否更新当前标签树有两种策略可供选择,其一是不更新标签树,如果选择此策略,则在最终标签树中,看不到任何结束节点。但这不妨碍对它的显示,因为算法可以根据入栈后的层次确定父子关系。策略二是显示所有结束节点, 这样标签树中节点的数量将有可能增加一倍,这对程序运行效率有极大影响。所以,实施例选择了策略一。定义3 以“〈”开始,以“/>”为结束,且这两者之间不存在“〈”、“〉”和“/”的字符串,称为全结构节点。全结构节点是一种特殊的节点,因为它具备起始节点和结束节点的部分特性,既起着定义层次边界的作用,也可以看作完整标签的结束部分。由于它兼有这两种特性,程序对它的处理也不相同,其策略如下当解析器发现一个全结构节点时,会触发一个入栈操作,同时更新标签树。当此操作完成后,立刻发出退栈命令。定义4 凡是不满足定义1、定义2、定义3的字符串,均称为文本节点。对文本节点采取的策略是入栈后立刻退栈。基于以上四个定义,实施例的标签树构建方式包括以下步骤步骤1. 2. 1,声明一个解析器实例和一个单例模式堆栈实例,并从待识别Web网页的HTML文档中读取一个节点;步骤1. 2. 2,如果读取的节点是结束节点、全结构节点或者文本节点,则将该节点出栈,然后进入步骤1. 2. 3 ;否则,进入步骤1. 2. 4 ;步骤1. 2. 3,层次值减一,并将父节点指针指向步骤1. 2. 2出栈的节点的父节点, 更新标签树;步骤1.2. 4,如果读取的节点是起始节点、全结构节点或者文本节点,则声明一个新的堆栈项,并将该节点入栈,然后进入步骤1. 2. 5 ;否则,进入步骤1. 2. 7 ;步骤1. 2. 5,层次值加一,同时将步骤1. 2. 4入栈的节点插入父节点指针当前指向的节点的孩子集中;步骤1. 2. 6,将当前节点指针指向步骤1. 2. 4入栈的节点,并更新标签树;步骤1. 2. 7,从待识别Web网页的HTML文档中读取下一个节点,重复步骤1. 2. 2至步骤1. 2. 6,直到待识别Web网页的HTML文档解析完成,构建得到的标签树记为A。
为便于实施参考起见,以下提供采用C语言实现标签树构建过程的程序代码
输入标准化的Web网页; 输出标签树
AlgorithmBuildTree(source)//标签树生成算法,source为网页地址
(1)parser = new Parser
(2)int layer = O
(3)treenode = null
//实例化解析器 //初始化当前层次 //初始化当前树节点变量
(4) while(parser. pointer is lower than the length of source)
度时执行
//当解析器指针小于网页长
(5)ch = parser. readChar()
(6)if (ch equal'〈,)
(7)then
(8)
htmltag = parser. readTagQ
(9) if (htmltag is closetag)
节点或者文本节点
(10) (11) (12)
(13)
(14)
(15)
文本节点
(16) 项
(17)
(18)
then
queueitem = UrlStack.pop() layer = layer - 1
//解析器读取网页的当前字符 //如果当前字符等于字符'<’
//则解析器读取Html标签 //如果读取的Html标签是结束节点、全结构
//则单例模式堆栈UrlStack执行出栈 //当前层次减1
treenode = queueitem. parent
//当前树节点指向出栈节点的父节点
update TagTree
Else
//更新标签树
//如果读取的Html标签是起始节点、全结构节点或者
queueitem = new Queueltem(htmltag,layer) //新建一个当前层次的堆栈
UrlStack.push(queueitem) layer = layer+1
//将新建的堆栈项入栈
//当前层次加1
(19)treenode. addchild(queueitem)
点插入当前父节点指针指向的节点的孩子集中
(20) (21) (22)
签树

treenode = queueitem.treenode
//将入新建的堆栈项所对应的节
//当前树节点指向入栈节点
update TagTree//更新标签树
return TagTree ///当解析器指针大于网页长度,即解析完成后返回生成的标
对于此代码,说明如下 在步骤(5)中,解析器读取-
-个字符前,解析器总是识别出一个节点的起始处,由
定义1、2和3可知,步骤(5)读取的字符总应该为“〈”或者文本。解析器在步骤(8)时解析出一个Htmltag,返回的是一个标签节点或文本节点,并且将整个字符串的当前字符指针指向下一个标签节点的起始字符,其过程如下首先算法跳过空白字符,直到检测到非空白字符。由于算法中定义的标签只有两种,经过分析发现标签节点是以“〈”开始并且以“〉”结束。因此算法利用此特性进行判断,若当前字符为“〈”则扫描指针不断下移,直到出现“〉”, 这时返回一个标签节点。当前字符不是“〈”时,则即将出现的节点是文本节点,停止识别文本节点的条件是遇到了字符“<”。单例模式是本领域术语,表示保证一个类仅有一个实例, 并提供一个访问它的全局访问点。步骤2,在步骤1所得标签树A中搜索相似区域,并进行去链接预处理,得到标签树 B0相似区域发现是噪声(主要是指超链接块)清理过程核心算法,噪声清理过程是为了提高主题抽取的准确率而进行的预操作。只要清除了链接,即可以得到含有少量杂质的文本主题。它首先利用相似性的数学模型发现相似区域,而语义链接块也可看作一种相似度较大的相似区域,将相似区域的识别方法与语义链接块自身的特征结合起来进行语义链接块的识别。当发现语义链接块时,将其从标签树中摘除,以达到清除链接的目的。步骤2. 1,在步骤1所得标签树A中搜索相似区域。相似区域这一概念来自于网页列表数据。每个列表页面中的数据记录都具有几乎相同的特征,这一特征可以简要描述为用同一编码函数将每一条记录进行编码,这个编码函数称之为模式(Pattern),因此相似区域的发现就转化为这个模式的发现。为了发现模式,利用了 DOM结构的两个重要的事实。事实1 对于满足相似区域要求的一系列子树,它们所描述的对象通常都连续的出现在同一张网页的某一块区域,并且都是用相似的HTML标签格式化的,也就是说每个子树都拥有相似的模式。这样一个区域就代表一个列表。例如,在图3中两条搜索记录(用标签树表示)相邻出现,记录1和记录2结构十分相似。图3中所示标签树中,记录1和记录2的标签代表相似的两个子树,称为相似节点,它们属于包含相似节点的区域——相似区域。标签树中的<div>、<a>、<img>、<h2>是(X) HTML标签,#Text表示文本。事实2 满足事实1的一系列子树通常有同一个父节点,并且一个数据记录不大可能分别起始和终止于其它两棵子树中间。即数据记录一般会起始于一棵子树的起始处并结束于同一棵或后面某棵子树结束处。参见图4说明此事实,设相似区域中的第一个相似节点为DIV1,第二个相似节点为DIV2,设数据记录可以起始或终止于其它两棵子树中间并且存在数据记录DR。如果用 XPath来表示路径,设此DR起始于DIVl子树下的<img>标签,即DIVl/<div>/<a>/<img>, 又设此DR结束于DIV2子树下的<img>标签,即DIV2/<div>/<a>/<img>,则有如图4所示的记录。事实上,几乎不会出现图4所示的记录,因为跨子树记录不是一棵正确的子树。由 HTML的嵌套关系可以得知,子树层次高的节点至少有一个处于标签树的最上面。显然,图4 中所示的层次次高的节点为DIV2,但它没有处于最上面,因此跨子树记录一般不存在。因此,本发明将相似区域定义为Web网页上富含数据(在本申请中主要是指文本和链接)的块,在标签树中相似区域是由相似节点构成,相似节点的定义如下定义5 —个相似节点是由标签树中满足以下特性的节点
(1)所有的节点共同拥有同一个父节点;(2)所有节点是相邻的;(3)相似节点可以是子树的根节点或叶子节点;(4)与同一区域中的其他节点的相似度大于预设的阈值a ;在一个Web网页对应的标签树中,这里引入的相似节点非常普遍。一般情况下相似节点代表的是一棵树,因为它的类型是记录类型,而记录类型是基本类型的集合,因此同样可以用标签树来描述相似区域,相似区域的定义为定义6 —个相似区域是由一组相似节点组成的,这些扩展节点具备以下特性(1)所有的相似节点拥有共同的父节点;(2)所有组成相似区域的相似节点都是相邻的;(3)所有的相似节点之间的相似度应当大于预设的阈值a。为了计算相似度,本发明研究比较了基于Levenshtein distance的字符串匹配算法和树匹配算法,实施例采用了基于简单树匹配(STM)的相似度计算方法。在STM算法当中,首先比较两颗树的根节点,如果它们的根节点的标记不同,那么这两棵树最大匹配为0,也就是说这两棵树不相似如果根节点的标记相同,则算法递归地计算两棵树第1层子树的最大匹配,并且把得到的值保存在矩阵M中,然后根据M中的值计算矩阵M中的其它值。在相似区域标记算法中,计算子树相似度时,只考虑最大匹配因素是不够的,本发明采用了归一化最大匹配。归一化最大匹配是通过简单树匹配值除以两棵树的节点数的平均值来求得NMM(TreeX5TreeY) =_2 * STM(TreeX, TreeY)_ (式丄)
TreeX.Nodes. count + TreeY.Nodes. count其中,TreeX. Nodes, count 表示树 X 的节点数,TreeY. Nodes, count 表示树 Y 的节点数,STM(TreeX, TreeY)表示树X和树Y的简单树匹配值。当然这里还可以用 max (TreeX. Nodes, count, TreeY. Nodes, count)作为分母,取树X的节点数和树Y的节点数中较大者;分子为STM (TreeX,TreeY),即有下式NMM(TreeX, TreeY) =-STM(TreeX7TreeY)-(式幻
max(TreeX.Nodes. count, TreeY.Nodes. count)基于以上定义,有如下相似区域发现算法,该算法的基本原理是利用堆栈来消除递归以对树进行遍历,然后对当前遍历的结点进行标记。用堆栈来消除递归是这部分的主要思想。这其实是采用了现有技术中常用的深度优先的遍历方式,首先将一个节点入栈,然后开始循环,当栈不为空时将栈顶元素弹出。访问此结点,再将被弹出节点的孩子全部节点入栈,循环一直下去,直到栈为空。具体包括以下步骤步骤2. 1. 1,初始化当前节点指向标签树的根节点,初始化堆栈;步骤2. 1.2,如果当前节点的孩子数不为0,则当前节点入栈,执行步骤2. 1.3 ;否则从标签树A中取下一节点作为当前节点,返回步骤2. 1. 2,直到取完标签树A中所有节点, 进入步骤2. 1. 7 ;步骤2. 1. 3,判断堆栈是否为空,当堆栈不为空时执行步骤2. 1. 4,当堆栈为空时返回步骤2. 1.2 ;步骤2. 1.4,栈顶元素出栈,赋值给当前节点;
步骤2. 1. 5,遍历当前节点的最近一层子节点,依次比较两个相邻子节点代表的子树的相似度,如果相邻节点的相似度小于阈值a,当前两个相邻子节点标记为删除,否则当前两个相邻子节点标记为相似节点;遍历完成后进入步骤2. 1. 5 ;步骤2. 1. 6,当前节点标记为相似区域;取当前节点下的所有子节点,依次入栈, 然后转步骤2. 1. 3 ;步骤2. 1.7,对标签树A进行遍历完成,所有相似区域均被发现。具体实施时,阈值a的建议取值范围为0. 8 1. 0。步骤2. 2,在步骤2. 1搜索到的所有相似区域中识别语义链接块,并将识别出的语义链接块从标签树A中摘除,得到标签树B。通过相似区域标记算法识别出所有相似区域。此时标签树被划分为若干块。在此基础上,开始去链接预处理。首先在所有的相似区域中寻找语义链接块,并将其从标签树中摘除,这样就精简了树的结构,在剩余的树结构中,标签节点基本上都是文本节点,其中一定包含与主题内容相关的部分。因此去链接实际上是主题区域发现的预处理过程,达到去噪的目的,语义链接块的定义如下定义7 语义链接块是指由链接组成的,在视觉上呈列表状,每一项表现为超级链接的网页区域。由定义7可以看出,语义链接实际上就是一种相似区域,理论上可以采用相似区域识别算法来寻找语义链接块,事实上是不够的。语义链接块对其中项相似度要求要低些, 也就是说,在语义链接块中,每一项的链接不要求尽可能保持结构一致。只需要在视觉上呈现重复列表状。本发明提出了一个链接同层次值LK,LK用于统计链接标签<a>所在的层次在相似区域中的项中的比例,LK的计算过程如下。假设有一个相似区域DR,DR代表一个相似区域的根节点,其每一项所包含的子树中均可能不存在链接标签<a>,设DR的第一层子树数目为N,则在DR中最低层链接标签<a> 出现的总次数AT为
权利要求
1. 一种基于文本结构权重的主题区域识别方法,其特征在于,包括以下步骤 步骤1,将待识别Web网页转换成标签树,具体通过以下步骤实现, 步骤1. 1,通过对待识别Web网页的HTML文档进行字符扫描,识别出起始节点、结束节点、全结构节点和文本节点;所述起始节点是以字符“〈”开始,以字符“〉”为结束,且这两者之间不存在字符“〈”和 “〉”的字符串;所述结束节点是以字符“</”开始,以字符“〉”为结束,且这两者之间不存在字符“〈”、 “〉”和“/”的字符串;所述全结构节点是以字符“〈”开始,以字符“/>”为结束,且这两者之间不存在字符 “〈”、“〉”和“/”的字符串;所述文本节点是以上三种节点以外的字符串;步骤1. 2,采用解析器,依据步骤1. 1识别出的起始节点、结束节点、全结构节点和文本节点进行标签树的构建,得到的标签树记为A ;构建过程利用堆栈操作来确定各节点的层次关系,包括以下堆栈操作,当解析器发现一个起始节点时,触发入栈操作和在当前标签树中新建标签操作, 当解析器发现一个结束节点时,触发退栈操作,当解析器发现一个全结构节点时,触发入栈操作,同时更新标签树,在更新标签树完成后立刻退栈操作;当解析器发现一个文本节点时,触发入栈操作,入栈操作后立刻退栈操作; 步骤2,在步骤1所得标签树A中搜索相似区域,并进行去链接预处理,得到标签树B, 具体通过以下步骤实现,步骤2. 1,在步骤1所得标签树A中搜索相似区域;所述相似区域是由一组相似节点组成的,相似节点是标签树A中满足以下特性的节点,(1)所有的节点共同拥有同一个父节点;(2)所有节点是相邻的;(3)相似节点是子树的根节点或叶子节点;(4)与同一区域中的其他节点的相似度大于预设的阈值a;步骤2. 2,在步骤2. 1搜索到的所有相似区域中识别语义链接块,并将识别出的语义链接块从标签树A中摘除,得到标签树B ;所述语义链接块是指由链接组成的,在视觉上呈列表状,每一项表现为超级链接的网页区域;步骤3,对步骤2所得标签树B进行主题内容抽取,具体通过以下步骤实现, 步骤3. 1,求出标签树B中所有节点的文本结构权重,找出某棵子树链下文本结构权重值最大的节点,该节点所在相似区域即主题区域,该节点记为主题区域节点C ;所述文本结构权重是指文本在相似区域中所占的比重;步骤3. 2,对步骤3. 1所得主题区域进行去噪,包括两个步骤; 步骤3. 2. 1,获取步骤3. 1所得主题区域节点C的子树所包含的所有文本节点的长度, 其中最大长度记为maxlength ;步骤3. 2. 2,遍历主题区域节点C的子树,根据最大长度maxlength对子树中每一个文本节点的长度计算归一化值,并与预设的阈值K比较;如果不小于预设的阈值K则保留,否则从主题区域节点C的子树中摘除该文本节点;步骤3. 3,对步骤3. 2所得去噪后的主题区域所对应的节点输出,即输出最底层叶子节点的文本内容,得到待识别Web网页的主题内容。
2.如权利要求1所述基于文本结构权重的主题区域识别方法,其特征在于步骤1.2 中,标签树的具体构建方式包括以下步骤,步骤1. 2. 1,声明一个解析器实例和一个单例模式堆栈实例,并从待识别Web网页的 HTML文档中读取一个节点;步骤1. 2. 2,如果读取的节点是结束节点、全结构节点或者文本节点,则将该节点出栈, 然后进入步骤1. 2. 3 ;否则,转步骤1. 2. 4 ;步骤1. 2. 3,层次值减一,并将父节点指针指向步骤1. 2. 2出栈的节点的父节点,更新标签树;步骤1.2. 4,如果读取的节点是起始节点、全结构节点或者文本节点,则声明一个新的堆栈项,并将该节点入栈,然后进入步骤1. 2. 5 ;否则,进入步骤1. 2. 7 ;步骤1. 2. 5,层次值加一,同时将步骤1. 2. 4入栈的节点插入父节点指针当前指向的节点的孩子集中;步骤1. 2. 6,将当前节点指针指向步骤1. 2. 4入栈的节点,并更新标签树; 步骤1. 2. 7,从待识别Web网页的HTML文档中读取下一个节点,重复步骤1. 2. 2至步骤 1. 2. 6,直到待识别Web网页的HTML文档解析完成,构建得到的标签树记为A。
3.如权利要求1所述基于文本结构权重的主题区域识别方法,其特征在于步骤2.1 中,在步骤1所得标签树A中搜索相似区域时,采用简单树匹配算法计算相似度,利用堆栈消除递归,对标签树A进行遍历,发现相似节点时进行标记,识别出相似区域;具体遍历实现包括以下步骤,步骤2. 1. 1,初始化当前节点指向标签树的根节点,初始化堆栈; 步骤2. 1. 2,如果当前节点的孩子数不为0,则当前节点入栈,执行步骤2. 1. 3 ;否则从标签树A中取下一节点作为当前节点,返回步骤2. 1. 2,直到取完标签树A中所有节点,进入步骤2. 1. 7 ;步骤2. 1. 3,判断堆栈是否为空,当堆栈不为空时执行步骤2. 1. 4,当堆栈为空时返回步骤2. 1. 2 ;步骤2. 1.4,栈顶元素出栈,赋值给当前节点;步骤2. 1. 5,遍历当前节点的最近一层子节点,依次比较两个相邻子节点代表的子树的相似度,如果相邻节点的相似度小于阈值a,当前两个相邻子节点标记为删除,否则当前两个相邻子节点标记为相似节点;遍历完成后进入步骤2. 1. 5 ;步骤2. 1.6,当前节点标记为相似区域;取当前节点下的所有子节点,依次入栈,然后转步骤2. 1. 3 ;步骤2. 1. 7,对标签树A进行遍历完成,所有相似区域均被发现。
4.如权利要求1所述基于文本结构权重的主题区域识别方法,其特征在于步骤2.2 中,识别语义链接块的具体方式包括以下步骤,步骤2. 2. 1,取出当前相似区域DR的根节点root,计算出根节点root所包含的子节点个数;步骤2. 2. 2,以宽度优先的方式,遍历根节点root所包含的子节点,对遍历到的当前子节点执行以下操作,对当前子节点,以宽度优先的方式遍历当前子节点的子树,如果检测到链接标签 “<a>”,则将此标签的深度偏差值存入哈希表,所述深度偏差值等于此标签的深度值减去根节点root的深度值;同时记录此深度偏差值出现的次数,记录方式是以深度偏差值为键, 次数为键所对应的值;步骤2. 2. 3,在步骤2. 2. 2遍历完根节点root所包含的子节点后,求出哈希表中所有次数之和,即得到当前相似区域DR中最低层链接标签“<a>”出现的总次数AT ;步骤2. 2. 4,从哈希表中,找出次数最大的项,此项的键为j,j即是包含最多链接标签 “<a>”的深度偏差值,该键对应的次数值就是最大次数取值LC ;TjC步骤2. 2. 5,计算出链接同层次值LK,ZX=;;如果当前相似区域DR的链接同层次AT值LK大于或等于预设值L,则认为此相似区域是语义链接块。
5.如权利要求1所述基于文本结构权重的主题区域识别方法,其特征在于步骤3. 1 中,找出某棵子树链下文本结构权重值最大的节点,具体实现包括以下步骤,步骤3. 1. 1,初始化类实例weight,类实例weight用于指向具有最大文本权重的节点;初始化最大文本权重的变量maxweight,并赋初值0 ;初始化堆栈;申明临时变量 tempweight;步骤3. 1.2,如果输入源标签树source为空,则进入步骤3. 1.9,否则转步骤3. 1. 3 ; 步骤3. 1. 3,源标签树source根节点入栈;步骤3. 1. 4,判断堆栈是否为空,当堆栈不为空时执行步骤3. 1. 5,当堆栈为空时进入步骤3. 1. 9 ;步骤3. 1. 5,当前节点指向栈顶节点;步骤3. 1. 6,计算当前节点的文本权重并赋值给临时变量tempweight ; 步骤3. 1. 7,如果临时变量tempweight的值大于变量maxweight的值,则令变量 maxweight等于临时变量tempweight的值,同时让类实例weight的属性Treenode指向当前节点,转步骤3. 1. 8 ;否则,直接转步骤3. 1. 8 ;步骤3. 1. 8,将当前节点的子节点依次入栈,转步骤3. 1. 4 ; 步骤3. 1. 9,返回类实例weight,即主题区域。
全文摘要
本发明提出了基于文本结构权重的主题区域识别方法,该方法基于树结构,将Web网页解析为标签树,在树匹配基础上,改进了数据区域挖掘和语义链接块识别技术,实现了去链接的预处理;提出了文本结构权重的概念,并采用文本结构权重的计算结果识别主题区域;最后采用归一化的方法计算主题区域内的文本结点相对长度值,利用归一化相对长度值,有效的去除和主题内容无关的文本节点实现了主题区域去噪,得到准确的主题内容。应用本发明技术方案能准确快速的挖掘出Web上有价值的信息,有着广阔的应用前景。
文档编号G06F17/30GK102306204SQ20111030200
公开日2012年1月4日 申请日期2011年9月28日 优先权日2011年9月28日
发明者徐武平, 徐爱萍, 杨少博 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1