第
4.1.
节
处理结构化和半结构化网页的系统
...
第
4.1.1.
节
ShopBot
第
4.1.2.
节
WIEN..
第
4.1.3.
节
SoftMealy.
第
4.1.4.
节
STALKER.
第
4.2.
节
处理半结构化和非结构化网页的系统
...
第
4.2.1.
节
RAPIER.
第
4.2.2.
节
SRV.
第
4.2.3.
节
WHISK.
第
4.3.
节
小结
...
早期从网站上抽取信息的方法基本上是基于手工操作的。程序员认真研究网站的结构后手工编写代码,开发一个分装器程序,把网页的逻辑特征抽取出来并把他们存入到数据库。
TSIMMIS[13
,
25
,
28
,
29]
系统和“斯坦福
-IBM
多信息源管理系统(
1995
)”是比较早的帮助建造分装器程序的框架系统。
TSIMMIS
的目标是以一体化的方式获取不同信息源的信息并且保证所获取信息一致性。其重点是开发支持这种包装过程的语言和工具。
对于数据量大,结构动态变化的网站而言,需要一种更为有效的分装器建造方法。一般说来,数据库领域的人把注意力放在错综复杂的信息如何进行整合,分装器则用手工建造。另一方面,
AI
领域的人则把重点放在机器学习的方法如何能用在网站结构的自动学习上。本章将重点介绍分装器的自动或半自动的生成系统。
分装器及其自动生成的复杂度和难易度将取决于网站结构的层次。第
4 .1.
节介绍的系统主要是针对结构化程度相对好的网站。这类系统多数是源自分装器生成领域的研究者。第
4.2.
节介绍了能处理结构缺少规范化的网页。这类系统较多地受到传统的
IE
领域的影响。
第4.1.节
处理结构化和半结构化网页的系统
本节介绍
ShopBot, WIEN, SoftMealy
和
STALKER
系统。这类系统可以说是属于分装器生成系统,专门用来从网站数据库系统生成的网页。采用分隔符为主的抽取规则,无需用到句法和语义知识,局限于处理比较结构化的数据。
第4.1.1.节
ShopBot
开发者:
R. B. Doorenbos, O. Etzioni, D. S. Weld (1996/1997)[17,18]
。
ShopBot
是比价代理系统,专门从网上卖家的网站上抽取信息,因此,比其他系统的局限性要大。其算法主要针对以表单形式提供查询的页面,而且返回的搜索结果是以表格形式显示的产品信息页面。从结果页面中抽取信息的技巧结合了启发式搜索、模式匹配和归纳式学习。
ShopBot
的运行分两个阶段:离线学习阶段和在线比价阶段。在学习阶段,系统分析每个购物网站,获得其符号化描述,然后在比价阶段,利用获得的符号化描述,从网站上抽取信息,找到用户指定的产品的最低价格。
在学习阶段,系统利用简单的启发式方法找到正确的检索表单,学习如何向该表单发送查询请求。学习程序还必须判定查询结果页面的格式。一般包括头部、主体和尾部等三部分。头尾两部分在所有的结果页面中都是一致的,而主体则包含了想要的产品信息。结果页面的格式是通过三个步骤判定的:
第
1
步:获取“找不到产品”的失败页面。用不存在的词(如“
xldccxx-no-product”
)作为关键字查询数据库,然后分析返回的页面。
第
2
步:找到头尾部分。用可能存在的产品名称去查询数据库,通过分析返回的页面找到头尾部分。
第
3
步:判定包含产品信息的主体格式。首先用
HTML
标记和字串对可能的产品信息摘要进行定义和表示。网页主体被切分成“逻辑行”,代表“垂直空格分隔”
(vertical-space-delimited)
的文本。学习程序用逻辑行比较不同的摘要形式,找到最佳匹配。这样可以找到产品的描述格式,但是不能归纳出信息栏的名称。最关键的价格信息是用手工编码的方法获取的。
第4.1.2.节
WIEN
开发者:
N. Kushmerick
(1997) [33,34]
。
“分装器归纳生成环境”(
WIEN-Wrapper Induction Environment
)是辅助分装器生成的工具,为网页的自动分析而设计,受到
ShopBot
的影响。不过,
Kushmerick
是第一个提出分装器归纳生成这一术语的。其方法不只局限于某一领域,适用于所有包含表格信息的结构化文本,也不只是用于
HTML
文本。
这种方法可以处理被他们称之为具有
HLRT
结构的网页:头分隔符、左右分隔符(在每个待抽取的事实的左右)和尾分隔符。系统寻找标记信息点开始和结尾的统一的分隔符,以及那些把表格信息与其他周围信息分开的分隔符。符合这一规则的页面几乎都是搜索数据库所得的结果页面。
Kushmerick
力图尽量自动化,避免用人工标记样例,因此开发了一系列自动标记样例的方法。标记算法需要输入特定领域(
domain-specific
)的启发学习规则,目标是找到待抽取属性的值。系统虽然需要输入学习规则,但却不管这些规则是如何获得的,可以手工编制。即使是这样,比起标记整个网站来,其工作量要小。
系统采用归纳学习法,从查询结果样例中生成分装器。归纳算法是:把标记好的网页作为输入,然后搜索由“
HLRT
分装器模型”定义的分装器空间(
space of wrappers
),反复尝试所有可能的分隔符,直到找到与标记网页相一致的
HLRT
分装器。系统还采用基于机器学习理论的模型来预测需要学习多少个例子,以保证所生成的分装器的出错几率控制在一特定的范围内。
由于
WIEN
只考虑与待抽取数据紧相邻的分隔符,因此不能包装那些数据不全或信息项次序不固定的网页。系统采用的是多栏(
Multi-slot
)规则,这就意味着能把相关的信息联在一起,而单栏规则只能抽取孤立数据(例如,若一篇文档包含多个姓名和地址,使用单栏规则不能辨认出哪个地址是属于某人的)。
第4.1.3.节
SoftMealy
开发者:
C-H. Hsu (1998)[30,31]
。
Kushmerick
之后,有好几个别的系统研发出来,力图改进
WIEN
的分装器归纳算法。
SoftMealy
是一个通过学习分装器学习从半结构化网页中抽取信息的系统。其分装器被称为“非确定有限自动机”(
non-deterministic finite automata
)。这种表达模式和学习算法据说可以处理缺失值、一栏多值和变量改变(
permutations
)的情况。
系统从训练样例中归纳上下文规则。训练样例提供一个有顺序的事实列表以及事实间的分隔符。归纳生成分装器时,把一系列带标记元组(
labeled tuples
)作为输入。这些元组提供了分隔符的位置和事实次序变化的信息。这些信息被归纳为上下文规则作为结果输出。
归纳生成的分装器是一个“非确定有限自动机”。其状态代表待抽取的事实,状态的转换代表定义分隔符的上下文规则。状态的转换由上下文规则的匹配结果来确定。分装器通过识别事实周围的分隔符来抽取事实。
SoftMealy
的规则允许使用通配符,而且能处理信息缺失和次序变化。然而,为了能处理不同次序的事实,系统需要学习其各种可能的次序。总的说来,
SoftMealy
的抽取模式比
WIEN
规定的要更有表达能力。
第4.1.4.节
STALKER
开发者:
I. Muslea, S. Minton, C. Knoblock. (1998) [42,43,44]
。
STALKER
采用指导学习的算法归纳抽取规则。训练例子由用户提供。用户需选择若干样例页面并把有用的数据(即所谓“
EC
树”的叶子)标记出来。页面被标记好后,系统可生成一符号序列(
the sequence of tokens
),用来表示页面的内容,还生成代表信息点开始的符号索引。符号系列(字、
HTML
标记)和通配符被作为定位标志,用于找到页面上的数据。分装器归纳算法产生抽取规则并表示为简单的标志语法(
landmark-grammars
)。此法可处理文本,但不能处理链接信息。
网页文档用所谓的“内嵌目录”(
Embedded Catalog
)表示。那是一个树形结构,其内部节点或是同构的(
homogeneous
)信息点列表,或是异构信息点元组(
tuples
)。根节点是整篇文档,任一节点的内容代表其父节点内容的一个接续(
subsequence
)。末节点即是用户需要抽取的数据。
STALKER
采用线性覆盖算法(
sequential covering algorithm
)。首先生成线性标志自动机(
landmark automata
)。这些自动机能产生尽可能多的训练正例(
positive training examples
)。该自动机实际上是一个“非确定有限自动机”。其状态的变化只有在字符串输入为了目前状态与下一状态间的转换而被接受时才发生。然后系统试图生成新的自动机以覆盖剩余的例子,一直到所有的训练例子都被覆盖为止。这时,
STALKER
返回一个被称之为
SLG
(简单标记语法)的解决方法。其每个分支都对应一个学习获得的标记自动机。
STALKER
可以包装有任意层结构的信息源。每个节点的抽取与其子节点独立,因此,文档中信息点的次序是没有关系的。对于信息点缺失或次序多变的文档一样能处理。这就比只能处理固定次序的
WIEN
等系统更灵活。与同样能处理信息点缺失或次序多变文档的
SoftMealy
不同,
STALKER
无需把各种可能的次序变化都学习到。
STALKER
采用的规则与
WIEN
的不同,是单栏的。不过由于
STALKER
利用
EC
树把从多栏模板中取出的单个信息点集在一起,因此没有什么缺陷。
第4.2.节
处理半结构化和非结构化网页的系统
本节介绍
RAPIER
,
SRV
和
WHISK
系统。这些系统比上节介绍的要复杂一些,能处理的文本类型要多一些。虽然如此,它们并不依赖语义和句法信息,只是在可能的情况下利用这些知识,而且能发挥混合抽取模式的作用。
这些系统更接近传统的信息抽取方法,可以说处于
IE
和
WG
中间,因为它们的重点是开发用机器学习方法来解决
IE
问题。所用的方法以归纳逻辑编程(
inductive logic programming
)或关系学习(
relational learning
)为基础,而且与归纳算法有关,比如
FOIL
算法(
SRV
,
WHISK
采用)和
GOLEM
算法(
RAPIER
采用)。
第4.2.1.节
RAPIER
开发者:
E. Califf
(1997) [11,12]
。
RAPIER
(
Robust Automated Production of Information Extraction Rules
,健壮的信息抽取规则自动生成系统)以半结构化文本为处理对象,学习抽取规则,为整个
IE
过程服务。系统需要输入指明待抽取信息的“文档
-
充实模板”(
filled template
)组对作为训练内容,从中获得模式匹配规则,抽取“填充子”(
filler
)填充模板中的空槽。
学习算法结合了多个归纳逻辑编程系统所采用的技巧,能学习无界限模式。这些模式包含了对词的限制条件和填充子周围的词性。学习算法由一个从具体到一般(即自下而上)的搜索,从训练中与目标槽匹配的最具体的规则开始。随机从规则库中抽取一对对规则,然后横向搜索(
beam search
),以图找到这两条规则的最佳概括,采用最少概括的概括方法(
a least general generalization
),增加限制条件,不断重复后直到不再有进展为止。
RAPIER
的抽取规则是建立在分隔符和内容描述的基础上的,即使用了能利用句法和语义信息的模式所表达的规则。系统使用了一个词性标注程序获取句法信息,使用了一个语义类别词典获取语义信息。标注程序以句子为输入单位,把词标注为名词、动词、形容词等,速度和健壮性都比完全句法分析器快和优,但给出的信息有限。
信息抽取规则用模板名和格栏(
slot
)名索引,由三部分组成:前填充子(
pre-filler
):一个应匹配目标文本之前的文本的模式(
pattern
);填充子:一个应匹配目标文本的模式;后填充子:一个应匹配紧接目标文本之后的文本的模式。
一个模式是一串模式信息点(
pattern items
),要求一个一个词匹配,或者是模式列表(
pattern lists
),可匹配
N
个词。文本必须满足模式规定的条件才算匹配成功。可能的条件包括文本必须是(
I
)一组词,其中一个必须与文档文本匹配;(
II
)一组句法标记,其中一个标记必须与文档文本的标记匹配;或者(
iii
)一组语义类别,文档文本必须属于其中一类。
这种以目标词组为中心设定抽取区域的方法意味着系统只能进行单格抽取。但是,若把文本分成超过三个区域,系统或许能进行多格抽取。
第4.2.2.节
SRV
开发者:
D. Freitag (1998) [21,22,23]
。
SRV(Sequence Rules with Validation
,带确认功能的次序规则
)
是一种自上而下、关系型的信息抽取算法。其输入是一系列的网页,上面标记了待抽取区域的实例(
instance
),以及一系列基于字串
(token)
的特征。输出是一系列的抽取规则。
SRV
把信息抽取问题看成是一种分类问题。文本中所有可能的短语(取最长者)都是实例。文档中的候选实例被提交到分类器。系统会给每个短语赋一个测量值,用于反映该短语作为目标格填充子的信度。最初版本的
SRV
采用的分类器是一个关系型规则的学习器,使用的归纳方法类似于
FOIL
的自上而下的办法。在文献
[23]
中,他们采用了另外两个分类器,机械背诵学习器(
rote learner
)和简单贝叶斯分类器
(naïve Bayes classifier)
,并与原来的分类器作了比较。
SRV
利用的特征分两种:简单特征和关系特征。字词的长度、类型、拼写、词性等属于简单特征。关系特征反映字词的相邻度。正是这一特征使
SRV
具有关系型的特点。
SRV
的学习素材包括训练集文档中与最短实例区(
field instance
)一样长(以词的个数计算)的字串,但不能长过最长的实例。抽取过程即是检验长度适合的字串是否与规则匹配的过程。
SRV
与
FOIL
一样,从学习所有正反例子开始。所谓反例是没有被标记为实例区的字串。归纳过程也是用正排除法,即当一条规则覆盖的例子全部是正例,或该规则已无法继续具体化时,所有与之匹配的正例将被从训练集中删除。然后重复以上过程。
SRV
的规则具有较强的表达能力,且无需先进行句法分析。
SRV
与
STALKER
和
RAPIER
有类似之处,能把与其他相关信息点独立的特定信息点抽取出来。关系型学习器也与
RAPIER
的一样用于抽取单格信息点。这与
WIEN
等抽取多格信息的系统不一样。
第4.2.3.节
WHISK
开发者:
S. Soderland
(1998) [52]
。
WHISK
系统能处理的文本对象很全面,从结构化程度很强的文本到网页等半结构化文本,还能处理新闻等纯文本。处理结构化或半结构化文本时,
WHISK
无须事先经过句法分析,但处理自由文本时,最好能先对文本作句法和语义标注。
系统采用指导学习算法,而且需要输入一系列手工标注的训练实例。标注和学习过程是交织在一起的。每次循环,系统将提交一批实例让用户标注,系统则从标注的实例中归纳出规则。
开始时,输入的文本是未标注的,训练集也是一个空集。系统会从文本中挑选一批实例(即小于整个文档的文字单位),让用户把需抽取的部分加上标记。怎样的字串会被选为实例呢?这取决于文档的类型。对于结构化和半结构化文档来说,系统根据
HTML
标记或其他字符串表达式把文本切成多个实例。对自由文本,实例的切分将由一个句子分析器完成。在这种情况下,一个实例可能是一个句子或者句子的一部分。
训练实例上的标记将指导抽取规则的生成,并且检验规则的效果。如果规则被成功应用到一个实例上,那么该实例则被认为被规则“覆盖”了。如果抽取出来的词组与实例上的标记相吻合,则认为该词组的抽取是正确的。
WHISK
属于机器学习算法家族中的覆盖学习法,与自上而下的学习分类归纳法相关。首先,找到一个最宽泛(
general
)的能覆盖规则种子的规则,然后一次加一个条件,直到错误率为零,或者满足一个事先设定的标准为止。用来衡量新条件增加的标准是规则的
Laplacian
期望错误值。计算公式如下:
。
N
是训练集中抽取出来的字串数,
e
是这些字串中应用规则所产生的错误数。学习过程一直进行,直到能覆盖所有该被覆盖的抽取字串都被覆盖为止。最后把那些过适(
overfitting
)规则删除掉。
WHISK
与
SRV
、
RAPIER
等一样可以处理结构化和非结构化文本,但没有“单格”抽取法的缺陷。象
WIEN
一样,
WHISK
通过多格“格框架”(
Case Frame
),把有关的信息联系在一起。
WHISK
与
SRV
和
RAPIER
也不同,操作的对象不是整个文档,而是象句子或类似长度的文本。
WHISK
象
SoftMealy
一样可以处理信息点顺序变化的情况,但需要输入各种例子,以便学习所有可能的排序。由于其特征集的表达能力不强,因此不能表达否定特征(
negated features
),比
SRV
的性能要差一些。
第4.3.节
小结
本章比较了几个分装器的自动学习系统。
表
4. 1
总结了这些系统的特点。
表
4. 1. 七
个系统的功能特征比较
系统
|
结构化
|
半结构化
|
自由式
|
多槽
|
缺失信息
|
次序变化
|
ShopBot
|
X
|
|
|
|
|
|
WIEN
|
X
|
|
|
X
|
|
|
SoftMealy
|
X
|
X
|
|
|
X
|
X*
|
STALKER
|
X
|
X
|
|
*
|
X
|
X
|
RAPIER
|
X
|
X
|
|
|
X
|
X
|
SRV
|
X
|
X
|
|
|
X
|
X
|
WHISK
|
X
|
X
|
X
|
X
|
X
|
X*
|
|