谷歌发布自然语言框架语义解析器SLING

今日,谷歌发布实验性系统 SLING,该系统是一个自然语言框架语义解析器,用于自然语言理解任务中,可将自然语言文本直接解析成语义表示——语义框架图。本文简要介绍了该系统。


项目链接:https://github.com/google/sling


直到最近,最实用的自然语言理解(NLU)系统仍然使用的是分析阶段的流程,从词性标注和依存句法分析(dependency parsing)到计算输入文本的语义表示。尽管该流程促进不同分析阶段的模块化,但早期阶段中的错误可能影响到后面的阶段以及最终表示,中间阶段的输出可能与该阶段的相关性不强。例如,典型的流程可能在早期阶段执行依存句法分析任务,最后执行共指消解。即使你只对共指消解的输出感兴趣,它也可能受到依存句法分析阶段错误的梯级效应的影响。


今天,我们宣布一个实验性系统 SLING,该系统可将自然语言文本直接解析成语义表示——语义框架图(semantic frame graph)。输出框架图直接捕捉用户感兴趣的语义标注,不运行任何中间阶段以避免流程系统的缺陷,还能够阻止不必要的计算。SLING 使用一种专用的循环神经网络模型,通过对框架图的增量编辑操作对输入文本的输出表示进行计算。反过来,框架图非常灵活,可以捕捉很多用户感兴趣的语义任务(下面会具体介绍)。SLING 的解析器仅使用输入词进行训练,绕过生成任何中间标注的过程(如依存句法分析)。


SLING 在推断阶段可以提供快速解析,通过(a)提供一个高效、可扩展的框架存储实现和(b)JIT 编译器,生成执行该循环神经网络的高效代码。尽管 SLING 仍处于实验阶段,但依靠高效的框架存储能力和神经网络编译器,它已经在一块台式机 CPU 上取得了>2,500 tokens/second 的解析速度。SLING 用 C++实现,可在 GitHub 上下载。更多细节参见:https://arxiv.org/pdf/1710.07032.pdf


框架语义分析


框架语义学将文本(如句子)的意义表示为一组形式陈述(formal statement)。每个形式陈述叫作框架(frame),可以看作是一个知识或意义单元,包含与其他概念或相关框架的相互作用。SLING 将每个框架组织为一串 slot,每个 slot 都有自己的名称(角色)和值(可以是字面意义或与另一个框架的联系)。示例如下:


「Many people now claim to have predicted Black Monday.」


下图介绍了 SLING 如何识别实体(如人、地名或事件)、度量(如日期或距离)和其他概念(如动词),然后将它们按正确的语义角色进行排序。单词 predicted 表示动词「predict」最主要的意思,因此被标注为 PREDICT-01 框架。另外,该框架还与作出预测的人(通过 ARG0 slot 进行标注,指向代表 people 的 PERSON 框架)和被预测的事物(通过 ARG1 slot 进行标注,指向代表 Black Monday 的 EVENT 框架)有相互作用(slot)。框架语义分析即通过 slot 生成这些连接框架的有向图。



虽然上面的例子有点太简单了,但框架图确实是能对多种复杂语义标注任务进行建模的强大工具。对于初学者来说,框架提供了一种集合语言内部和外部信息类型(如知识库)的方便方式,可用于解决复杂的语言理解问题,如引用(reference)、隐喻、借代、观点(perspective)。这些任务的框架图只存在框架类型、角色和连接约束(linking constraint)上的区别。


SLING


SLING 通过优化语义框架来训练循环神经网络。网络中隐藏层的内部学得表征代替了手工制作的特征组合和流程系统中的中间表征。SLING 使用编码器解码器架构,使用简单的词汇特征(如原词、后缀、标点等)将每一个输入单词编码为一个向量。解码器使用该表征和自身历史中的循环特征计算出转换后的序列,以更新框架图获得输入语句的预期框架语义表示。SLING 使用 TensorFlow 和 DRAGNN 来训练模型。


下方的动图展示了如何使用独立的转换将框架和角色递增地添加到构建中的框架图。正如我们之前使用简单的例句所讨论的,SLING 使用角色 ARG1 连接 VERB 和 EVENT,表明 EVENT 框架是被预测的概念。EVOKE 转换从文本接下来的几个记号中激活了一个特定类型的框架(例如,从 Black Monday 激活的 EVENT 框架)。类似地,CONNECT 转换使用一个特定的角色连接两个已有的框架。当输入完成,且最后的转换(用 STOP 表示)执行完,则框架图已完成,并返回给用户,用户可以查看该图获得语句背后的语义内容。




