一种从网页中抽取对象属性值信息的方法和系统的制作方法

文档序号:6355156阅读:175来源:国知局
专利名称:一种从网页中抽取对象属性值信息的方法和系统的制作方法
技术领域
本发明涉及信息处理和信息抽取领域,特别是关于ー种能够从网页中抽取对象属性值信息的系统和方法。
背景技术
在现有技术中,存在如下一些相关的技术I. US7720830 (B 2) Hierarchical conditional random fields for webextraction 在该现有技术中提出的方法为ー个信息页面打上对象信息标签。在把网页分成块之后,层级条件随机场被用来给对象元素打标签。上述现有技术与本申请的不同点首先,上述现有技术假设了对象类的属性名集合已知,而本申请的方法同时抽取属性名和属性值。其次,上述现有技术使用的是监瞀的方法,所以需要训练数据。而本申请的方法是非监瞀的方法,不需要训练数据。2. ISWC 2006 Using Ontologies for Extracting Product Features fromWebPages该现有技术中提出的方法用纯粹视觉的方法从网页中识别表数据,然后在领域本体的帮助下抽取属性值对。不同点首先,本申请的方法可以同时使用HTML DOM (DocumentObject Model,文档对象模型)树信息和视觉信息,而他们的表格数据识别方法只使用了视觉信息,尤其是位置信息。在某些网页中,产品特征区域并不总是直接可视的。因此,在这种情况下,上述现有技术的算法会失效,而本申请的算法可以基于DOM树来抽取信息。其次,上述现有技术的算法假设属性值信息是排列得很好的表格结构,但在某些网页中,属性值信息是不规则排列得列表。本申请的方法没有这样的限制。最后,上述现有技术的算法在领域本体的帮助下输出属性值对,而本申请的方法在没有领域本体的帮助下输出属性值树。3. IJCAI2007-Semi-Supervised Learning of Attribute-Value PairsiromProduct Descriptions该现有技术中提出的方法从产品描述中抽取属性值对。该现有技术使用了半监瞀学习算法来抽取属性名和属性值。然后,通过依赖解析器(dependency parser)和共现的分数来得到属性值对。不同点首先,上述现有技术不使用HTML的tag信息。而这些信息在本申请的方法中为抽取属性值提供了结果非常重要的信号。其次,上述现有技术不使用视觉信息,本申请的方法很有效地使用了这样的信息。最后,上述现有技术仅抽取属性值对,而本申请的方法可以抽取属性值层级结构。最后,上述现有技术需要训练数据,而本申请的方法是非监瞀的方法,不需要训练数据。互联网上有很多含对象属性值信息的网页,比如说产品參数网页。自动从网页中抽取对象属性值信息可以用来更好地构建此类网页的索引,有助于搜索。给定ー个含对象參数数据的网页,本发明处理的任务是从给定网页中抽取对象属性值信息。关于这个任务已经有ー些工作。然而,已有工作在有些场景下不适用。首先,已有的工作往往依赖于领域相关的信息,比如说,某个领域的对象的属性名和值信息。但这些领域知识需要人力的參与,这往往困难且代价昂贵。其次,已有的方法并不能抽取属性的层次结构。现实中的属性往往拥有ー个内在的层次结构。高层级的属性为低层级属性值提供了上下文信息。本发明提出的方法可以用来抽取属性值树,而不仅仅是属性值对。这里我们更加详细地描述本发明得到的属性值树的ー个应用。假设我们需要构造ー个产品垂直搜索引擎。因为互联网上关于产品的数据量太大了,手动处理并不现实,所以,自动分析产品网页数据成为ー种必要。如果网页上的产品属性值信息能够被精确地抽取,那我们构建的垂直搜索引擎的结果将会更加相关和有用,这是由于网页上跟产品无关的信息可以被去除。另外,一些高级的查询类型可以被支持。比如两个高级的查询如下^cameraresolution > 300mp” (找到像素大于300万的相机)和“ricohcx3 resolution” (找到理光cx3相机的解析度)。对于抽取的属性值树,ー个例子是对于包含两条路径的ー个属性值树(此处不包含值),即“lens system — type”和“lenssystem —optical zoom”。如果没有高层级的文本“lens system”,低层级的属性名“type”的含义是模糊的。如果用户搜索“ Ricoh cx3 lens type”,如果更高层级的属性名“ lenssystem”没有被很好地抽取的话,搜索引擎就不知道用户需要“ RicohCX3”的哪项属性。如果用户搜索“Ricoh cx3 lens system”,如果属性值树信息被精确地抽取,那搜索引擎可以返回更多的结果,因为“lens system”对应于更高层级属性名。

发明内容
本发明的另外方面和优点部分将在后面的描述中阐述,还有部分可从描述中明显地看出,或者可以在本发明的实践中得到。本发明可应用在构造对象数据库,为含对象属性值信息的文档构建索引和摘要。本发明的目的是从含对象參数数据的网页中抽取对象属性值信息。本发明提供一种从网页中抽取对象属性值信息的方法,包括a)对于ー个给定网页,得到与该给定网页对应的文档对象模型DOM树,并计算DOM树中的每个DOM节点的相关 信息山)根据DOM树和每个DOM节点的相关信息,构造ー个带标签节点图,并且计算每个带标签节点的分数;c)基于带标签节点的分数,从得到的带标签节点图选择带标签节点树;d)基于选中的带标签节点树构造属性值树。本发明还提供一种从网页中抽取对象属性值信息的系统,包括网页预处理模块,对于ー个给定网页,得到与该给定网页对应的DOM树,并计算DOM树中的每个DOM节点的相关信息;带标签节点图构造模块,用于根据DOM树和每个DOM节点的相关信息,构造ー个带标签节点图,并且计算每个带标签节点的分数;带标签节点树选择模块,用于基于带标签节点的分数,从得到的带标签节点图选择带标签节点树;属性值树生成模块,用于基于选中的带标签节点树构造属性值树。如上所述,本发明提供了从含对象參数数据的网页中抽取对象属性值信息的方法和装置。本发明提出的方法可以基于网页DOM树信息和视觉信息来抽取属性值树。这种方法一个优点是可以最小化领域相关信息的使用,而领域知识需要人力的參与,这往往困难且代价昂贵。本发明提出的方法的另ー个优点是可以抽取属性值树,而不仅仅是属性值对。属性往往拥有ー个内在的层次结构。高层级的属性为低层级属性值提供了上下文信息,这些信息有助于信息集成和机器理解。


