谷歌推出自然语言框架语义解析器SLING,但没说有没有用

1,129 阅读5分钟

论智

编译 | Bot

来源 | Google Research Blog

编者按:美国时间周三,谷歌官方博客介绍了科学家Michael Ringgaard和Rahul Gupta的一个实验性自然语言框架语义解析器,称能绕过分词、生成词向量等步骤,利用语义框架直接完成文本解析。这个新工具SLING基于框架语义学,提出了一些令人振奋的思路,但谷歌“说话只说一半”,没有论文介绍,没有案例支撑,更没有模型准确率佐证,因此我们无法得知它在框架搭建上的具体突破。

谷歌在博文中是这样介绍的:

现如今,大多数实用的自然语义理解(NLU)还在使用逐级解析的方法,从词性标注到生成词向量到生成依存句法分析再到文本分析,虽然这种模块化的方法有利于模型训练,但它也带来一个问题:前期犯的错误会产生级联效应,直接影响后期输出及最终模型的准确率。

为了解决这个问题,谷歌今天推荐的自然语言框架语义解析器SLING提出了一种思路——建立一个基于自然语言文本的语义框架图。输入语句后,该框架能直接捕获用户感兴趣的内容进行标注,原本分级的步骤在这里是平行的,谷歌认为这样能避免“流水线”式的缺陷,防止不需要的计算。据介绍,SLING基于一个专用的循环神经网络(RNN),它直接在框架图上对输入文本进行增量编译。框架图足够灵活,能高效提取开发者感兴趣的语义任务;SLING的解析器只针对单词,因此可以绕过一些中间环节,如生成依存句法分析。

SLING产生的代码在RNN上inference的速度很快,在桌面级CPU上的解析速度可超过2500令牌/秒。这主要依靠以下两个设计:

  • 一种高效的、可扩展的框架存储实现;

  • 一个JIT编译器。

它是用C++实现的,感兴趣的读者可以前往github下载。

框架语义分析

SLING采用的语言学理论是框架语义学,这是认知语言学的一个分支,利用语义框架、语义网络来理解词汇意义,而非语法句法分析。它把句子作为一个语义框架,语义框架中词元的语义类别不同,与之相关的语义角色的名称就不同。

如在以下示例中,例句可以被简单粗暴地划分为三种成分让SLING归类:实体(人物、地点、事件等)、度量(日期、距离等)和其他概念(动词类成分等)——

Many people now claim to have predicted Black Monday

people是人物,Black Monday是事件,predicted是连接人物和事件的行为(其他概念),可单独作为一个框架元素PREDICT-01。当与人物发生相互作用时,PREDICT-01通过ARG0插槽表示“谁做的预测”,当与事件发生相互作用时,则用ARG1插槽表示“预测了什么”。整个判断过程基于语义概念结构,不会细化到针对每一个动词。

虽然这个例子很简单,但依靠现有的框架语义学研究,这种方法在一些涉及参考、隐喻、转喻的复杂句上会有尤其出色的表现。值得一提的是,它适合用语料库做模型的开发者。

SLING

SLING训练RNN的方法是优化语义框架。

正如之前提到的,在SLING里,现行的逐级分析是平行的,所以它不需要手动分词、通过流水线提取特征,它把这些都步骤放进了隐藏层。在神经网络内部,SLING使用了一个编码器—解码器体系结构,它把输入的单词做原始处理,依据词典语义特征编码成一个向量,并附上后缀(ES),解码器也会对标点符号做处理。

这之后,SLING会把它们和各自的历史特征结合起来,逐个分析构成意义的ARG插槽,获得句子的预期语义框架。这一模型已在TensorFlow和DRAGNN中完成训练。

如视频所示,SLING逐个分析单词所能够成的语义框架元素,并根据相互关系生成句子结构,最后一个单词输入完毕后,整个模型会进行一次再调整,把最完整的语义框架反馈给开发者。值得注意的是,一些单词输入后,如果无法立即判断它在框架中的作用,SLING会把它先储存到缓冲区,再由之后的单词诱发判断。在不做句法依存生成的基础上,这种做法对于捕捉框架元素之间的关系异常有效。

论智点评

因为博客中只介绍了这一种思路,并没有展示具体的训练实例和模型准确率,所以论智君暂时无法判断SLING的可靠性。而谷歌这种遮遮掩掩、空口无凭的做法也着实让人气愤。就目前框架语义学的资料来看,SLING拥有一个成熟框架的可能性微乎其微,当然,如果它有,那首先谷歌翻译就远不止现在的水平了。

如果有读者对SLING感兴趣,或对框架语义学感兴趣,可以关注整个理论的核心基础——框架的定义和搭建。因为现有的语言学研究并不能就框架给出一个严密的结论,博客中的示例是一个再简单不过的单场景句子,框架语义学在隐喻、借喻等复杂句上的出色应用也是早就被证明了的,它的局限性在于对多逻辑结构、多场景从句的分析。

无论如何,正如谷歌在文中说的,SLING在语料库研究上会有不错表现,因为框架语义学就是基于语料库的,所以刚入门NLP的同学和喜欢自制chatbot的同学可以去下载试试,也许一会有不一样的体验。

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

原文地址:https://research.googleblog.com/2017/11/sling-natural-language-frame-semantic.html

本文系论智编译,转载请联系本公众号获得授权。