一、 摘要
Watson中使用了两种分析器——ESG(English Slot Grammar)和PAS(Predicate-ArgumentStructure)。PAS建构在ESG之上,以支持更高层的语法分析。这篇文章主要介绍这两种组件,以及如何在基于规则的关系抽取中使用它们。
二、 概述
ESG对于一个句子的分析结果——分析树——不仅展现了句子的逻辑结构(也就是深层结构,Deep Structure),也表现了表面的语法结构(表层结构,Surface Structure)。而且,在PAS之后要不要使用ESG是可以由一个选项控制的。
另外,对于PAS来说,一个句子的主动/被动结构是一样的,而对于ESG来说,这两者则有些许的不同。下面罗列一下系统功能与深层分析之间的关系:
关系抽取——利用分析结果识别实体之间的关系;
问题分析——利用结果来识别答案的类型与题目的要求是否一致;
关键词搜索——辨别关键词与问题所问的是否有强语法关系需要分析结果;
内容评分——利用问题和材料内容的分析结果确定是否匹配;
类型转换——利用PAS来比较答案类型与问题要求是否一致;
PRISMATIC——汇集了大型语料库的PAS结果。
三、 SG分析
SG,即槽语法(Slot Grammar),并不限定在英语中使用,也可以在其他语言中使用。在Watson中,SG分析的大概流程是:1)分词与断句、2)语素词汇分析、3)句法分析。其中步骤1)与很多其他系统并不相同,因为在Watson中不会进行词性标注。
(一) SG分析的性质
先给大家举个栗子,问题的原文是“Chandeliers look great but nowadays do not usually use these itemsfrom which their name is derived.”这句话的SG分析结果如下:
SG分析树是一个依赖树:每一个树节点有一个中心词,以及左右修饰词。每一个节点N的修饰词M都填了N的一个“槽”,正是槽展示了M在修饰N中的语法角色。比如说,上图中,“chandelier”就填充了节点“but”的“subj”(宾语)槽。
下面以derive(17,u,15,12)为例,介绍一下每个节点的五种元素:
1. 节点中心词——“derive”,词形包括a)句子中原型、b)词目形式、c)SG词义形式。一般来说,中心词都是单独一个单词,但也有可能是词组,甚至是标点符号、特殊符号,但这些都比较少见。
2. 节点ID——“17”,一般来说就是单词出现的排序,但是也有特殊情况,对于词组来说,词组的第一个单词的ID视为整个词组的ID。
3. 节点的论元格式——The (logical or deep)argument frame of the node,一般包括的是补语元素,以及对应的填充用的槽,例子中就是(subj:nil, obj: ph15, comp: ph12)。也就是,(宾语:无,主语:词组15,补语:词组12),u所代表的是“unfilled”或者“unknown”。而针对derive这一单词,derive(e,x,y,z)表示的意思是x在规则z下从y中导出的事件e。
4. 节点特征——“verb ven vpass”,节点的特征均列在节点表示的右侧,用来描述一些语义的或者语法的特征,其中第一项一定是中心词的词性。
5. 节点的修饰语结构——“ven vpass”,SG分析树应当能够清晰地展示节点之间的修饰关系。比如说节点“derive”中,与之最近的槽就是它在它的父母节点中扮演的修饰语角色,也就是节点17是节点16的谓词(pred)。
(二) SG辞典
每个语言版本的SG中都有一个主要的辞典——基辞典,然后再以屈折词态学和派生词态学(笔者语:斯巴达,这是什么鬼……)的方法去扩大辞典的容量。
1. SG辞典条目形式
下面是一个从ESG中截取的简单的词条:
talk< v(obj n (p about)) (comp (p to with))
< v obj1 (comp1 (p into))
< n nsubj (nobj n (p about))
(ncomp (p to with))
一般来说,每个辞典条目都有一个“检索词”,也就是例子中的“talk”,而且,检索词一般会以最经常被引用的形式给出来,一般形式或者过去分词或者其他。后面跟着就是一下七个条目(只有第一条是必选项):
1) 词性。共有9种可能的词性——noun, verb, adj, adv, qual (qualifier), det, prep, subconj (subordinatingconjunction), 以及 conj(coordinating conjunction)。(Paper的作者他喵的一定是在逗我,明明只列了9种,非说有15种。)
2) 补充(Complement)槽结构。一般来说,每个槽的后面会有多个(slot) 选项。拿栗子中的第一条来说,talk的一个槽可以由obj或comp填充,然后obj又有两个填充——n、p,其中有括号包裹说明可有可无,而没有括号则是必须填充的。
3) 特征。特征可以是语法特征,也可以是语义类型。WSG中现在建立了大约160个语义类型,比如说,最上面那颗分析树里的artf(artifact)和langunit(language unit)。这些特征是建立来给ESG语法规则测试用的。
4) 词义名称。(Word-sense name,翻译得可能不准确)一个词义的述谓结构(predication)可以很轻易地被翻译成为逻辑上的述谓结构。语法规则能够测试指定的单日的词义名称。(读糊涂了别怪我……毕竟我也没看懂这一段在说什么……)
5) 数值得分。这是跟分析评分系统使用的分数,后面还会再提。
6) 主题范围测试。这是看当前文本是不是在要求的主题范围内。
7) 广义支持动词结构。在“make a reference to”中,名词“reference”的支持动词仅仅是“make”。为了解决这种特殊情况,采用了广义支持动词结构来描述。
2. 改进
下面介绍5种对ESG辞典系统的改进,其中前4项可以用在任何ESG系统中,而第5想只针对《Jeopardy!》这个节目。
1) 匹配名词结构与动词结构
有一些情况下,在问题中出现的是动词词性,比如所celebrate,但是检索的时候是celebration。为了应对这种情况,采用了名词结构与动词结构的匹配。比如说,talk那个例子中,有一个ncomp,对应的就是动词性质的comp,但是是作为名词性质理解(前缀是个n)。
2) 使用WordNet扩充。
WordNet主要用来扩充名词列表,以及查找对应的语义类型。简要说一下语义类型标记的流程:ESG附有一个映射表,能够将WordNet的语义映射为ESG的一部分语义类型。对于WordNet中的一个单词S,查找它的同义词链,一直找到某个同义词集合别映射为ESG的一种类型T,然后就以T作为ESG中S的语义类型。
3) 动名词一致
基辞典的扩充会在开放类型的词带来四种新的关系:nform、vform、ernform、ervform。比如说,一个动词V会给出一个由它的名词词性的词合成的特征。拿动词“differ”举个栗子,它会有如下特征:
(nformdeferral deferment deference)
4) 词块辞典
对于由多个单词组成的实体,ESG会使用词块辞典“ch.lx”进行存储和检索。这个辞典的生成也很方便,抽取Wikipedia的词条题目即可。举个栗子,“She sang Sing a Song of Sixpence”的分析树如下图:
5) LAT奖励特征
对于那些与Watson的LAT有对应的名词(词组),会有一个latrwd R项,其中R是一个单精度浮点数。这个特征用于评价当前名词词组与LAT的匹配程度。
3. SG语法分析
最重要的就是语法分析这一步!最重要的就是语法分析这一步!最重要的就是语法分析这一步!
1) 转化词汇语速分析结果到“phrase”中
phrase是在语义分析中使用的基础的数据结构。这一步的结果会是一个one-word的结果。
2) 多词凝聚(Multiword Agglomeration)
把one-word的结果转化为多词(multiword)组成的词组。最通常的手段就是将上一步的结果用辞典中的多词词条进行表示。当然,诸如人名、时间、文字序号这些则需要特殊处理。
3) 从左下到右上的图分析
这种结果是二元的,“修饰语”词组既可以填充左边的临界“矩阵”词组,也可以填充右边的。要检查的slot是那些出现在ASL(Available Slots List)或与矩阵的POS相邻接的槽。
(第3步由于缺乏相关知识,笔者读起来也甚是费力,暂且留个坑,以后有机会再填)
四、 谓词论元结构(PAS)
PAS的形式是一张标记有向图,其生成的依据是SG分析树的输出,也就是我们第一张图的内容。其中,无关信息或者过于详细的信息都将在生成图的过程中被忽略。比如说下面的六个句子:
² I heard that Edison inventedthe photograph in 1877.
² I heard that Edison invented aphotograph in 1877.
² I heard Edison invented thephotograph in 1877.
² I heard that Edison wasinventing the photograph in 1877.
² I heard that the photograph wasinvented by Edison in 1877.
实际上,这五个句子的意思是有区别的,尤其是前两个,区别是很大的。但是,在PAS中,这五个句子的图结构是完全一样的。
PAS会忽略ESG的浅层结构,而仅仅编码ESG的深层结构,当然ESG中那些只能在浅层结构中编码的信息PAS依旧会编码。另外有一些节点将会被忽略,具体如下:
² 助动词
² 引入VPs用的封闭性节点
² 限定词
² 没有谓词的“be”
² 形容词前的“be”
于是乎,上面chandelier例子中的结果如下:
五、 基于模式匹配的关系抽取
关系抽取要进行比ESG、PAS更深入的语义分析,首先从下面这种形式的关系模式说起:
authorOf :: [Author][WriteVerb] [Work]
直观地观察可以发现,中间的那个[WriteVerb]可以与在ESG分析中的动词类记性匹配,进一步地可以给出一张列表,列出所有跟写作相关的词汇。那么,Author、Work一个是写作动词的主语、一个是宾语,这时PAS的分析结果就能派上用场了。使用如下符号:
[Node A]-> dependencyLabel -> [Node B]
指代PAS中的一条边。于是,我们就可以把第一条规则拓展为下面的形式:
authorOf :: [WriteVerb]-> subj -> [Author] & [WriteVerb] -> obj -> [Work]
但是呢,这条规则似乎还是有点问题,以上都是基于动词规则来分析的,如果原文中直接出现了“XXX是XXX的作者”,上面这条规则就没法处理了,为了解决这个问题,还可以通过同样方式的总结推出下面这条规则:
authorOf :: [Author]-> Label -> [“of”-arg] & [“of”-arg] ->objprep -> [Work]
如果是教材写到这里,应该就要开始写,通过上面的例子,总结一下共性balabala。但这是博文,然后,就没有然后了……