1 GATE介绍
GATE是一个应用广泛的信息抽取的开放型基础架构,为用户提供图形化的开发环境,被许多自然语言处理项目尤其是信息抽取研究项目所采用。该系统对语言处理的各个环节――从语料收集、标注、重用到系统评价均能提供很好的支持。
GATE设计的三个主要目的是:
1) 为语言处理软件提供基础架构,提供文本处理的总体组织结构。
2) 提供可重用的用于自然语言处理的组件和类库,从而能够嵌入到各种不同语言处理的应用程序中。
3) 提供语言工程的开发环境,为语言处理软件的研究和开发提供一种方便的图形化的环境,为用户提供全面的开发帮助和可视化的调试机制。
1.1 CREOLE
GATE平台的核心是可重用组件――CREOLE(a Collection of REusable Objects for Language Engineering),CREOLE基于Java Bean实现,有三种类型:
Language Resources(LRs):LR可以理解成IE要处理的文本,在GATE中用Document对象表示可处理的文本,目前支持XML,HTML,PDF等格式,Corpus则是一组Document的集合,可以作为一个整体来处理。
Processing Resources(PRs):PR是GATE中进行语言处理的模块,不同的PR可以完成不同的具体任务,比如分词,模式匹配等。
VisualResources(VRs):VR是GUI中的可视化编辑部件。
1.2 ANNIE
GATE中的所有可重用资源的集合,被整体地的用在了基于规则方法的英文信息抽取系统ANNIE(A Nearly-New IE system)中。简单来说,ANNIE是一个可重用并且易扩展的组件集合,任务是完成信息抽取和标注。
在 GATE的GUI中ANNIE对应于Application,它把一组PR拼接起来组成一个PipeLine作用于一个Corpus或者Document 上以产生对文本的标注结果。具体来讲,就是一篇待处理文档,经过类似流水线一般的处理,严格按照规定顺序经过英文分词、英文词表查询、英文分句、英文词性 标注、英文抽取规则定义、英文命名实体识别和英文共指消解处理之后,实现整篇文档的信息抽取。
下面举个简单例子来说明ANNIE 的信息抽取过程。
ANNIE对于文本中的标注可以通过以下三步来完成:以标注"July 31, 2000"为例说明:
1)分词(tokeniser):被拆为"July""31"",""2000"
2)词典查找(gazetteer):在日期词典中查找,找到"July"是月份。
3)命名实体语法检查(named entity grammar):使用关于日期的语法规则(通过
JAPE 定义),"July 31, 2000"被识别为一个日期。
1.3 JAPE
JAPE(a Java Annotation Patterns Engine)的功能是建立规则库,用正则表达式匹配文本中的信息并作好标注,用于实现分词分句和较准确的命名实体识别。JAPE表现为一组规则语法文 件,这个语法文件可以经过GATE里提供的一个JAPE Compiler转换成一个标准的PR。
一个jape语法文件包括若干个Phase,每个Phase由若干个rule组成,每条rule由左侧和右侧两部分组成。
左 侧部分(LHS, Left Hand Side)是一个包含正则表达式操作符(*,?,+)的标注模式。每条规则的右侧部分(RHS, Right Hand Side)包含了标注集操作描述。与左侧部分匹配上的标注集将会按照右侧的操作执行。下面举一个例子来说明:
Rule: GazLocation
(
{Lookup.majorType == location}
)
:location -->
:location.Enamex = {kind="location", rule=GazLocation}
其 中GazLocation是这条规则的名字,-->左侧就是LHS,右侧就是RHS。LHS中括号表示一个匹配,后面的:location是该匹配 的标签,标签的作用是用于把左侧匹配上的字符串传递给右侧做标注(Annotation),location.Enamex中的Enamex就是一个 GATE中的Annotation对象,每个Annotation会对应一个Feature对象的Map集合,kind和rule就是Enamex的 Feature,表示标注的属性。
内置对象Lookup实际也是一个Annotation,它是由ANNIE中的Gazetteer PR标注上的,Gazetteer PR主要进行一个词典查找操作,Lookup标注就表示该单词在词典中查到,其属性(Feature)majorType是词典中定义的该单词属于的类 别。另外还有一个LHS用到的重要对象是Token,是由ANNIE中的English Tokeniser PR标注上的,表示的是每一个单词,Token.string表示的单词的文本信息。
RHS中还可以包含复杂的Java代码进行更复杂的标注操作,需要使用的API可以参考[1]中的Chapter 5,比如为了消歧需要删掉已经作好的标注然后改为正确的标注。JAPE的详细用法可以参考[2]中Chapter 7。
在GATE使用JAPE的方式是新建一个Jape Transducer的PR,然后把jape文件路径作为它的grammarURL参数传入。这个PR就能完成语法文件中定义的标注操作。
1.4 基于GATE的开发方式
使 用GATE开发信息抽取系统主要有两种方式:一种在GATE的GUI中添加合适的PR(可以是已有的Plugin也可以是符合CREOLE标准的自己编写 的PR)组成一个流水线形式的Application,调用它对一个Document的LR或者一个Corpus的LR处理。这种方式需要依赖GATE的 GUI,但在开发初期快速的构建原型系统和调试程序很方便。
另外的一种方式就把GATE作为Lib来构建脱离GATE GUI的独立程序,这时一般的操作就是按照GATE的API依次对GATE框架,ANNIE Application及其中的PR,Corpus等LR初始化(这些PR,LR实质都是JavaBean),然后运行并处理输出的结果。例子代码可以参 考[3]中的GoldFish Example。
2 GATE中的Machine Learning PR
2.1 ML API介绍
信息抽取的一种重要实现手段是采用基于学习系统的方式,这种方式需要使用基于统计的机器学习算法和大量标注好的训练数据。
在 GATE中机器学习主要由Machine Learning PR提供,这个PR实现了很多已有学习算法的封装,比如WEKA,MAXENT,SVM Light,它主要工作是把LR中标注属性等语言特征的信息转换为各种学习算法的输入格式,然后调用相应的算法执行产生输出,再把它们作一个后处理转换为 GATE中使用的标注格式,此外还可以对算法的效果进行评估。
在GATE的Machine Learning中,基于SVM的命名实体识别主要基于[4]的工作。SVM Light Wrapper需要提供SVM Light[5]的 可执行文件svm_learn和svm_classify,两者不在GATE的发布包里,可以从其项目主页单独下载。使用SVM Light Wrapper来标注文本需要二个阶段的处理,第一阶段是用标注好的训练数据由svm_learn生成SVM模型,第二阶段使用这个SVM模型来对预处理 的特征向量进行分类。这两个阶段也对应于ML PR的两种模式:Training和Application。
ML API可以把GATE里作好标记的Document对象作为输入转换成SVM learner需要的语言特征和特征向量,包含特征向量的文件会被单独保存起来,以便用在其他地方。要使用ML API,首先需要提供一组作好标记的文档,然后需要对这些文档进行预处理以获取用于学习的语言特征,GATE中各种基于JAPE的PR使得这些处理操作变 得更容易,最后还需要为ML API提供一个配置文件。
2.2 ML PR的配置文件
ML PR采用外部的xml配置文件来设置具体使用的算法和需要的数据集。这个配置文件格式如下:
<?xml version="1.0" encoding="windows-1252"?>
<ML-CONFIG>
<DATASET> … </DATASET>
<ENGINE>…</ENGINE>
<ML-CONFIG>
DATASET和ENGINE的格式如下:
<DATASET>
<INSTANCE-TYPE>Token</INSTANCE-TYPE>
<ATTRIBUTE>
<NAME>POS_category(0)</NAME>
<TYPE>Token</TYPE>
<FEATURE>category</FEATURE>
<POSITION>0</POSITION>
<VALUES>
<VALUE>NN</VALUE>
<VALUE>NNP</VALUE>
<VALUE>NNPS</VALUE>
…
</VALUES>
[<CLASS/>]
</ATTRIBUTE>
…
</DATASET>
<ENGINE>
<WRAPPER>gate.creole.ml.svmlight.SVMLightWrapper</WRAPPER>
<OPTIONS>
<CLASSIFIER-OPTIONS>-c 0.7 -t 0 -m 100 -tau 0.4</CLASSIFIER-OPTIONS>
</OPTIONS>
</ENGINE>
注 意GATE v3和v4中的配置文件定义变化比较大,尤其是<ENGINE>部分。<DATASET>中<INSTANCE- TYPE>是某一特定的Annotation,它的<ATTRIBUTE>既可以是该Annotation的一个Feature也可以 是另外一个Annotation,其<POSITION>子节点定义了该<ATTRIBUTE>到<INSTANCE- TYPE>的相对位置,也就是说这个节点定义可以反应出若干个Annotation的相对关系。<ATTRIBUTE>有三种类 型:Boolean,Nominal,Numeric。Nominal类型需要在<VALUE>节点列举出所有可能的值。
Reference:
[1] GATE programmers guide[EB/OL]. http://gate.ac.uk/sale/pg/pg.pdf, .
[2] Developing Language Processing Components with GATE Version 4 (a User Guide)[EB/OL]. http://gate.ac.uk/sale/tao/index.html, .
[3] GATE Example Code[EB/OL]. http://gate.ac.uk/gate-examples/doc/index.html, .
[4] Li Y, Bontcheva K, Cunningham H. SVM Based Learning System for Information Extraction[J]. Deterministic and Statistical Methods in Machine Learning, 2005, : 319~339.
[5] SVM Light[EB/OL]. http://svmlight.joachims.org, .
[6] 李飒. 基于GATE的中文信息抽取系统的开发和实现[硕士]. 北京: 中国科学院研究生院(文献情报中心), 2006.