发明名称 一种基于实体的自底向上Web数据抽取方法
摘要 本发明提供了一种基于实体的自底向上Web数据抽取方法,属于网络数据管理领域,具体步骤包括:选择Web数据页面、划分文本、标注实体属性、抽取属性序列重复模式抽取、化简结果模式;本发明的Web数据抽取方法,可以更广泛的抽取复杂Web页面的结构化数据,有效避免先前抽取技术对页面结构的过度依赖,适应性好,准确度高。
申请公布号 CN102262658B 申请公布日期 2013.10.16
申请号 CN201110196449.6 申请日期 2011.07.13
申请人 东北大学 发明人 申德荣;刘桐;寇月;聂铁铮;于戈
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 沈阳东大专利代理有限公司 21109 代理人 李运萍
主权项 1.一种基于实体的自底向上Web数据抽取方法,其特征在于:具体步骤如下:步骤1. 选择Web数据页面:对于DeepWeb响应页面,需要输入查询词来获得;Web页面可以看作是由HTML语言描述的文本字符串,使用DOM解析工具HtmlAgilityPack将其解析成为标签和文本;然后,在DOM树中删除所有script节点和comment节点,对HTML文档进行最基本的去噪并做规范化处理,得到符合XML标准的文档D;D可以表示为:(T,M,S),其中T是DOM树中所有标签节点的集合,M是DOM树文本节点中的分隔符的集合,S是DOM树文本节点中除了T和M之外所有的文本字符串;步骤2. 划分文本:对于给定的文档D,按照下面两个条件将S划分为有序的字符串序列:(1)对于每一个t<img file="986510DEST_PATH_IMAGE002.GIF" wi="14" he="14" />T,m<img file="958008DEST_PATH_IMAGE002.GIF" wi="14" he="14" />M,都以此为分隔在S上做一次划分;(2)对于相邻的子字符串且对应的文本节点在DOM树中深度相差一级的划分,予以合并操作;文本S经过以上划分后得到有序序列S<sub>list</sub> = &lt;s<sub>1</sub>,s<sub>2</sub>,…,s<sub>n</sub>&gt;,其中s<sub>i</sub><img file="279399DEST_PATH_IMAGE004.GIF" wi="17" he="14" />S,且s<sub>1</sub><img file="160899DEST_PATH_IMAGE006.GIF" wi="18" he="14" />s<sub>2</sub><img file="50488DEST_PATH_IMAGE006.GIF" wi="18" he="14" />…<img file="485845DEST_PATH_IMAGE006.GIF" wi="18" he="14" />s<sub>n</sub><img file="361660DEST_PATH_IMAGE004.GIF" wi="17" he="14" />S;每一个s<sub>i</sub>都对应文档D中的一段文本字符串,这里s<sub>i</sub>被称为实体;步骤3. 标注实体属性:即赋予S<sub>list</sub>中的每个实体一个实体类型的名称;每类Web主题都包含特定的实体类型集,那么给定一个主题,也就确定下来实体类型集A;对于每个实体类型a<img file="222299DEST_PATH_IMAGE002.GIF" wi="14" he="14" />A,采用一个二级抽取模型,第一级L<sub>1</sub>定义查全规则r<sub>a1</sub><img file="282790DEST_PATH_IMAGE002.GIF" wi="14" he="14" />R<sub>1</sub>,第二级L<sub>2</sub>定义查准规则r<sub>a2</sub><img file="104247DEST_PATH_IMAGE002.GIF" wi="14" he="14" />R<sub>2</sub>,其中R<sub>1</sub>是该主题所有实体类型的查全属性集合,R<sub>2</sub>是该主题所有实体类型的查准属性集合;这样做能够很好的将查全率与查准率的相互依赖性拆开,保证信息的最小丢失和最大收益;给定<img file="33020DEST_PATH_IMAGE008.GIF" wi="34" he="37" />, <i>B</i>代表能够匹配该实体的规则集,<i>A</i>代表匹配<i>B</i>中某条规则后得到的属性标签;具体标注过程如下:将R<sub>1</sub>中的每一条规则r<sub>x1</sub>在S<sub>list</sub>上进行匹配,规则r<sub>x1</sub>会将所有匹配它的实体添加x属性,若某一实体s<sub>x</sub>匹配r<sub>x1</sub>,则将属性x添加到s<sub>x</sub>的属性列表中,x<img file="748166DEST_PATH_IMAGE002.GIF" wi="14" he="14" />A;经过规则集R<sub>1</sub>匹配后的实体属性序列可以表示为:<img file="104192DEST_PATH_IMAGE010.GIF" wi="506" he="77" />将R<sub>2</sub>中的每一条规则r<sub>x2</sub>在S<sub>list</sub>上进行匹配,规则r<sub>x2</sub>会将所有匹配它的实体唯一标识x属性,若某一实体s<sub>x</sub>匹配r<sub>x2</sub>,则s<sub>x</sub>的属性唯一确定为x,删除s<sub>x</sub>的其它属性,x<img file="147366DEST_PATH_IMAGE002.GIF" wi="14" he="14" />A;假设s<sub>1</sub>的属性被确定为x<sub>1</sub>,s<sub>n</sub>的属性被确定为x<sub>n</sub>,那么经过规则集R<sub>2</sub>匹配后的实体属性序列可以表示为:<img file="755196DEST_PATH_IMAGE012.GIF" wi="490" he="83" />用A<sub>list</sub>表示上面的序列,它是一个拥有部分确定属性的实体属性序列;步骤4. 抽取属性序列重复模式:设集合I为所有实体在文本中的索引的集合即Ind = {Index(s<sub>i</sub>, D)|i<img file="200215DEST_PATH_IMAGE002.GIF" wi="14" he="14" />Z<sup>+</sup>},Z<sup>+</sup>是正整数集合;定义集合AI = {(a, ind)|a<img file="602508DEST_PATH_IMAGE002.GIF" wi="14" he="14" />A<sub>list</sub>, ind<img file="647825DEST_PATH_IMAGE002.GIF" wi="14" he="14" />I},具体过程如下:选择起始关键属性,即找到(a<sub>k</sub>, ind<sub>k</sub>)满足:<img file="669132DEST_PATH_IMAGE014.GIF" wi="372" he="76" />其中,sum函数求出所有被标注包含有a<sub>m</sub>属性的实体的索引值的和,count函数计算出被标注为包含a<sub>m</sub>属性实体的个数,SN为该主题的实体类型数量;在A<sub>list</sub>中从a<sub>k</sub>开始遍历,创建一个队列Q记录遍历过的属性序列,每当遇到包含a<sub>k</sub>的属性a<sub>x</sub>,则将Q中已有的属性序列作为一个重复模式P<sub>r</sub>添加到候选模式集合P中,并将a<sub>x</sub>加入队列作为下一个属性序列的开始;若某一序列只包含一个元素,则将其添加到上一序列,并移除该元素的a<sub>k</sub>标签;若P中已经包含P<sub>r</sub>,则将P<sub>r</sub>的支持参数Support(P<sub>r</sub>)增加1;反之则将P<sub>r</sub>的支持参数初始化为0,重复执行以上步骤直到整个A<sub>list</sub>遍历完毕;模式P<sub>r</sub>可以表示为&lt;a<sub>1</sub>, a<sub>2</sub>, …, a<sub>rn</sub>&gt;,x<sub>i</sub><img file="93292DEST_PATH_IMAGE002.GIF" wi="14" he="14" />A,rn为P<sub>r</sub>中包含的实体属性数量,则生成的候选模式集合P可以表示为{P<sub>1</sub>, P<sub>2</sub>, …, P<sub>pn</sub>},P中的每个元素都代表D中唯一的重复模式,pn是从D中抽取出的不同重复模式数量;根据rn将P中的模式分组,保证同一组的模式都具有相同的rn,不同组的模式都具有不同的rn;将经过分组后的P表示为G = {g<sub>l1</sub>, g<sub>l2</sub>, …, g<sub>lgn</sub>},l<sub>i</sub>是每组模式rn的值,gn是组的数目;对任意组gli中的所有模式做两两交运算,给定两个具有相同rn的模式P<sub>1</sub> = &lt;a<sub>1</sub>, a<sub>2</sub>, …, a<sub>rn</sub>&gt;,P<sub>2</sub> = &lt;b<sub>1</sub>, b<sub>2</sub>, …, b<sub>rn</sub>&gt;,定义P<sub>1</sub>与P<sub>2</sub>的交运算如下:对于每对属性a<sub>p1</sub><img file="56700DEST_PATH_IMAGE002.GIF" wi="14" he="14" />P<sub>1</sub>,a<sub>p2</sub><img file="199099DEST_PATH_IMAGE002.GIF" wi="14" he="14" />P<sub>2</sub>,做集合交运算a<sub>p1</sub><img file="7786DEST_PATH_IMAGE016.GIF" wi="18" he="14" />a<sub>p2</sub>;所以P<sub>1</sub><img file="427397DEST_PATH_IMAGE016.GIF" wi="18" he="14" />P<sub>2</sub> = &lt;a<sub>1</sub><img file="561707DEST_PATH_IMAGE016.GIF" wi="18" he="14" />b<sub>1</sub>, a<sub>2</sub><img file="925823DEST_PATH_IMAGE016.GIF" wi="18" he="14" />b<sub>2</sub>, …, a<sub>rn</sub><img file="803780DEST_PATH_IMAGE016.GIF" wi="18" he="14" />b<sub>rn</sub>&gt;;对于没有<img file="225969DEST_PATH_IMAGE018.GIF" wi="18" he="17" />元素的交运算结果<img file="140967DEST_PATH_IMAGE020.GIF" wi="21" he="25" />,将这两个模式用<img file="257958DEST_PATH_IMAGE020.GIF" wi="21" he="25" />代替;对于有<img file="674027DEST_PATH_IMAGE018.GIF" wi="18" he="17" />元素的<img file="927285DEST_PATH_IMAGE020.GIF" wi="21" he="25" />,将这两个模式予以保留;因此,在算法结束时每组都可能包含一个或者多个结果模式,且大多数结果模式只包含单一属性;少数复杂的模式在交运算之后仍然包含多标签属性,对于这类结果模式,将遵循保证模式内包含最大实体类型数目的原则拆分多标签属性;假设某一结果模式P<sup>c</sup> = &lt;x<sub>1</sub>, x<sub>2</sub><img file="403397DEST_PATH_IMAGE006.GIF" wi="18" he="14" />x<sub>3</sub>, x<sub>3</sub>, x<sub>4</sub>&gt;,根据分裂后的信息增益,将其输出为&lt;x<sub>1</sub>, x<sub>2</sub>, x<sub>3</sub>, x<sub>4</sub>&gt;;经过完整算法,G可以表示为:<img file="617472DEST_PATH_IMAGE022.GIF" wi="94" he="65" />其中cn<sub>i</sub>是组g<sub>i</sub>中包含的结果模式数目,<img file="961866DEST_PATH_IMAGE024.GIF" wi="38" he="33" />是长度为rn<sub>i</sub>的组中的一个结果模式;将G中的结果模式重新按照初始顺序构建为P;选择P中全部Support相同且在D中相邻出现的模式,对于每对符合条件的P<sub>1</sub>,P<sub>2</sub>,若P<sub>1</sub>或P<sub>2</sub>具有包含a<sub>k</sub>属性的多标签属性且P<sub>1</sub><img file="335209DEST_PATH_IMAGE006.GIF" wi="18" he="14" />P<sub>2</sub><img file="592009DEST_PATH_IMAGE002.GIF" wi="14" he="14" />P,则用P<sub>1</sub><img file="683593DEST_PATH_IMAGE006.GIF" wi="18" he="14" />P<sub>2</sub>代替P<sub>1</sub>和P<sub>2</sub>,并将Support(P<sub>1</sub><img file="316831DEST_PATH_IMAGE006.GIF" wi="18" he="14" />P<sub>2</sub>)增加Support(P<sub>1</sub>);对于那些Support数仍为1且包含较少的实体类型或者包含较多不确定属性标签的模式删除;最终,通过一个阈值<img file="544681DEST_PATH_IMAGE026.GIF" wi="17" he="16" />控制输出P中符合条件的结果模式集合P<sub>c</sub>,<img file="97016DEST_PATH_IMAGE026.GIF" wi="17" he="16" />是大于0的正整数;步骤5. 化简结果模式:对P<sub>c</sub>中的每个模式建立有限自动机,按照模式的序列顺序设立初始状态和终止状态,每遇到一个特定的属性都会转移到指定的状态;当模式序列遍历结束时,自动机同时创建完毕,输出满足以下两个条件的序列为化简后的模式:(a) 保证每个属性值被至少访问一次;(b) 该序列是满足(a)条件的从初始状态到终止状态的最短路径;最后,删除化简后产生重复冗余的模式。
地址 110819 辽宁省沈阳市和平区文化路3号巷11号