摘要(Abstract)
通过开放领域信息抽取系统提取的关系元组对于自动问答,推理以及其他信息抽取(IE)任务是非常有用的。传统的方式是利用大规模的模式集来抽取关系元组;然而,这种方式在领域外文本以及长期依赖的关系上是脆弱的,并且缺乏对参数子结构(嵌套关系)的洞察力。我们使用一些用于规范句子结构的模式来替换这个大的模式集,并且将重点放到一个分类器,这个分类器用来学习从长句子中提取完备的子句。然后,我们在这些短的子句上运行自然逻辑推理以决定每一个候选的关系元组中的最大特定参数。我们展示了我们的方法的性能要优于最先进的开放IE系统的端到端 TAC-KBP 2013 的槽填充任务。
1 简介
开放式信息抽取(Open IE)已经被证明了在一系列的 NLP 任务中是相当有用的,例如:问答系统(Fader等,2014),关系抽取(Soderland等,2010),以及信息检索(Etzioni,2011)。通常,OpenIE 系统在句子的表面形式或者依赖树上搜索模式集合。尽管一个小型的模式集合就能覆盖大部分简单句子(比如,主语动词对象的结构-主谓宾结构),但是,相关的关系通常是跨子句分布或者会呈现出不规范的表现形式。
类似于Ollie (Mausam等,2012系统为了解决此类问题采用了 Bootstrapping 方法来创建广泛覆盖部分词汇化模式的大型语料库。尽管这可以有效地捕获其中的许多模式,但可能会导致对域外文本的不直观的行为。举个例子,虽然 Ollie 系统正确得抽取了 Obama is president ,但是把 is 换成 are 后的 cats are felines 并没有被提取出来。而且,当前已有的系统难以产生规范的论证形式,例如,在图1中,论证 Heinz Fischer of Austria 和 Heinz Fischer 相比,对于下游的应用没有什么用处。
在这篇文章中,大规模的模式集不在承受提取具有丰富的信息并且广泛覆盖的三元组的负担。取而代之的是,首先,我们使用语言驱动的方式来预处理句子,以产生连贯的子句,这些子句具有两个特定:(1)逻辑上继承了原来的句子,(2)很容易分割为 OpenIE 的三元组。我们的方法有两个阶段组成:首先,我们学习一个分类器,把句子分成简短的话语(第3节),然后使用自然逻辑最大限度地缩短这些话语,同时保持需要的上下文(4.1 节)。一个小型的包含14个手工抓取模式的集合将被用于将一段话分割成一个 OpenIE 元组。
我们将第一个阶段看做一个贪婪搜索问题:我们递归地遍历一个依赖关系分析树,在每一步预测一条边是否能够产生一条独立的子句。重要的是,在许多情况下,在依赖边缘产生的子句会生成不完整的话语(例如,图1中的 Born in Honolulu,Hawaii)。这些情况通常可归因于控制关系,在这种关系中,主句的主体或客体控制从句的主体。因此,在有些时候,我们允许生成的子句继承他们主句的主体或客体。这使我们能够使用简洁的分类器捕获各种远程依赖关系。
从这些独立的子句中,我们可以提取短句子,这些短句可以产生简短的对下游的应用有用的论证。解决此类问题的自然框架是自然逻辑——建立在人类语言句法基础上的证明系统(4.1节)。然后我们可以观察到 Heinz Fischer of Austria visits China 继承自 Heinz Fischer visits China。另一方面,我们认同在下列情况下,缩短结论是不正确,比如:No house cats have rabies 并不继承 cats have rabies,或者 house cats have rabies。
当需要仔细注意逻辑有效性时——比如,文本蕴涵——这种方法捕获更细微的现象。例如,从 all rabbits eat fresh vegetables 中产生 (rabbits;eat;vegetables),具有明显相似性的句子 all young rabbits drink milk 不会产生(rabbits;drink;milk)。
我们系统在真实世界评估——TAK KBP Slot Filling 挑战(Surdeanu,2013)——中展现了良好的性能。我们系统的性能优于OpenIE的正式提交以及使用 Ollie (一种最先进的OpenIE系统)替换了我们的萃取器的基准方法。
2 相关工作
在开放式信息提取方面有大量的工作要做。一项工作从 TextRunner(Yates等,2007)和 ReVerb(Fader等,2011)开始,这些工作都利用词上的计算效率高的浅层模式。随着快速依赖解析的引入,Ollie(Mausam等,2012)继续采用相同的思想,但是采用了学习到的依赖模式,改进了早期的WOE系统(Wu 和 Weld,2010)。Never Ending Language Learning工程(Carlson 等,2010)有着相同的目标,从互联网上的种子集的例子开始迭代学习更多的事实。Exemplar(Mesquita等,2013)将 OpenIE 框架调整为类似于语义角色标注的 n 元关系,但没有昂贵的机制。
OpenIE的三元组可以用于一系列应用中 —— 例如,从新的三元组中学习继承图(Berant等,2011),以及将OpenIE和结构化关系统一起来做矩阵分解。在这些案例中,OpenIE提供的简洁提取允许对继承使用有效的符号方法,例如 Markov 逻辑网络或者矩阵分解。
KBP挑战的之前工作可以分为好几种方法。最常用的方法是远监督(distantly supervised)关系抽取(Craven和Kumlien,1999;Wu和Weld,2007;Mintz等,2009;Sun等,2011),以及基于规则的系统(Soderland,1997;Grishman和Min,2010;Chen等,2010)。然而,这两种方法需要对任务进行小心的调整,而且需要在KBP关系模式上进行明确的训练。(Soderland等,2013)向KBP提交了一个系统,该系统使用了OpenIE关系以及易于构建的KBP关系映射;我们使用这个方法作为我们实证评估的基准。
先前的工作对RTE形式的文本蕴涵使用自然逻辑,作为一种形式主义非常适合神经网络中的形式语义,并且能够作为常识性推理的框架(Mac Cartney 和 Manning,2009;Watanabe等,2012;Bowman等,2014;Angeli 和 Manning,2013)。我们采用了 Icard 和 Moss(2014)的精确语义。我们采用的从较长话语中寻找短语的方法与面向信息抽取的文本蕴涵工作的思想类似(Romano 等,2006)。
3 Inter-Clause Open IE
在我们方法的第一个阶段,我们从一段长语句中生成自我完备的子句集合。我们目的是产生一组可以在句法和语义上独立存在的子句,并且是原句必不可少的组成部分(图2)。注意,这个任务并非特定用于抽取 OpenIE 三元组。传统的关系抽取器,连接系统,以及其他NLP应用都可以从这样一个系统中受益。
我们将这个任务定义成为一个搜索问题。对一个解析树中的指定结点,我们对每一个输出边进行分类,从主结点到具有[折叠]的Stanford依赖标签的依赖结点,进入要在该边上执行的动作。一旦我们选择了一个动作来接受该弧,我们就可以在依赖节点上进行递归。我们将该动作分为两个部分:(1)接收输出边的动作,以及(2)接收主结点的动作。比如,在图2的示例中,我们看看边:,正确的操作时通过步骤1生成新的以 born 为根的子句,然后通过步骤2将出生的主语解释为 took 。
我们继续来详细说明这个动作空间,然后解释我们的训练数据,最后是我们的分类器。
3.1 动作空间(Action Space)
我们在依赖边上可以执行3种行为:
-
Yield(生成) 在该依赖边上生成新的子句。这种操作的标准的案例是:从句子 Dentists suggest that you should brush your teeth 中生成 you should brush
your teeth 子句,产生边。 -
Recurse(递归) 在该依赖边上进行递归,但是不将该边生成为新子句。例如,在句子
faeries are dancing in the field where I lost my bike,我们必须通过中间成分 the field where I lost my bike ——本身是不相关的——进行递归来获取想要的子句:I lost my bike。 - Stop(停止) 当该边下的子树不是由父句引起的,则不进行递归。例如,对于大多数叶子结点(furry cats are cute 并不蕴涵着子句 furry),而且这是提高算法效率的重要举措。
利用这三种操作,在这棵树上的搜索路径会转化成为 Recurse 和 Yield 的操作序列,终止与 Stop 操作(或者叶子节点)。例如,一个搜索序列 将会生成一个以 为根的子句。序列 将会生成以 和 为根的子句。找到所有这些序列通常是树的大小的指数。实践中,在训练阶段,我们执行广度优先搜索(breadth first search)并且收集前10000个序列。在推理阶段,我们运行统一成本搜索直到我们的分类器的预测小于给定的阈值。
对于 Stop 操作,我们并不需要进一步指定要在父节点上进行的操作。然而,对于其他两种操作,这也是我们喜欢在更高级的子句中捕获一个控制器的原因。我们定义了三种这样的通用操作:
- Subject Controller(主语控制器) 如果我们正在考虑的边已经不再是主语边,我们可以复制父节点的主语并将其附加为子结点的主语。这就是在示例 Born in a small town, she took the midnight train. 中采取的操作。
- Object Controller(宾语控制器) 同上面的主语控制器操作类似,但作用对象是宾语。这是示例 I persuaded Fred to leave the room. 将要采取的操作。
- Parent Subject(父结点主语) 如果我们考虑的边仅仅只是某个结点的出边,我们将父节点作为子节点的(被动)主语。例如我们在 Obama, our 44th president 使用该操作会生成语义子句 Obama [is] our 44th president。
尽管额外的操作很容易想象,通过经验我们还是发现这覆盖了很广范围的应用场景。我们将注意力转移到训练数据以学习这些操作。
3.2 训练(Training)
我们收集了一个嘈杂的数据集来训练我们的子句生成模型。我们利用远监督假设进行关系抽取,这产生了一个嘈杂的语料库,语料库中的句子用关系提及(主语和宾语在句子中具有已知关系)进行标注。然后,我们将这个注释本身作为远程监督,以便采取正确的动作序列:任何恢复已知关系的序列都是正确的。
我们使用了 KBP 2010(Ji等,2010) 和 2013(Surdeanu,2013)的源文档的一个小型子集来作为我们远程监督的语料库。为了最大化训练句子中已知关系的密度,我们采用句子中每10个词至少有一个已知关系的句子,得到43155个句子。另外,我们加入了23725个手工标注的例子(Angeli等,2014)。
一旦我们给出一个已标注的句子集合,我们假设一个操作序列能够正确的抽取出正序列中的已知关系。正确的提取是我们从模型中产生的任何与已知关系具有相同参数的提取(参见第4节)。例如,如果我们已知 Obama was born in Hawaii 来自于句子 Born in Hawaii, Obama ...,并且某个操作序列生成了三元组(Obama,born in,Hawaii),这时候,我们可以将这个操作序列看做正序列。
反过来,我们认为任何导致一个子句无法产生任何关系的操作序列都是否定序列。我们来看看第三种情况,一个操作序列生成了关系,但并不是已标注的关系,这是由远监督关系抽取中的不完全否定问题引起的(Min等,2013):因为我们的知识库并不完备,所以我们不能确定一个被抽取的从前未知的关系是否正确。尽管许多未匹配的关系的确是不正确的,但数据集充分偏向于停止动作,偶尔的假的否定性会损害端到端的性能。因此,我们简单的丢弃这种序列。
给定一组嘈杂的正面和负面序列,我们为操作分类器构建训练数据。将正序列中除了最后一个操作的所有操作添加到具有 Recurse 标签的训练集;给最后一个操作打上 Split 的标签。只有负序列中的最后一个操作才会添加 Stop 标签。我们按照应用于父结点的操作来对数据集的特征空间进行分组。
3.3 推理(Inference)
我们在嘈杂的训练数据上,使用表1中的特征来训练一个多项逻辑回归分类器。最为突出的特征是边的标签,边的父结点的入边的标签,边的父结点和子结点的邻居的标签,边的终点的POS(词性)标签。我们给予数据集中 Recurse 类别的样本3倍权重,这是因为此类别的精度误差对准确度来说相对无害,但是召回错误直接对召回率有害。
推理现在简化成为一个搜索问题。从树的根结点开始,我们考虑每一个出边。对于每一个可能应用于父结点的操作(比如复制主语,复制根,无操作等),我们应用训练好的分类器来决定是否(1)将边拆分成为子句,并且递归;(2)不拆分,但递归;或者(3)不递归。在前两种情况下,我们递归边的子结点,一直持续到要么所有的边已经处理完,或者所有剩余的候选边都被标记为无需递归的。
我们将使用此分类器输出的分数来作为分配给我们生成的开放式IE提取的分数(第4节)。 子句的分数是由获取该子句所采取的行动的分数产生的。 提取的分数将是该分数乘以给定子句的提取分数。
4. Intra-Clause Open IE(子句内的OpenIE)
现在,我们转向生成最紧凑句子的任务,该句子保留了原话的核心语义,同时将句子解析成为便利的 OpenIE 主谓宾三元组。这通常是下游应用的关键组成部分,在这些任务中,抽取的结果不仅仅要是正确的,同时要求能够提供信息。但是,像Heinz Fischer of Austria这样的论证常常是正确的,下游的应用程序必须进一步处理以便恢复关于 Heinz Fischer 或者 Austria 的信息。而且,因为无法利用更大的句子上下文,所以必须这样做。
4.1 通过自然逻辑来验证删除
我们采用自然逻辑语义的子集来描述可以删除词法项的上下文。这种形式主义的自然逻辑捕获了可以直接应用于语言形式的通用逻辑推理,而不是解析为专门的逻辑语法。它为句子的词汇变异提供了证据理论,可以保留或否定前提的真实性。
例如,在句子 all rabbits eat vegetables then all cute rabbits eat vegetables 中,我们被允许将词汇项 rabbits 变异为 cute rabbit。这是通过观察 rabbit 是在所有操作员的第一个参数的范围内来完成的。因为 all 为其第一个参数 rabbit 引发一个向下的极性环境,因此我们被允许使用一个更具体的词项——在本例中是 cute rabbit ——来替换 rabbit。相比之下,将 all 替换为 some 可以为其第一个参数引入向上极性的环境,因此我们可以推导出从 cute rabbit 到 rabbit 的推断:some cute rabbits are small,因此 some rabbits are small。关于自然逻辑的更全面的介绍,可以阅读 van Benthem (2008年)。
我们标记句子中所有操作者的范围(all, no, many等),并且,根据范围来决定每一个词法项是否能够被更一般(具有向上极性)、更特殊(具有向下极性)、或两种都不是的东西所取代。在没有操作员的情况下,所有项都具有向上极性。
然后将每个依赖边分类为删除该边的依赖性是否使得该节点处的控制成分更一般,更具体(罕见情况),或者两者都不是。例如,移除 amod 边 会生成更加一般的词项rabbit。然而,移除 nsubj 边 将生成无必要和无意义的短语 runs。最后一种罕见的情况是删除依赖后会导致结果项更具体的边——比如 quantmod 边 比 200 更一般(也就是说大约200比200更一般的说法)。
对于大多数的依赖关系,可以对这种语义进行高精度的硬编码。然而,至少有两种情况需要更多的关注。第一种情况涉及到非次级形容词:例如,a fake gun is not a gun。 对于这种情况,我们利用 Nayak 等人在2014年收集的非次级形容词列表,并将禁止删除作为硬约束。
第二种情况涉及到介词附着和直接宾语边。例如,虽然 Alice went to the playground Bob 蕴涵着 Alice went to the playground,但是这并不意味着可以推断 Alice is friends Bob 中蕴涵着 Alice is friends。类似的 Alice played baseball on Sunday 蕴涵着 Alice played on Sunday;但是 Obama signed the bill on Sunday 并不蕴涵着无意义的短语 *Obama signed on Sunday。
我们从 Goldberg 和 Orwant(2013)的 n 元语法语料库中凭借经验来学习这种附加的类同关系。这给出了宾语和介词边出现在管理动词和相关的相邻边的上下文中的频率的计数。我们猜测那些经常共同出现的边可能对句子的意义至关重要。为此,我们计算了看到给定类型的边的概率,以我们统计的最具体的上下文为条件。 这些上下文以及我们退回到更一般上下文的顺序如图3所示。
为了从多元语法中收集的类同概率 p 中计算删除边的分数 s,我们简单地给类同率设置上限并从1减去:
K 是一个超参数,表示出现在某个上下文中的边被认为不应该完全移除的最小的时间部分。在我们的实验中,我们设置。
提取的得分是每个删除的得分乘以第3节中的子句拆分步骤的得分。
4.2 原子模式
一旦生成一组短句子,将他们分割成为传统的 OpenIE 三元组就会变的简单。我们引入6种简单的依赖模式,表2列出了这6种模式,这6种模式能够覆盖绝大多数我们感兴趣的原子关系。
当信息能够用于消除复合名词的子结构的歧义时(比如命名实体分割),我们使用5种依赖和3种 TokensRegex(词正则表达式,Chang 和 Manning,2014)浅层形式模式来提取附加的关系。表3给出了这些模式;我们称之为 nominal relations(名义关系)。注意,系统不需要任何命名实体信息的约束手段。在其他应用中——例如,在视觉应用中——琐碎的名义关系可能非常有用。
5 将OpenIE映射到已知的关系模式
OpenIE 系统最常见的一个应用场景就是映射已知的关系模式。这可以通过最少的手工标注来完成,或者通过可用的训练数据自动化完成。我们在 TAC-KBP 评估中同时使用了两种方法。一个关系映射的集合由一个标注员花费大约一天的时间就可以构造完成,并使用本节中描述的过程学习了关系映射。
我们通过在一个大型的远程标记的语料库中搜索共现关系来映射 OpenIE 关系到 KBP 模式,同时标记具有较高的以类型签名匹配为条件的 PMI 值(Beatrice,1994;Evert,2005)的 OpenIE 和 KBP 关系对。为了计算PMI,我们收集 OpenIE 和 KBP 关系共现的概率,OpenIE 关系发生的概率以及 KBP 关系出现的概率。每一个概率都已关系的类型签名为条件。例如,KBP 关系和 OpenIE 关系的联合概率给出的的类型签名如下
为了方便期间,省略类型签名上的条件,并且定义近似的和,然后就能够计算两个关系之间的 PMI 值:
请注意,除了作为与 PMI 相关的度量之外,这还捕获了类似于通过协议进行对齐(Liang等,2006)的概念;公式可以等价地写作。这在功能上与 JC WordNet 距离度量一样(Jiang and Conrath,1997)。
表4给出了一些样本类型检查关系映射。除了直观的映射(比如 found in Org:Founded),我们还可以注意到一些罕见,但是高精度的配对(比如invest fund ofOrg: Founded_By)。我们还可以看到远监督中的噪音偶尔会渗透到映射中,例如,elect president of Per:LOC Of Death——总统很可能会在自己的国家死去。
6 评估(Evaluation)
我们在真实世界的端到端关系抽取任务——TAC KBP Slot Filling 挑战——的背景下来评估我们的方法。在 Slot Filling 任务中,我们给出了一个大型的未标注文本语料库,固定的关系模式(见第5节),以及一系列查询实体。该任务的目标是在语料库中找到所有关系三元组,这些三元组由查询实体做为主语,并且关系是已定义关系的一种。这可以直观地看作是从大型非结构化文本语料库中抽取信息来填充维基百科的信息框。
我们同华盛顿大学向 TAK-KBP 2013(Soderland 等,2013)提交的方法进行比较。他们的系统使用OpenIE v4.0(Ollie的继任者)在 KBP 语料库上运行,然后生成从提取的关系到固定模式的映射。这与我们的系统不同,OpenIE v4.0 引入了一个语义角色组件来提取结构化的SRL帧,这与传统的OpenIE系统是一样的。此外,UW(华盛顿大学)提交的方法允许从 OpenIE 三元组的参数的子字符串中抽取关系和实体。例如,从三元组(Smith; was appointed; acting director of Acme Corporation)中,他们抽取了 Smith is employed by Acme Corporation。我们不允许这种抽取,我们不允许这样的提取,将正确的精确提取的负担传递给OpenIE系统本身(见第4节)。
对于实体链接,UW的方法使用 Tom Lin 的 的实体链接器(Lin等,2012);为了提高效率,我们提交的方法使用没有关系推理组件的 Illinois Wikifier(Ratinov等,2011)。对于共指消解,UW 使用了 Stanford(斯坦福大学)的共指消解系统(Lee等,2011);我们引入了(Pink等,2014)描述的简单共指消解系统的一种变种。
我们在表5中报告了我们的结果。UW Official 是指在2013年的挑战赛中的官方提交;通过使用可比较的方法进行评估,我们展示了3.1的F1值的改进(达到了22.7)。KBP 系统中的一种常见技术,但2013年挑战赛中 UW 的官方提交并未采用的是基于实体链接和共指消解的备用名添加技术。 此外,网站通常使用启发式名称匹配来提取,因为它们难以使用传统的关系提取技术来捕获。 如果我们使用这两者,我们的端到端精度将达到 28.2 的 F1 值。
我们尝试从端到端的 KBP 系统中的其他组件的影响中消除分数的差异。我们在与我们相同的框架中运行了 Ollie OpenIE系统(Mausam等,2012),并在表5中报告了准确度。请注意,当 Ollie 提取的参数包含命名实体时,我们将参数视为命名实体。该系统的低性能部分归因于其无法提取名义关系。为了对此进行标准化,我们报告结果,当 Ollie 提取补充了我们的系统产生的名义关系时(表5中的 Ollie + Nominal Rels)。相反,我们可以从我们的系统中删除名义关系提取;在这两种情况下,我们在任务上的性能都超过了 Ollie。
6.1 讨论(Discussion)
我们在图4中绘制了提取结果的精确度和召回率的曲线,以便非正式地了解我们的置信度估值的校准。 由于置信度仅适用于标准提取,因此我们绘制的曲线中不包括任何名义关系。我们的系统中 KBP 提取的置信度计算为支持它的 OpenIE 提取的置信度之和。所以,例如,如果我们找到(Obama;be bear in;Hawaii)n 次,每一次的置信度为,那么 KBP 提取的置信度将是。 因此,重要的是要注意图4中的曲线必然会混淆各个提取的置信度和提取的频率。
考虑到这一点,曲线提供了一些有趣的见解。虽然我们的系统在置信度最高的提取上具有非常高的精度,但它在曲线的早期具有很大的精度下降。这表明该模型正在提取不良关系的多个实例。子句拆分器中的系统错误可能是导致这些错误的原因。虽然将句子分成子句的方法能够更好地泛化到域外文本,但是在句子分割器中产生的错误比 Ollie 的细粒度模式更频繁地表现在一系列句子中是合理的。
然而,在PR曲线的右半部分,我们的系统在两个方面比 Ollie 达成了更高的精度,并且扩展到了更高的召回率(recall)。此外,曲线在尾部附近相对平滑,这表明我们确实正在学习对文本中只有一个支持实例的提取的置信度的合理估计 - 根据经验,我们提取的占46%。
总共,我们提取了42 662 862 OpenIE 三元组,它们链接到语料库中的一对实体(即,是候选 KBP 提取),覆盖了1 180 770个关系类型。这些关系类型中的202 797出现在10个以上的提取实例中;超过100个实例中有28 782个,超过1000个实例中有4079个。 308 293种关系类型只出现一次。请注意,当保证一般提取和特定提取时,我们的系统会过度生成提取;因此,这些数字高估了语义上有意义的事实。为了比较,Ollie提取了12 274 319个三元组,涵盖了2 873 239个关系类型。其中1 983 300只出现一次; 69 010出现在10多个实例中,7951出现在100多个实例中,870出现在超过1000个实例中。
7 Conclusion(总结)
我们提出了一个系统,用于通过将长句子分成短的,连贯的子句来提取开放域关系三元组,然后找到最大限度的简单关系三元组,这些三元组在给定每个条款的情况下是合理的。 这允许系统更好地了解每次提取的上下文,并为下游应用程序提供信息三元组。 我们表明我们的方法在一个这样的下游应用程序上表现良好:KBP Slot Filling 任务。