开发 | Google发布自然语言处理解析器SLING,免除模块化分析级联效应产生的缺陷

AI科技评论消息,日前,Google发布自然语言框架语义解析器SLING,它能以语义框架图(semantic frame graph)的形式,将自然语言文本直接解析为文本语义表示。这一系统避免了级联效应,另外还减少了不必要的计算开销。

详细消息AI科技评论编译整理如下:

直到最近,大多数实际的自然语言理解(NLU)系统都采用的是从词性标签和依存句法分析(dependency parsing)到计算输入文本的语义表示的分析。虽然这使得不同分析阶段易于模块化,但前期的错误会在后期和最终表示上产生层叠效应,中间阶段的输出也可能会与这一阶段本身并不相关。

例如,一个典型的NLP系统可能在早期执行依存句法分析的任务,在结束阶段时执行共指解析(coreference resolution)任务,早期依存句法分析阶段出现的任何错误都会产生级联效应,影响共指解析的输出。

今天我们发布SLING实验系统,它能以语义框架图(semantic frame graph)的形式,将自然语言文本直接解析为文本语义表示。

输出框架图能直接捕获用户感兴趣的语义标注(semantic annotation),因为没有运行任何中间阶段,所以避免了上述那种管道系统的缺陷,另外还减少了不必要的计算开销。

SLING使用具有特殊用途的循环神经网络模型,通过框架图上的增量编辑操作(incremental editing operation)来计算输入文本的输出表示。框架图足够灵活,可以捕获大家感兴趣的许多语义任务(下面有更多介绍)。SLING中的分析器(parser)只使用输入词来进行训练,不需要额外再生成标注(例如依存句法分析)。

SLING通过提供高效的、可扩展的框架存储实现(frame store implementation)和JIT编译器来生成高效的代码来执行循环神经网络,从而在推理(inference)时能快速进行句法分析。

尽管SLING还处于实验阶段,但得益于高效的框架存储和神经网络编译器,它在台式机CPU上能实现超过2500符号/秒的解析速度。

SLING使用C++,目前可以在GitHub上下载。这个系统在技术报告中有详细描述。

框架语义句法分析(Frame Semantic Parsing)

框架语义表示文本的含义(例如一句话),是一套正规表述。每个正规表述都被称为一个框架,可以被看作是知识或语义的一个单元,还包含与与它相关的概念或其他框架的相互作用。

SLING将框架组织成属性槽(slot)列表,其中每个属性槽都有对应的名称(角色)和值(可能是literal或是到另一个框架的链接)。

下面是一个例句:

“很多人都宣称自己预测到了黑色星期一。”(Many people now claim to have predicted Black Monday)

下图是SLING识别提到的实体(例如人物、地点或事件)、度量(例如日期或距离)和其他概念(例如动词),并将它们放置在正确的语义角色中的说明。

上面的例子相当简单,框架图的功能强大到可以模拟各种复杂的语义标注任务。对于初学者来说,这种框架可以非常方便地将语言的内外部信息类型(例如知识库)结合起来。这可以用于处理复杂的语言理解问题,例如引用、隐喻、转喻等。这些任务的框架图只在框架类型、角色和链接约束条件上有所不同。

SLING

SLING通过优化语义框架来训练循环神经网络。网络隐藏层中学到的内部表示取代了在前面那种管道系统中的手工特性组合和中间表示。

解码器使用伴随反复出现的特征一起的表示,来计算用于框架图更新的一系列过渡,以获得输入语句的预期框架语义表示。在SLING中用TensorFlow和DRAGNN来训练模型。

下面的动图展示了使用过滤操作将框架和角色逐渐添加到框架图中的构建过程。

正如一开始讨论的那个简单例句,SLING使用ARG1角色将动词和事件框架连接起来,表示事件框架是被预测的概念。

这个过渡系统的一个关键层面是,有一个很小的固定大小的框架缓冲区,它代表了最近被唤起或修改的框架,用橙色方框标记。这个缓冲区会捕捉到我们倾向于记住的最近被唤起、提及或强化的知识的直觉。如果一个框架不再使用,那么当新的框架出现时,它最终会从这个缓冲区中被清除掉。我们发现这种简单的机制在捕捉大量框架间链接的片段时非常有效。

下一步

上面所描述的实验仅仅是对诸如知识提取、解析复杂引用和对话理解等语义句法分析研究任务的启动研究。

在Github上发布的SLING中有上述任务的预训练模型,还有一些示例和方法,大家可以在提供的综合数据或自己的数据上来训练解析器。希望SLING能对大家有所帮助有用,我们期待着在其他语义句法分析任务上应用和扩展SLING。

Github地址:https://github.com/google/sling

Via:Google Research Blog

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-11-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏月色的自留地

量子计算及量子计算的模拟

2015
来自专栏CDA数据分析师

干货丨 用 Python 进行股票分析

人们很容易被丰富的数据和各种免费开源工具所吸引。在研究了quandl financial library和prophet modeling library之后,...

2688
来自专栏PPV课数据科学社区

【学习】数据可视化基础学习摘要

数据可视化参考流程 科学可视化的早期可视化流水线,描述了从数据空间到可视空间的映射,包含串行处理数据的各个阶段: 原始数据->数据分析->预处理数据->过滤->...

3326
来自专栏大数据挖掘DT机器学习

用Python开始机器学习:推荐算法之推荐矩阵

每个人都会有这样的经历:当你在电商网站购物时,你会看到天猫给你弹出的“和你买了同样物品的人还买了XXX”的信息;当你在SNS社交网站闲逛时,也会看到弹出的“你可...

3148
来自专栏木东居士的专栏

聊一聊 PageRank 的原理和实现

2195
来自专栏PaddlePaddle

重大进展!Paddle Fluid 加速float16卷积神经网络预测!

PaddlePaddle Fluid可以支持在卷积神经网络上进行float16模式的低精度预测了!

812
来自专栏阮一峰的网络日志

Google推出面部搜索

Google最近推出了一项很有意思的功能----"搜索面孔"。 让我来示范一下。在Google Image中搜索"Shanghai",下图是正常返回的结果。 ?...

3135
来自专栏AI科技评论

苹果机器学习开发日记:如何设计能在Apple Watch上实时运行的中文手写识别系统

AI 科技评论按:随着苹果机器学习日记(Apple ML Journal)的开放,苹果分享出的设计自己产品、运用机器学习解决问题的故事也越来越多。近日苹果在上面...

35111
来自专栏ATYUN订阅号

在Python中使用NLTK建立一个简单的Chatbot

也许你听说过Duolingo(多邻国):一种流行的语言学习应用程序,它可以通过游戏来练习一种新的语言。由于其创新的外语教学风格,它非常受欢迎。它的思想很简单:每...

1015
来自专栏数据科学与人工智能

【数据挖掘】PageRank 为什么跻身数据挖掘十大经典算法?

数据人有话说 Google 的 PageRank 曾是主宰 Google 排名算法的一个主要因素,一度我们看一个网站的排名,往往会先去分析它的 PageRank...

2639

扫码关注云+社区