通过结合附图对本发明的优选实施例进行详细描述,本发明的上述和其他目的、特性和优点将会变得更加清楚,其中相同的标号指定相同结构的単元,并且在其中图I示出了根据本发明实施例的从网页中抽取对象属性值信息的系统的方框图。图2示出了根据本发明实施例的从网页中抽取对象属性值信息的系统的示例性的硬件构架图。 图3示出了根据本发明实施例的从网页中抽取对象属性值信息的方法的流程图。图4A示出了一段简单的HTML代码块;图4B示出了与图4A的HTML代码块对应的DOM子树;以及4C示出了与图4B中的DOM子树对应的属性值树。图5A示出了另外一段HTML代码块;以及图5B示出了与图5A中的HTML代码块对应的属性值树。图6示出了与图4A中部分DOM节点相对应的部分带标签节点图。图7描述了根据本发明实施例的带标签节点图的构造过程流程图。图8示出了根据本发明实施例的图I的系统中的带标签节点图构造模块102的示意性实现方框图。图9描述了根据本发明实施例的带标签节点树的选择过程的流程图。图10为根据本发明实施例的部分带标签节点树的示意图。图11示出了根据本发明实施例的图I的系统中的带标签节点树选择模块103的示意性实现方框图。图12中显示了另ー个关于某数码相机的属性值树的示例。图13描述了根据本发明实施例的属性值树的生成过程的流程图。图14描述了根据本发明实施例的针对选中的单个带标签节点树构造部分属性值树的过程。图15示出了根据本发明实施例的图I的系统中的属性值树生成模块104的示意性实现方框图。图16示出了根据本发明实施例的图15的属性值树生成模块104中的部分属性值树构造单元1502的示意性实现方框图。
具体实施例方式下面将參照示出本发明实施例的附图充分描述本发明。然而,本发明可以以许多不同的形式实现,而不应当认为限于这里所述的实施例。相反,提供这些实施例以便使本公开透彻且完整,并且将向本领域技术人员充分表达本发明的范围。在附图中,为了清楚起见放大了组件。除非另有定义,这里使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。这里參照支持根据本发明实施例的方法、装置(系统)和计算机程序产品的方框图和流程图描述本发明示例性实施例。应当理解,流程图和/或方框图的每个方框以及流程图和/或方框图的方框组合可以通过计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令创建实现流程图和/或方框图方框中指定功能/动作的手段。这些计算机程序指令也可以存储在计算机可读存储器中,可以引导计算机或其他可编程数据处理装置以特定方式运行,使得存储在计算机可读存储器中的指令产生包括实现流程图和/或方框图方框中指定功能/动作的指令手段的制造物品。
计算机程序指令还可以加载到计算机或其他可编程数据处理装置上,导致在计算机或其他可编程装置上执行一系列操作步骤来产生计算机实现的处理,使得计算机或其他可编程装置上执行的指令提供实现流程图和/或方框图方框中指定功能/动作的步骤。每个方框可以表示代码模块、片断或部分,其包括ー个或多个用来实现指定逻辑功能的可执行指令。还应当注意,在其他实现中,方框中标出的功能可能不按图中标出的顺序发生。例如,根据所涉及的功能,连续示出的两个方框可能实际上基本上并发地执行,或者方框有时可能以相反的顺序执行。本发明的目的是从含对象參数数据的网页中抽取对象属性值信息。图I示出了根据本发明实施例的从网页中抽取对象属性值信息的系统的方框图。根据本发明的一个实施例,该系统可包括4个模块。图I中描述了这些模块。这4个模块是网页预处理模块101、带标签节点图的构造模块102、带标签节点树的选择模块103、和属性值树的生成模块104。图I中还显示了每个模块的输入输出。给定ー个网页,网页预处理模块101生成ー个DOM树,此DOM树带有一些计算后的式样等信息。然后基于得到的DOM树,带标签节点图的构造模块102输出ー个带标签节点图。在这之后,带标签节点树的选择模块103从得到的带标签节点图中选择ー个或多个带标签节点树。给定这些带标签节点树,属性值树的生成模块104生成了结果属性值树。图2示出了根据本发明实施例的从网页中抽取对象属性值信息的系统的示例性的硬件构架图。本发明的实施例可以实现在一个计算机系统上。输入的网页和抽取结果可以保存在图2中的存储设备(外存)上。图I中的四个模块可以保存在图2中的主存(RAM)上。这四个模块可以通过中央处理器(CPU)执行。中间结果和最終結果(包含DOM树信息、带标签节点图和属性值树)可以保存在图2中的主存(RAM)上。注意到,在抽取过程完成之后,得到的属性值树可输出到存储设备(外存),比如说硬盘。图3示出了根据本发明实施例的从网页中抽取对象属性值信息的方法的流程图。在图3中包括如下步骤网页预处理S301、带标签节点图的构造S302、带标签节点树的选择S303、和属性值树的生成S304。如图3所示,对每个步骤来说都有相应的输入输出。在图I中的每个模块执行与图3的方法流程图中的相应步骤对应的步骤。在以下具体实现中,将參照图4-图14分别描述从网页中抽取对象属性值信息的方法的各个步骤的具体实现。在以下的实现中,仅仅是示例性的,本领域技术人员应该理解,步骤顺序的变动或根据本实现进行的类似修改都在本申请的范围内。I.网页预处理给定ー个网页,网页预处理模块101生成ー个DOM树,此DOM树带有一些计算后的
式样信息。首先,从互联网上下载网页,网页包含HTML文件、附带的CSS文件、Javascript文件、图像文件等等。给定这些网页文件,网络浏览器构造DOM树。エ业界有ー些主流的网络浏览器,比如 Mozilla Firefox>ffindows InternetExplorer>Google Chrome 或者 AppleSafari。网络浏览器引擎通过分析语法结构来解析HTML代码,构造含计算后式样信息的DOM树,执行一些动态内容(比如Javascript代码),然后在浏览器窗ロ里渲染网页。然后用户可以在计算机屏幕上浏览网页。同样地,DOM树和计算后的式样信息可以通过程序接ロ,例如Mozilla提供的XULRunner程序接ロ,被其他程序得到。然后得到的DOM树信息可以作为本发明的步骤S301的输入。因此,给定一个网页,含计算后式样信息的DOM树可以通过现有的或将来开发的第三方工具得到。详细的含计算后式样信息的DOM树的构造过程不在本发明的范围内,DOM树的构造可以通过现有或将来开发的程序得到,因此在本文中不再赘述。图4A示出了一段简单的HTML代码块;图4B示出了与图4A的HTML代码块对应的DOM子树。DOM树中的每个节点被称作DOM节点。每个DOM节点可以通过节点名字或者以此节点为根节点的子树的内容来引用。例如,在图4B中,DOM节点“<h3>”可以用“<h3>size〈/h3>”来引用。4C示出了与图4B中的DOM子树对应的属性值树。图5A示出了另外一段HTML代码块;图5B示出了与图5A中的HTML代码块对应的属性值树。基于浏览器渲染引擎生成的含计算后式样信息的DOM树,根据本发明的系统需要计算ー些额外信息以备后用。与每个DOM节点对应的计算后信息至少考虑到以下内容1)以此DOM节点为根节点的DOM子树中的DOM节点的名字、类型和值;2)以此DOM节点为根节点的DOM子树的结构;3)以此DOM节点为根节点的DOM子树中的DOM节点的视觉信息。具体说来,对应于DOM树中的每个DOM节点,计算后的信息至少包含以下内容子树中的文本节点个数、子树中ー些具有某些HTML tag名字的元素节点、子树中的等价文本节点个数、每个节点的高度和宽度、子树中的字体大小和粗细均值和方差、此DOM节点的可见性、此DOM节点的位置、子树中的字体顔色种类和背景色种类。这里我们做ー些澄清。在下面的描述中,有三种节点集合。第一种集合中的节点称作DOM节点,这些节点属于网页的HTML DOM树。第二种集合中的节点称作带标签节点,这些节点从构造的带标签节点图中而来。第三种集合中的节点称作概念节点,这些节点从生成的属性值树中而来。另外,本发明中的树都是有向树。所以,每个树都有个根节点,每条边都是有向的。2.带标签节点图的构造
基于步骤S301中得到的带计算后DOM树信息的DOM树,带标签节点图的构造模块的目的是构造带标签节点图。构造的带标签节点图包含多个带标签节点。每个带标签节点都可以找到与之对应的给定网页中的某个DOM节点。给定网页中的每个DOM节点对应于多个带标签节点。每个带标签节点带有一个标签和ー个分数。带标签节点的标签代表了对应的DOM节点所在的DOM子树的ー个分类。标签的集合至少包含以下标签[attribute]、[value]、[attribute-value-pair]、[heading-N] (N 是一个正整数)、[attribute-value-list]、[neading-attribute-value-list]、 [attribute—value—tree」才ロ[attribute-value-forest]。对这些标签的意义的解释如下所示I) [attribute]:对象属性名。2) [value]:对象属性值。3) [attribute-value-pair]:属性值对。举例在图4A 中,DOM 节点 “<li>〈b>width〈/b>:3. 5cm〈/li>” 非常可能是ー个[attribute-value-pair],其属性名为 “width”,值为 “3. 5cm,,。4) [heading-N]:更高层级的属性名,称作标题属性。N是ー个正整数。N的值越小,表明属性在属性层级结构中的层级越高。数字N是用来描述带标签节点和其孩子结构中的带标题属性标签的标签节点之间的层级关系。举例在图5A 中,the DOM 节点“<h3>Shooting Distance〈h3>” 可能是[heading-1],而 DOM 节点“ <h5>Normal shooting〈/h5>” 可能是[heading-2]。5) [attribute-value-list]:属性值对的列表。6) [heading-attribute-value-list]:带几个属性值孩子的标题属性。举例图4A中的DOM节点“<div>. . . </div>” 非常可能是[heading-attribute-value-list],其标题属性名为“size”并含有两个属性值对。7) [attribute-value-tree]:属性值树。举例图5A中的DOM节点“<div>. . . </div>” 非常可能是[attribute-value-tree],其根属性名为 “Shooting Distance,,。8) [attribute-value-forest]一些属性值树。带标签节点的分数代表对应的DOM节点是对应标签的可能性。分数越高,对应的DOM节点是对应标签的可能性越大。对于图4A中的DOM树的部分DOM节点,图6中显示了构造的部分带标签节点图。图6示出了与图4A中DOM节点div相对应的部分带标签节点图。如图6所示,对于图4A中的div节点,其示例性地示出了该div节点的标签为heading-attribute-value-list 的带标签节点和标签为 attribute-value-list 的带标签节点。但本领域技术人员应该理解,图6仅仅是示意性地,还可以构造该div节点的具有其他标签的带标签节点。 图7描述了根据本发明实施例的带标签节点图的构造过程流程图。此构造过程构成了图3中的带标签节点图的构造步骤S302,其由图I中的带标签节点图的构造模块102执行。图I中所示的带标签节点图的构造过程是ー个自底向上的过程,此过程可以描述如下。算法描述
以某种顺序每次选择ー个DOM节点进行处理,此顺序需要满足以下规律每次选中ー个未处理的DOM叶节点或者是本身未处理但是它的每个孩子都是已经处理节点的DOM节点。(S701、S704)这样,只有当DOM节点是叶节点,或者该DOM节点的所有孩子节点都被处理之后,这样的DOM节点才能被选择进行如下的处理。也即,带标签节点图的构成过程是先得到最低层节点的带标签节点图。对于每个选中的DOM节点,执行如下处理对于每个选中DOM节点,穷举该选中DOM节点的所有可能的带标签节点,从而得到该选中DOM节点的多个带标签节点。例如,对于图4B中的div节点,得到具有不同标签(heading-attribute-value-list、attribute-value-list 等)的多个带标签节点。对于选中DOM节点的每个带标签节点,执行如下处理i.构造当前处理的带标签节点的所有候选孩子结构,计算姆个候选孩子结构的分数。(S702)ii选择分数最大的候选孩子结构作为当前处理的带标签节点的孩子结构。此最大分数记录为当前处理的带标签节点的分数。(S703)在所有的DOM节点处理完之后,我们得到带标签节点图,此图由带标签节点和选中的孩子结构构成。(S705)在步骤S702的构造过程中,每个候选孩子结构包含对应于当前考虑的DOM节点的DOM子孙节点的ー个或多个带标签节点。对于每种标签的带标签节点,有着不尽相同的候选孩子结构。候选孩子结构的标签形式可以用规则和正则表达式来描述。例如,对于标签[heading-attribute-value-list]的三种可能的候选孩子结构的标签形式如下所示I)[heading-1] ([attribute-value-list]) + 2)[heading-1]([attribute-value-pair])+3) [heading-attribute-value-list]符号“(...)+”代表括号中的“...”部分重复一次或者多次。标签[attribute-value-pair]的两种可能性比较大的候选孩子结构的标签形式如下所示I)[attribute][value]2)[attribute-value-pair]标签[attribute-value-list]的三种可能性比较大的候选孩子结构的标签形式如下所示I) ([attribute-value-pair]) +2)([attribute][value])+3) ([attribute-value-list]) +标签[heading-attribute-value-list]的三种可能性比较大的候选孩子结构的标签形式如下所示I)[heading-1] ([attribute-value-list]) +2)[heading-1]([attribute-value-pair])+3)[heading-attribute-value-list]
标签[attribute-value-tree]的三种可能性比较大的候选孩子结构的标签形式如下所示I)[heading-1] ([heading-attribute-value-listj) +2)[attribute-value-tree]3)[heading-1][attribute-value-forest]标签[attribute-value-forest]的四种可能性比较大的候选孩子结构的标签形式如下所示I)([heading-attribute-value-list]) +2) ([heading-1] ([attribute-value-pair])+) + 3) ([heading-1]([attribute][value])+) +4)[attribute-value-forest]上述列举的对于不同标签的候选孩子结构的标签形式仅仅是示意性的,是网页分析的经验结果。本领域技术人员应该理解,根据不同的网页分析和不同的实际情況,对于不同标签还可以包含其他的候选孩子结构的标签形式,并不限于上述的列挙。候选孩子结构中的带标签节点是序列关系或者层级关系。例如,如图6中所示,其中图4A中的节点div的带标签节点{<div>, [heading-attribute-value-list]}的孩子结构包含两个带标签节点:{〈h3>, [heading-1]}和{<ul>, [attribute-value-list]},这两个节点有ー个层级关系,即上下级层级关系。而对于图4A中的节点div的带标签节点{<div>, [attribute-value-list]}的孩子结构包含两个带标签节点{〈h3>,[attribute-value-pair]}和{〈ul>, [attribute-value-list]},这两个节点在同一层级上。如图6所示,在带标签节点图中,从带标签节点到它孩子结构中的每个带标签节点之间都有个链接。带标签节点和这些链接构成了带标签节点图。构造的带标签节点图的图结构有两个性质[I]是ー个DAG(有向无环图);[2]每个节点和它的子孙构成ー个树结构。本领域技术人员应该理解,为了简洁,图6中仅示出了 div节点的孩子节点,而未示出div节点的这些孩子节点本身的孩子节点的树结构。在步骤S702的构造过程中,还需要计算每个候选孩子结构的分数,分数的计算需要考虑到至少以下五个要素之一I)带标签孩子节点的分数;例如,图6中所示的0. 5,0. I和2. O。2)同一层级的带标签孩子节点之间的相似度分数;同一层级的带标签孩子节点之间的相似度分数可以用已有的技术解决,例如,使用树的编辑距离(tree editdistanceノ 等。3)不同层级的带标签孩子节点之间的层级分数;4)带标签孩子节点的布局分数。每种标签的孩子结构的标签布局给定ー个分数。5)更进一歩,如果对于相同领域的对象已有一些之前抽取的属性值树,带标签节点的分数包含ー个内容分数。内容分数基于带标签节点的文本内容和相同领域的对象已有的属性值的文本的相似度。
两个带标签孩子节点之间的层级分数可以通过这两个带标签孩子节点所对应的DOM节点的计算后信息得到。层级分数可以考虑以下几个因素I)两个DOM节点对应的DOM子树中的文本的平均字体大小的差2)两个DOM节点对应的DOM子树中的文本的平均字体粗细的差3)是不是两个DOM节点对应的DOM子树中的文本的颜色不同4)是不是高层次的DOM节点在左,低层次的DOM节点在右
5)是不是高层次的DOM节点在上,低层次的DOM节点在下以上每个因素可以化成ー个实数值,层级分数可以由这些实数值的线性加权得至IJ。每个候选孩子结构的最終的分数是上述分数的线性加权。例如,如图6所示,其示意性示出了具有最大候选孩子结构的分数4. 0的节点div的带标签节点{〈div>,[heading-attribute-value-list]}的孩子结构,以及具有最大候选孩子结构的分数I. 8的节点div的带标签节点{〈div>, [attribute-value-list]}的孩子结构。在执行完图I的步骤之后,对于每个带标签节点得到ー个候选孩子结构,对于所有带标签节点形成ー个带标签节点图。图8示出了根据本发明实施例的图I的系统中的带标签节点图构造模块102的示意性实现方框图。如图8所示,所述带标签节点图构造模块102包括第一判定単元801,用于判断是否还有未处理的DOM节点;选择单元802,根据第一判定単元的結果,以如下顺序每次选择ー个DOM节点进行处理姆次选中ー个未处理的DOM叶节点或者是本身未处理但是姆个孩子都是已处理节点的DOM节点;带标签节点列举单元803,用于对于选中的DOM节点,穷举该选中的DOM节点的可能的带标签节点;孩子结构构造单元804,对于带标签节点列举単元中列举的选中的DOM节点的每个带标签节点,构造当前处理的带标签节点的所有候选孩子结构,计算每个候选孩子结构的分数,并且选择分数最大的候选孩子结构作为当前处理的带标签节点的孩子结构,得到的最大分数记录为当前处理的带标签节点的分数;带标签节点图获得単元805,当第一判定単元判断所有的DOM节点处理完之后,得到带标签节点图,此图由带标签节点和选中的孩子结构构成。图8中各个单元的具体实现与图7的方法流程类似,因此在此不再赘述。3.带标签节点树的选择图9描述了根据本发明实施例的带标签节点树的选择过程的流程图。此带标签节点树的选择过程构成了图I中的带标签节点树的选择模块。给定步骤S302中生成的带标签节点图,带标签节点树的选择模块从带标签节点图中选择ー些带标签节点树。带标签节点图中分数最高的ー个或多个带标签节点树会被选中。带标签节点树的选择过程可以描述如下I)从当前带标签节点图中选择分数最高的带标签节点(S901)。如果分数小于第ー阈值MIN_SC0RE,则结束(S902)。其中第一阈值是与分数设计相关的经验值。2)得到选中的节点对应的带标签节点树,此带标签节点树由带标签节点的子孙带标签节点构成。输出带标签节点树(S903)。如果已经得到的带标签节点树的数目大于第二阈值M,则结束(S904)。其中第二阈值M是经验值,例如可以设置M = 2。3)得到选中的带标签节点树中含有的带标签节点所对应的DOM节点(S905)。从带标签节点图中去除得到的DOM节点所对应的其他带标签节点,并转向步骤S901 (S906)。在以上过程中,MIN_SC0RE是预先指定的分数,代表选中的带标签节点树的带标签根节点需要达到的最小分数。M是ー个预先指定的整数,代表了最大需要选取的带标签节点树的个数。对于以上的带标签节点树的选择过程,下面以图6中所示的带标签节点图为例进行说明。但本领域技术人员应该理解,图6中仅仅示出了部分网页的部分带标签节点图。如图6所示,对于所示的带标签节点,在步骤S901和S902选择分数最高的带标签节点,即带标签节点{〈div>, [heading-attribute-value-list]};在步骤S903和 S904,输出上述带标签节点的带标签节点树,即由带标签节点{〈div>, [heading-attribute-value-list]}、带标签节点{〈h3>, [heading-1]}和带标签节点{<ul>, [attribute-value-list]}构成的带标 签节点树;在步骤S905得到选中带标签节点{〈div>, [heading-attribute-value-list]}对应的DOM节点,即图4A中的节点div ;在步骤S906去除DOM节点div所对应的其他带标签节点,例如图6中所示的带标签节点{〈div>, [attribute-value-list]}。对于图6的带标签节点图进行图9后的上述处理后得到图10所示的带标签节点树。图10为根据本发明实施例的部分带标签节点树的示意图。图11示出了根据本发明实施例的图I的系统中的带标签节点树选择模块103的示意性实现方框图。如图11所示,带标签节点树选择模块103包括第二选择单元1101,基于从所述带标签节点去除単元得到的带标签节点图,从当前带标签节点图中选择分数最高的带标签节点;第二判定単元1102,用于判断该选择的带标签节点的分数是否小于第一阈值;带标签节点树输出単元1103,当第二判定単元判断该选择的带标签节点的分数大于第一阈值时,得到选中的带标签节点对应的带标签节点树,并输出带标签节点树;第三判定単元1104,用于判断已经得到的带标签节点树的数目是否大于第二阈值;带标签节点去除単元1105,当第三判定単元判断已经得到的带标签节点树的数目小于第二阈值时,得到选中的带标签节点树中含有的带标签节点所对应的DOM节点,从带标签节点图中去除得到的DOM节点所对应的其他带标签节点。虽然图11中示出了两个判定単元,但本领域技术人员应该理解,第二判定単元1102和第三判定単元1104也可以由ー个判定単元实现。图11中各个单元的具体实现与图9的方法流程类似,因此在此不再赘述。4.属性值树的生成给定步骤S303中得到的带标签节点树,属性值树的生成模块104生成结果属性值树。ー个属性值树包含多个概念节点。属性值树的每个概念节点都有一小段文本。每个概念叶节点代表一个对象属性的值。每个概念非叶节点代表不同级别的属性名。图4C和图5B中已经显示了两个属性值子树的例子。在这里,图12中显示了另ー个关于某数码相机的属性值树的示例。图13描述了根据本发明实施例的属性值树的生成过程的流程图。此过程构成了图I中的属性值树的生成模块。从步骤S303 (带标签节点树的选择)中得到的每个带标签节点树对应于ー个或多个属性值树。多个属性值树可以连向一个“辅助的概念根节点”(或称之为“概念根节点”)从而构成单个属性值树。引入辅助的概念根节点是为了简化算法的描述和多个属性值树的可视化。比如说,在图12中,辅助的概念根节点是指带文本串“(TOP) ”的那个节点。去掉图12中的辅助的概念根节点后,会得到两个属性值子树。属性值树中的节点称作概念节点;标签节点图中的节点称作概念节点。基于选中的带标签节点树构造属性值树,包含以下步骤 (I)构造ー个辅助的概念根节点。该辅助的概念根节点是用于将多个属性值树构成单个属性值树的根节点,这样构成的单个属性值树具有ー个概念根节点。(S1301)(2)对于每个选中的带标签节点树的带标签根节点,给定此带标签根节点和构造的概念父节点,构造部分属性值树。(S1302、S1303、S1304)(3)以辅助的概念根节点为根节点将部分属性值树构造成单个属性值树。(S1305)同样,如果需要的话,也去掉概念根节点,可以得到ー个或多个属性值树。图14描述了图13中步骤S1303的详细实现过程的流程图。图14描述了根据本发明实施例的针对选中的单个带标签节点树构造部分属性值树的过程。根据本发明实施例的属性值树的构造过程是ー个递归处理过程。在图14的步骤S1401中,对于ー个带标签节点树,得到该带标签节点树的带标签根节点和它对应的ー个概念父节点,以给定的概念父节点为根构造部分属性值子树。在步骤S1402,判断该带标签根节点是否有孩子节点。如果有,则顺序选择该带标签根节点的ー个孩子节点(S1405),根据带标签根节点的孩子结构,得到当前选择的孩子节点对应的概念父节点(S1406),并针对以此孩子节点为根节点的带标签节点树,以当前孩子节点作为根节点和它对应的概念父节点为输入,递归地构造对应于此孩子节点的部分属性值子树(S1407)。在步骤S1408,判断该带标签根节点还有未处理的孩子节点吗?如果有,则转到步骤S1405。如果没有,则返回到递归地调用当前属性值树构造过程的原步骤并继续执行下面的步骤。如果不存在递归地调用,则结束。如果在步骤S1402判断该带标签根节点没有孩子节点,则在步骤S1403构造ー个与该带标签根节点相对应的概念节点,该概念节点附帯的文本串对应于带标签根节点的文本串。在步骤S1404把此概念节点加到给定的概念父节点的孩子集合中。然后返回到递归地调用当前属性值树构造过程的原步骤并继续执行下面的步骤。如果不存在递归地调用,则结束。在上述构造过程中,步骤S1407是ー个递归地调用步骤,其以选择的孩子节点为根节点和它对应的概念父节点为两个输入,重新开始图14所示的属性值树构造过程。在以上构造过程的步骤S1406中,可能使用到当前带标签节点的孩子结构中的带标签节点之间的层级或者序列关系。例如,在图6中,在基于带标签节点{〈div>,[heading-attr ibute-value-1 i st]}对应的带标签节点树所构造的属性值树中,由于带标签节点{〈h3>, [heading-1]}与带标签节点{<ul>, [attribute-value-list]}具有层级关系,因此,对应于{〈h3>,[heading-1]}的概念节点是对应于{〈ul>,[attribute-value-list]}的属性值子树的概念父节点。图15示出了根据本发明实施例的图I的系统中的属性值树生成模块104的示意性实现方框图。如图15所示,所述属性值树生成模块104包括概念根节点构造单元1501,用于构造ー个辅助的概念根节点;部分属性值树构造単元1502,用于对于每个选中的带标签节点树的带标签根节点,给定此带标签根节点和辅助的概念根节点,构造部分属性值树;属性值树获得単元1503,用于得到属性值树,其根节点为辅助的概念根节点,如果需要的话,去掉概念根节点,可以得到ー个或多个属性值树。图15各个单元的具体实现与图13的方法流程类似,因此在此不再赘述。图16示出了根据本发明实施例的图15的属性值树生成模块104中的部分属性值树构造单元1502的示意性实现方框图。 如图16所示,所述部分属性值树构造单元1502包括输入值获取单元1601,对于ー个带标签节点树,得到带标签根节点和它对应的概念父节点;第四判定单元1602,判断从输入值获取单元得到带标签根节点是否有孩子节点;概念节点构造单元1603,当第三判定单元判断给定带标签根节点没有孩子节点时,构造ー个概念节点,并把此带标签根节点对应的文本串赋给此概念节点,把此概念节点加到得到的概念父节点的孩子集合,并返回到递归地调用当前部分属性值树构造単元的原部分属性值树构造单元并继续执行处理;如果不存在递归地调用,则结束;部分属性值子树递归构造单元1604,当第三判定单元判断给定带标签根节点有孩子节点时,顺序选择该带标签根节点的ー个孩子节点;得到当前选择的孩子节点对应的概念父节点;并针对以此孩子节点为根节点的带标签节点树,递归地调用所述部分属性值树构造単元。图16各个单元的具体实现与图14的方法流程类似,因此在此不再赘述。如上所述,本发明提供了从含对象參数数据的网页中抽取对象属性值信息的方法和装置。本发明提出的方法可以基于网页DOM树信息和视觉信息来抽取属性值树。这种方法一个优点是可以最小化领域相关信息的使用,而领域知识需要人力的參与,这往往困难且代价昂贵。本发明提出的方法的另ー个优点是可以抽取属性值树,而不仅仅是属性值对。属性往往拥有ー个内在的层次结构。高层级的属性为低层级属性值提供了上下文信息,这些信息有助于信息集成和机器理解。虽然结合目前被认为是最实际和最优的实施例描述了本发明,但本领域技术人员应当理解本发明不限于所公开的实施例,相反,本发明g在覆盖所附权利要求的精神和范畴之内包括的各种各样的修改和等价结构。
权利要求
1.一种从网页中抽取对象属性值信息的方法,包括 a)对于ー个给定网页,得到与该给定网页对应的文档对象模型DOM树,并计算DOM树中的每个DOM节点的相关信息; b)根据DOM树和每个DOM节点的相关信息,构造ー个带标签节点图,并且计算每个带标签节点的分数; c)基于带标签节点的分数,从得到的带标签节点图选择带标签节点树; d)基于选中的带标签节点树构造属性值树。
2.根据权利要求I所述的方法,其中所述相关信息包括I)以每个DOM节点为根节点的DOM子树中的DOM节点的名字、类型和值;2)以每个DOM节点为根节点的DOM子树的结构;3)以每个DOM节点为根节点的DOM子树中的DOM节点的视觉信息。
3.根据权利要求I所述的方法,其中,带标签节点图由多个带标签节点构成,给定的网页中每个DOM节点对应于多个带标签节点,而且每个带标签节点包含一个标签和ー个分数,标签代表了以DOM节点为根节点的DOM子树的ー个分类。
4.根据权利要求I所述的方法,步骤b)进ー步包括 bl)以如下顺序选择ー个DOM节点每次选中ー个未处理的DOM叶节点或者是本身未处理但是每个孩子都是已处理节点的DOM节点; b2)对于选中的DOM节点,穷举该选中的DOM节点的可能的带标签节点,对于选中的DOM节点所对应的每个带标签节点 构造当前处理的带标签节点的所有候选孩子结构,计算每个候选孩子结构的分数;并且 选择分数最大的候选孩子结构作为当前处理的带标签节点的孩子结构,得到的最大分数记录为当前处理的带标签节点的分数; b3)判断是否还有未处理的DOM节点,如果有则转到步骤bl);b4)如果所有的DOM节点处理完之后,得到带标签节点图,此图由带标签节点和选中的孩子结构构成。
5.根据权利要求4所述的方法,其中每个候选孩子结构包含对应于当前考虑的DOM节点的DOM子孙节点的一个或多个带标签节点;候选孩子结构中的带标签节点是序列关系或者层级关系;在带标签节点图中,从带标签节点到它孩子结构中的每个带标签节点之间都有个链接。
6.根据权利要求5所述的方法,其中,每个候选孩子结构的分数的计算是对如下五个要素的一个或多个的线性加权1)带标签孩子节点的分数;2)同一层级的带标签孩子节点之间的相似度分数;3)不同层级的带标签孩子节点之间的层级分数;4)带标签孩子节点的布局分数;5)如果对于相同领域的对象已有一些之前抽取的属性值树,则可以进一歩包含内容分数。
7.根据权利要求I所述的方法,步骤c)进ー步包括 Cl)从当前带标签节点图中选择分数最高的带标签节点; c2)判断该分数是否小于第一阈值;如果是,则结束; c3)如果该分数大于第一阈值,则得到选中的带标签节点对应的带标签节点树,并输出带标签节点树;c4)判断已经得到的带标签节点树的数目是否大于第二阈值,如果是,则结束;c5)如果已经得到的带标签节点树的数目是否小于第二阈值,则得到选中的带标签节点树中含有的带标签节点所对应的DOM节点,从带标签节点图中去除得到的DOM节点所对应的其他带标签节点,并转向步骤Cl)。
8.根据权利要求I所述的方法,其中ー个属性值树包含多个概念节点;属性值树的每个概念节点都有一小段文本,每个概念叶节点代表一个对象属性的值;每个概念非叶节点代表不同级别的属性名。
9.根据权利要求8所述的方法,步骤d)进ー步包括 dl)构造ー个辅助的概念根节点; d2)对于每个选中的带标签节点树的带标签根节点,给定此带标签根节点和辅助的概念根节点,构造部分属性值树; d3)得到属性值树,其根节点为辅助的概念根节点,如果需要的话,去掉概念根节点,可以得到ー个或多个属性值树。
10.根据权利要求9所述的方法,步骤d2)进ー步包括 d21)对于ー个带标签节点树,得到带标签根节点和它对应的概念父节点; d22)判断该带标签根节点是否有孩子节点; d23)如果给定带标签根节点没有孩子节点,则构造ー个概念节点,并把此带标签根节点对应的文本串赋给此概念节点,把此概念节点加到给定的概念父节点的孩子集合,并返回到递归地调用当前属性值树构造过程d2)的原步骤并继续执行下面的步骤;如果不存在递归地调用,则结束。
d24)如果给定带标签根节点有孩子节点,则顺序选择该带标签根节点的ー个孩子节点;得到当前选择的孩子节点对应的概念父节点;并针对以此孩子节点为根节点的带标签节点树,递归地调用对应于此孩子节点的部分属性值子树的构造构成d2); d25)判断带标签根节点是否还有未处理的孩子节点,如果有则转到步骤d24);否则,返回到递归地调用当前属性值树构造过程d2)的原步骤并继续执行下面的步骤;如果不存在递归地调用,则结束。
11.一种从网页中抽取对象属性值信息的系统,包括 网页预处理模块,对于ー个给定网页,得到与该给定网页对应的DOM树,并计算DOM树中的每个DOM节点的相关信息; 带标签节点图构造模块,用于根据DOM树和每个DOM节点的相关信息,构造ー个带标签节点图,并且计算每个带标签节点的分数; 带标签节点树选择模块,用于基于带标签节点的分数,从得到的带标签节点图选择带标签节点树; 属性值树生成模块,用于基于选中的带标签节点树构造属性值树。
12.根据权利要求11所述的系统,其中所述相关信息包括I)以每个DOM节点为根节点的DOM子树中的DOM节点的名字、类型和值;2)以每个DOM节点为根节点的DOM子树的结构;3)以每个DOM节点为根节点的DOM子树中的DOM节点的视觉信息。
13.根据权利要求11所述的系统,其中,带标签节点图由多个带标签节点构成,给定的网页中每个DOM节点对应于多个带标签节点,而且每个带标签节点包含一个标签和ー个分数,标签代表了以DOM节点为根节点的DOM子树的ー个分类。
14.根据权利要求11所述的系统,所述带标签节点图构造模块进一歩包括 第一判定単元,用于判断是否还有未处理的DOM节点; 第一选择单元,根据第一判定単元的結果,以如下顺序每次选择ー个DOM节点进行处理每次选中ー个未处理的DOM叶节点或者是本身未处理但是每个孩子都是已处理节点的DOM节点; 带标签节点列举单元,用于对于选中的DOM节点,穷举该选中的DOM节点的可能的带标签节点; 孩子结构构造単元,对于带标签节点列举单元中列举的选中的DOM节点的每个带标签节点,构造当前处理的带标签节点的所有候选孩子结构,计算每个候选孩子结构的分数,并且选择分数最大的候选孩子结构作为当前处理的带标签节点的孩子结构,得到的最大分数记录为当前处理的带标签节点的分数; 带标签节点图获得单元,当第一判定単元判断所有的DOM节点处理完之后,得到带标签节点图,此图由带标签节点和选中的孩子结构构成。
15.根据权利要求14所述的系统,其中每个候选孩子结构包含对应于当前考虑的DOM节点的DOM子孙节点的一个或多个带标签节点;候选孩子结构中的带标签节点是序列关系或者层级关系;在带标签节点图中,从带标签节点到它孩子结构中的每个带标签节点之间都有个链接。
16.根据权利要求15所述的系统,其中,每个候选孩子结构的分数的计算是对如下五个要素的一个或多个的线性加权1)带标签孩子节点的分数;2)同一层级的带标签孩子节点之间的相似度分数;3)不同层级的带标签孩子节点之间的层级分数;4)带标签孩子节点的布局分数;5)如果对于相同领域的对象已有一些之前抽取的属性值树,则可以进一歩包含内容分数。
17.根据权利要求11所述的系统,所述带标签节点树选择模块进一歩包括 第二选择单元,基于从所述带标签节点去除単元得到的带标签节点图,从当前带标签节点图中选择分数最高的带标签节点; 第二判定単元,用于判断该选择的带标签节点的分数是否小于第一阈值; 带标签节点树输出单元,当第二判定単元判断该选择的带标签节点的分数大于第一阈值时,得到选中的带标签节点对应的带标签节点树,并输出带标签节点树; 第三判定単元,用于判断已经得到的带标签节点树的数目是否大于第二阈值; 带标签节点去除単元,当第三判定単元判断已经得到的带标签节点树的数目小于第二阈值时,得到选中的带标签节点树中含有的带标签节点所对应的DOM节点,从带标签节点图中去除得到的DOM节点所对应的其他带标签节点。
18.根据权利要求11所述的系统,其中ー个属性值树包含多个概念节点;属性值树的每个概念节点都有一小段文本,每个概念叶节点代表一个对象属性的值;每个概念非叶节点代表不同级别的属性名。
19.根据权利要求18所述的系统,所述属性值树生成模块进一歩包括 概念根节点构造単元,用于构造一个辅助的概念根节点; 部分属性值树构造単元,用于对于每个选中的带标签节点树的带标签根节点,给定此带标签根节点和辅助的概念根节点,构造部分属性值树; 属性值树获得単元,用于得到属性值树,其根节点为辅助的概念根节点,如果需要的话,去掉概念根节点,可以得到ー个或多个属性值树。
20.根据权利要求19所述的系统,所述部分属性值树构造単元进ー步包括 输入值获取单元,对于ー个带标签节点树,得到带标签根节点和它对应的概念父节点; 第四判定単元,判断从输入值获取単元得到带标签根节点是否有孩子节点; 概念节点构造単元,当第三判定単元判断给定带标签根节点没有孩子节点时,构造一个概念节点,并把此带标签根节点对应的文本串赋给此概念节点,把此概念节点加到得到的概念父节点的孩子集合,并返回到递归地调用当前部分属性值树构造単元的原部分属性值树构造单元并继续执行处理;如果不存在递归地调用,则结束; 部分属性值子树递归构造単元,当第三判定単元判断给定带标签根节点有孩子节点时,顺序选择该带标签根节点的ー个孩子节点;得到当前选择的孩子节点对应的概念父节点;并针对以此孩子节点为根节点的带标签节点树,递归地调用所述部分属性值树构造单J Li o
全文摘要
本发明提供一种从网页中抽取对象属性值信息的方法,包括a)对于一个给定网页,得到与该给定网页对应的文档对象模型DOM树,并计算DOM树中的每个DOM节点的相关信息;b)根据DOM树和每个DOM节点的相关信息,构造一个带标签节点图,并且计算每个带标签节点的分数;c)基于带标签节点的分数,从得到的带标签节点图选择带标签节点树;d)基于选中的带标签节点树构造属性值树。这种方法一个优点是可以最小化领域相关信息的使用,而领域知识需要人力的参与,这往往困难且代价昂贵。该方法的另一个优点是可以抽取属性值树,而不仅仅是属性值对。属性往往拥有一个内在的层次结构。高层级的属性为低层级属性值提供了上下文信息,这些信息有助于信息集成和机器理解。
文档编号G06F17/30GK102650999SQ20111004757
公开日2012年8月29日 申请日期2011年2月28日 优先权日2011年2月28日
发明者姜珊珊, 孙军, 谢宣松, 赵利军, 郑继川 申请人:株式会社理光
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1