该转换系统的一个关键层面是使用了一种框架的大小固定的小型注意力缓存(attention buffer)来表示大多数最新激活或修改的框架,如上图橙色框所示。该缓存能够捕捉到我们倾向于记住最近激活、提到或被增强的知识的直觉。如果一个框架不再被使用,就会被移出缓存,而新的框架会被添加。我们发现这种简单的机制在捕捉大部分框架间连接上出人意料地有效。


下一步


以上展示的实验只是研究语义分析任务(如知识提取、解析复杂引用和对话理解)的开端。我们发布在 GitHub 上的 SLING 提供了可用于以上示例任务的预训练模型,以及教你在提供的合成数据或你自己的数据上训练自己的语义分析程序的示例和使用方法。我们希望 SLING 能为社区做出贡献,期待将 SLING 应用和扩展到其它语义分析任务的想法。


SyntaxNet 是一个框架,即学术圈所指的SyntacticParser,他是许多NLU系统中的关键组件。在这个系统中输入一个句子,他会自动给句子中的每一个单词 打上POS(part-of-Speech)标签,用来描述这些词的句法功能,并在依存句法树中呈现。这些句法关系直接涉及句子的潜在含义。举一个很简单的例子,看下面这个句子“Alice saw Bob”的依存句法树:在这个结构中,Alice和Bob被编码为名词,Saw是动词。只要的动词saw 是句子的根,Alice是saw的主语,Bob是直接宾语(dobj)。和期待的一样,Paesey  McParseface能正确地分析这一句子,也能理解下面这个更加复杂的例子:句子:Alice, who had been reading about SynataxNet, saw Bob in the hallwayyesterday在 这个句子的编码中,Alice 和 Bob的分别是saw的主语和宾语,Alice由一个带动词“reading”的关系从句来修饰,而saw则由时态“yesterday”来修饰。依存句 法树中的语法关系让我们可以轻易地找到不同问题的答案,比如,Alice看见了谁?谁看到了Bob?Alice正在读的是什么?或者Alice是在什么时 候看到Bob的。为什么让计算机正确处理句法分析如此困难? 句 法分析如此困难的一个主要问题是,人类语言具有显著的歧义性。包含 20 到 30 个单词的中等长度的句子会具有数百、数千甚至数万种可能的句法结构,这样的情况并不少见。一个自然语言句法分析器必须能够搜索所有这些结构选择,并找到给 定语境下最合理的那个结构。作为一个非常简单的例子,“Alice drove down the streetin her car”这个句子就具有至少两种可能的依存分析:第 一种分析是对应这句话的(正确)解释,按照这种解释,爱丽丝在汽车里进行驾驶,而汽车位于街道上;第二种分析对应于一种对这句话的(荒诞但仍然可能的)解 释,按照这种解释,爱丽丝在街道上驾驶,而街道位于汽车之内。之所以会产生这种歧义,是因为“in”这个介词既可以用来修饰“drove(驾驶)”也可以 用来修饰“street(街道)”。上面这个例子是所谓的“介词短语附着歧义”的一个实例。 人 类在处理歧义方面有超强的能力,以至于人们甚至注意不到句子有歧义。而这里的挑战是,如何能让计算机做到同样好。长句中的多重歧义会共同造成句子的可能结 构数量的组合爆炸。通常,这些结构中的绝大多数都极其不合理,但它们仍然是可能的,句法分析器必须以某种方式来丢弃它们。 SyntaxNet 将神经网络运用于歧义问题。一个输入句子被从左到右地处理。当句子中的每个词被处理时,词与词之间的依存关系也会被逐步地添加进来。由于歧义的存在,在处 理过程的每个时间点上都存在多种可能的决策,而神经网络会基于这些决策的合理性向这些彼此竞争的决策分配分数。出于这一原因,在该模型中使用 Beam Search (集束搜索)就变得十分重要。不是直接取每个时间点上的最优决定,而是在每一步都保留多个部分性假设。只有当存在多个得分更高的假设的时候,一个假设才会 被抛弃。下图将展示的,是“I booked a ticket to Google”这句话经过从左到右的决策过程而产生的简单句法分析。而 且,正如我们在论文中所描述的,十分重要的一点是,要把学习和搜索紧密整合起来才能取得最高的预测准确度。Parsey McParseface 和其他 SyntaxNet 模型是我们用谷歌的 TensorFlow 框架训练过的最复杂的网络结构。通过利用谷歌支持的 Universal Treebanks 项目中的数据,你也可以在自己的机器上训练句法分析模型。 标签:SyntaxNet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值