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

简介:
本文来自AI新媒体量子位(QbitAI)

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

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

456863c0b9c36d518d6d47327a04edea4c1ce3c8

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框架连接。

如下图所示:

00b74ac54ced2f3c913f30bfc3f8a8ab051bd3a0

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

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

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

699de19a89bf3aa4a4d39befd861a2cd7b3429ef

本文作者:夏乙 
原文发布时间:2017-11-16
相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理生成文本
自然语言处理生成文本
18 4
|
2月前
|
自然语言处理 PyTorch 算法框架/工具
自然语言生成任务中的5种采样方法介绍和Pytorch代码实现
在自然语言生成任务(NLG)中,采样方法是指从生成模型中获取文本输出的一种技术。本文将介绍常用的5中方法并用Pytorch进行实现。
117 0
|
3月前
|
机器学习/深度学习 自然语言处理 算法
在Python中进行自然语言处理(NLP)的文本预处理
在Python中进行自然语言处理(NLP)的文本预处理
56 1
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
将强化学习引入NLP:原理、技术和代码实现
将强化学习引入NLP:原理、技术和代码实现
221 0
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
NLP文本生成全解析:从传统方法到预训练完整介绍
NLP文本生成全解析:从传统方法到预训练完整介绍
126 0
|
6天前
|
机器学习/深度学习 自然语言处理 算法框架/工具
用于NLP的Python:使用Keras进行深度学习文本生成
用于NLP的Python:使用Keras进行深度学习文本生成
16 2
|
6天前
|
存储 机器学习/深度学习 自然语言处理
R语言自然语言处理(NLP):情感分析新闻文本数据
R语言自然语言处理(NLP):情感分析新闻文本数据
16 0
|
4月前
|
自然语言处理 Python
【Python自然语言处理】文本向量化的六种常见模型讲解(独热编码、词袋模型、词频-逆文档频率模型、N元模型、单词-向量模型、文档-向量模型)
【Python自然语言处理】文本向量化的六种常见模型讲解(独热编码、词袋模型、词频-逆文档频率模型、N元模型、单词-向量模型、文档-向量模型)
251 0
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
【NLP】Datawhale-AI夏令营Day1打卡:文本特征提取
【NLP】Datawhale-AI夏令营Day1打卡:文本特征提取
|
3月前
|
人工智能 自然语言处理 机器人
NLP自学习平台中的文本摘要功能并不仅限于电商版
【1月更文挑战第20天】【1月更文挑战第100篇】NLP自学习平台中的文本摘要功能并不仅限于电商版
116 2