郭志红(上海交通大学情报研究所,上海200030)
摘要 web资源含有大量的有用信息,但由于它们欠结构化,不能为传统的数据库型查询系统所利用。如何将这些信息抽取出来,转化成结构化信息,供其它信息集成系统所利用,成为该顶域的研究热点。本文介绍了一个简单的web信息抽取模型,对基于该模型的wrapper归纳技术进行了探讨,并描述了一个wrapper自动生成系统的原型。
关键词 信息抽取 wrapper归纳技术 自动生成原型系统
引言
Internet是一个巨大的信息资源库,它上面有着各种各样的在线信息:天气预报,股票价格,商品目录,政府法规和税收政策,个人爱好,研究报告等等。所有这些web资源信息都有两个共同的特征:(1)文本内容以html形式发布。(2)通过浏览方式或基于格式的查询方式来实现对其内容的存取。由于html标记更关注字体大小,颜色,位置等,而文档的结构却隐含在这些标记中,故html页中的大量信息都是半结构化的。而基于这种半结构化信息的查询,即web查询,与传统的基于结构化信息的数据库查询是不同的,其查询结果往往是互不相关的html页面,而且相同的查询往往得到的是不同的结果。故要直接查询页面上的精确信息显得十分困难。为了解决这个问题,需要针对各种类型的web资源集构建相应的wrapper,利用该wrapper 去抽取html页中的半结构化信息,并转化成结构化数据,供其它信息集成系统利用。由于网上新资源的频繁加入,现存的资源格式又经常变化,手工构建wrapper将极其乏味而且容易出错。因此,开发出自动构建wrapper的技术及其系统则是该顶域的发展趋势。
web信息抽取模型
一个简单的web信息抽取模型可概括为:向特定资源库发出一个查询请求,得到相应的响应页,然后wrapper从响应页中抽取出所需要的信息,将其映射成相应的标记信息,如图1所示。
图中Q是以查询语言Q.构造的查询表达式,表达了用户所需要的信息。它可能是SQL或KQML语句,也有可能是CGI脚本参数所组成的语句。P 为查询响应页,可以把它看成是ASCII字符集∑中的字符串,含有一个或多个所需信息的元组(例如,假设我们要抽取的信息为各个国家所对应的电话号码区域号,则具体的〈国家,区域号〉即为一个元组。它有两个属性:国家,区域号。形式地讲,一个元组可表达为一个具有k个字符串属性的向量<A1,A2,…,Ak>)S为特定的信息资源库,可以看成是一个将查询表达式转化成响应页P的函数。L为标记信息集,一个标记信息集L就是一个响应页中所要抽取的所有信息元组集合。其形式化表示如下所示:
即该响应页中含有│L│>0个元组,每个元组具有K>0个属性。整数1≤k≤K是属性索引号,而整数1≤m≤∣L∣则是该响应页中的元组索引号,每个<bm,k,em,k>表示为一个单一的属性集。bm,k是第m个元组的第k个属性在该响应页中的起始位置,em,k则是它的结束位置。因此,第m个元组的第k个属性的值为该响应页中处于bm,k和em,k两个位置点之间的字符内容。
W是一个Wrapper,是整个信息抽取模型的核心,可以将W看成是一个将响应页P映射成标记信息集L的函数。用公式表示即为W(P)=L,也就是说,在响应页P上调用W,所得结果为标记信息集L.
wrapper 归纳技术
wrapper 归纳技术是一种自动构建wrapper程序的技术。其形式化描述如下所示:
输入:集合ε={……,<pn, ln>……}(取自于样例页),其中pn指的是响应页,ln指的是标信息集。
输出:wrapper程序w, w属于W(W为wrapper程序库,该库是动态构建的)。对于ε中的任意一个<pn, ln>,均有w(pn)=ln。
在上述概念和模型的基础上,Nicholas Kushmerick提出了六种wrapper集:LR wrapper集, HLRT wrapper集, OCLR wrapper集, HOCLRT wrapper集, N-LR wrapper集和N-HLRT wrapper集。LR wrapper集是个基础集,其它五者都是它的扩展。一个wrapper集包含三个元素:一个wrapper,一个wrapper执行程序和一个wrapper学习算法。一个wrapper可简单地表示为一个向量。该向量具有多个分量,各个分量分别对应不同的分界符。一个wrapper执行程序描述如何用一个wrapper(即由多个不同的分界符所组成的向量)去抽取响应页中的元组信息,并输出一个标记信息集。一个wrapper学习算法是由一大堆子例程组合而成,其功能为:通过采用启发式规则和样本分析方法,为不同的web类型集,构建相应的wrapper。在此,以LR wrapper集为例作详细的说明。一个LR wrapper可表示为向量<l1,r1,……, lK, rK>,其中l1,l2,……,lK为左边分界符,如<B>,<I>等, r1,r2,……,rK为右边分界符,如</B>,</I>等。LR wrapper执行程序如图2所示。
它描述了一个LR wrapper是如何执行的。它的输入参数为: Wrapper<l1,r1,……, lK, rK>和响应页P,输出结果为:标记信息集{…,< <bm,1,em,1>,…,<bm,K,em,K>>,…}。LR wrapper学习算法如图3所示。它列举了LR学习程序LearnLR及其candsx (x∈{l,r}),validx等相关子例程。LR wrapper学习算法依次考虑每一个分界符,对于每一个分界符,算法都要为其枚举侯选集candsx(k,ε)中的每一个侯选对象,一旦有侯选对象满足所有有效条件validx,则被确定为合格对象,该循环终止。LearnLR的输入参数为样页ε,输出结果为LR Wrapper<l1,r1,……, lK, rK>。其它wrapper集都是LR wrapper集的扩展。HLRT wrapper集中的wrapper可表示为向量<h,t,l1,r1,……, lK, rK>,其中h,t分别为首位分界符;OCLR wrapper集中的wrapper可表示为向量<o,c,l1,r1,……, lK, rK>,其中o,c分别为打开和关闭分界符;HOCLRT wrapper集中的wrapper可表示为向量<h,t,o,c,l1,r1,……, lK, rK>。这四者所处理的响应页均为含有HTML标记的文本。N-LR wrapper集和N-HLRT wrapper集均可用来抽取嵌套结构信息,它们处理的相应页可以是不含HTML标记的文本。N-LR wrapper可表示为向量<l1,r1,……, lK, rK>,N-HLRT wrapper可表示为向量<h,t,l1,r1,……, lK, rK>,这些分界符可以是HTML标记,如<B>,</B>,<I>,</I>等,也可以是文本字符串,如"name","address" 等。在LR wrapper中的各分界符是彼此独立的,而在N-LR wrapper和N-HLRT wrapper中的各分界符是相互关联的。实验结果表明,这六个wrapper集可以处理70%的网站,所需要的样页只需2~3页就足够了。Wrapper的生成时间不超过一个cpu秒。
wrapper半自动生成系统的开发
手工构建wrapper极其乏味,而且很容易出错,开发wrapper自动生成系统,在人工参与的情况下半自动地或无需人工干预的情况下完全自动地针对不同的web类型集构建相应的wrapper是web信息抽取工作者孜孜以求的目标。一个wrapper半自动生成系统可包含如下四个模块:
语法结构标准化模块 该模块负责根据用户需求抓取web文档,将文档中的错误标记或丢失的标记进行修复,最后将该文档转换成一个语法标签树,为进行信息抽取作好准备。
信息抽取模块 负责产生抽取规则。这些规则用声明性语言来表述。它分三步来执行:(1) 在检索到的文档中确定感兴趣的区域。(2)在语法标签树中确定重要的语义标签和它们的逻辑路径、节点位置。(3)在检索到的文档中确定有用的层次结构。每一步的结果都一套抽取规则。这个模块相当于wrapper归纳技术中的wrapper学习算法。
代码生成模块 利用信息抽取模块中所产生的信息抽取规则,结合各个规则所对应的可执行库例程,形成wrapper程序代码。这个过程相当于wrapper归纳技术中的wrapper执行程序的生成。
测试和打包模块 对所生成的wrapper程序进行测试和调整,以期得到更完善的版本,对最终所满意的版本进行打包发布。
在这样的一个wrapper半自动生成系统中,可以充分利用声明性语言的优点来对信息抽取进行规范说明,大大提高了可重用性。
结语
作为一门应用性的语言处理技术,web信息抽取近年来正受到越来越多的重视。本文介绍了一个简单的web信息抽取模型,在该模型中对web信息抽取进行了形式化的描述。此外,详细探讨了wrapper归纳技术中的LR wrapper集,并就Nicholas kushmerick所提供的其它五种wrapper集进行了比较说明。最后介绍了wrapper半自动生成系统的一个原型。对其各个模块的主要功能进行了阐述。
参考文献
1.Nicholas Kushmerick. Wrapper induction: Efficiency and expressiveness. Artifical Intelligence 118(2000) 15-68
2.Ling Liu ,Calton Pu, Wei Han. An XML-enabled data extraction toolkit for web sources. Information Systems 26 (2001) 563-583
3.Arnaud Sahuguet, Fabien Azavant. Building intelligent Web applications using lightweight wrappers. Data & knowledge Engineering 36 (2001) 283-316