看文本知语义:谷歌推一步到位自然语言理解框架SLING | 论文+代码

2017 年 11 月 16 日 量子位 专注报道AI
夏乙 编译自 Google Research Blog
量子位 出品 | 公众号 QbitAI

大多数自然语言理解(NLU)系统分析语言的过程是一条由分析步骤组成的流水线:先标注词性,再进行句法依存分析,然后为输入文本计算出语义表示。

谷歌打破了这条流水线上的所有步骤,把它们捏到了一起,推出了一步到位的自然语言理解系统:SLING

SLING能够直接分析自然语言文本,根据它的语义表示生成语义框架图示。与原有的大多数系统相比,它避免了自然语言理解流水线的一个严重缺陷:前面步骤中的错误会影响后续步骤的分析。

实际上,流水线式的自然语言理解系统有利于对语言理解的不同阶段进行模块化,但是,早期步骤中的错误会在后边的步骤里发生连锁反应,对最终的表示产生影响。

比如说,一个典型的流程可能会在早期步骤中进行句法依存分析,后来又需要共指消解。这种情况下,如果依存分析出现错误,共指消解的结果也会受到影响。

而SLING这种直接从文本到语框架图示的方法中,输出的框架图示能直接捕捉到用户感兴趣的语义标注,同时避开了流水线式系统所带来的陷阱,还能防止出现不必要的计算。SLING使用一个专用的循环神经网络(RNN),通过框架图示上的增量编辑运算,来为输入文本计算输出表示。

而框架图示则足够灵活,能够捕捉到很多易引发兴趣的语义任务。

SLING分析器的训练只用到了输入词语,不需要依存分析等任何中间注释。

在推理阶段,SLING能够快速进行分析,它提供了一个高效、可扩展的图示存储实现,以及一个生成高效代码来执行RNN的JIT编译器。虽然SLING现在还在试验阶段,但它在普通台式机CPU上的分析速度已经超过了2500 token/秒。

框架语义分析

框架语义学将文本(例如一个句子)的意思表示为一组形式语句,每个形式语句成为一个“框架”,可以看作意义或者知识的一个单元,也包含和概念的交互,或者与之相关的其他框架。

SLING将所有语义框架组织成一些列插槽,每个插槽都有自己的名字(角色)和值,这个值可以是文字的,也可以是和另一个插槽之间的连接。

比如说这句话:

Many people now claim to have predicted Black Monday.

SLING会从中认出提及的实体(例如人物、地点、事件)、测量值(例如时间、距离)以及其他概念(例如动词),然后将它们放置在与输入中动词相关的正确语义角色上。

比如说句中的“predict”,就表示为PREDICT-01框架。PREDICT-01和施行predict这个动作的主体有交互(插槽),通过ARG0插槽表示,ARG0与表示“people”的PERSON框架相连接;PREDICT-01还和被预测的客体有交互,表示为ARG1插槽,和表示“Black Monday”的EVENT框架连接。

如下图所示:

框架语义分析的任务就是直接生成一幅图示,包含像上图这样通过插槽互相连接的框架。

上面只是一个简单的例子,框架图示很强大,适用于各种复杂的语义标注任务。对于初学者来说,框架是一种将语言内部和外部信息结合起来的方式。然后,这就可以用来处理复杂的语言理解问题,比如指代、隐喻、借代等。这些任务的语义框架图示只在用到的框架类型、角色、连接限制上有所不同。

SLING

SLING通过为易引发兴趣的语义框架进行优化,训练了一个RNN。网络隐藏层中已经学习到的表示取代了流水线系统中手工调整的特征组合和中间表示。

在内部,SLING使用编码器-解码器架构,其中使用诸如原始单词,其后缀,标点符号等简单词汇特征将每个输入词编码成向量。而解码器用这种表示和自己历史中的循环特征,来计算更新框架图示以获得输入句子的预期框架语义表示所需的转换序列。

在训练模型时,SLING使用了TensorFlow和DRAGNN。

下面的动画展示了如何用一次转换将框架和角色增量添加到框架图中。

正如前面用简单例句所说明的那样,SLING使用ARG1这一角色来连接VERB和EVENT框架,EVOKE转换从文本中接下来的几个token中唤起指定类型的框架。同样,CONNECT转换将两个现有框架和一个特定角色连接起来。当输入耗尽,最后一个转换(STOP)执行完成,框架图示被视为已完成,并返回给用户,用户可以查看图示,得到句子背后的语义。

这个转换系统中有一个关键方面,就是会出现一个固定大小的框架注意力缓冲区,代表最近被唤醒或修改过的框架,如上图的橙色框所示。这个缓冲区捕捉了我们倾向于想起最近唤醒、提及、增强过的知识。如果框架不再使用,随着新框架的进入,它最终会被刷新出缓冲区。这个简单的机制在捕捉大部分框架间连接上都非常有效。

相关资源

SLING是用C++写成的,开源代码地址:
https://github.com/google/sling

相关论文SLING: A framework for frame semantic parsing
地址:https://arxiv.org/abs/1710.07032

加入社群

量子位AI社群11群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot4入群;


此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。


进群请加小助手微信号qbitbot4,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态


登录查看更多
5

相关内容

自然语言处理(N LP , Natural Language Processing)是使用自然语言同计算机进行通讯的技术, 因为处理自然语言的关键是要让计算机“理解”自然语言,所以自然语言处理又叫做自然语言理解(NLU ,Natural Language Understanding), 也称为计算语言学(Computational Ling uistics)。一方面它是语言信息处理的一个分支 , 另一方面它是人工智能(AI , Artificial Intelligence)的核心课题之一 。
【ACL2020-复旦大学NLP】异构图神经网络的文档摘要提取
专知会员服务
34+阅读 · 2020年5月1日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
六篇 EMNLP 2019【图神经网络(GNN)+NLP】相关论文
专知会员服务
71+阅读 · 2019年11月3日
论文浅尝 | 基于知识库的自然语言理解 04#
开放知识图谱
14+阅读 · 2019年3月14日
各种NLP操作难实现?谷歌开源序列建模框架Lingvo
机器之心
4+阅读 · 2019年2月26日
论文浅尝 | 基于知识库的自然语言理解 02#
开放知识图谱
8+阅读 · 2019年2月24日
论文浅尝 | 基于知识库的自然语言理解 01#
开放知识图谱
15+阅读 · 2019年2月22日
业界 | 谷歌发布自然语言框架语义解析器SLING
机器之心
3+阅读 · 2017年11月16日
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
3+阅读 · 2018年11月13日
Arxiv
4+阅读 · 2018年9月6日
Arxiv
3+阅读 · 2018年3月2日
Arxiv
13+阅读 · 2017年12月5日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
相关论文
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
3+阅读 · 2018年11月13日
Arxiv
4+阅读 · 2018年9月6日
Arxiv
3+阅读 · 2018年3月2日
Arxiv
13+阅读 · 2017年12月5日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员