论文赏析[EMNLP18]针对自顶向下和中序移进归约成分句法分析的Dynamic Oracles(二)

简介: 本文是发表在EMNLP18上的一篇关于Dynamic Oracle的论文,主要介绍了针对自顶向下和中序两种移进归约成分句法分析模型的Dynamic Oracles。在PTB数据集上,取得了单模型最高的F1值92.0(截至论文发稿时是最高的,张岳TACL18的论文已经取得了92.4的最高F1值)。

Dynamic Oracles简介

最后再解释一下Dynamic Oracle是干嘛用的,传统的Static Oracle就是在转移的每一步按照标准转移序列中的action进行转移,但是这样会有一个问题,如果预测的时候某一步预测错了,遇到了一个训练阶段没有出现过的状态,那么该怎么进行转移呢?这时候就要用到Dynamic Oracle,用来针对不同的错误情况进行动态的指导,引导它转移到正确的状态中去。另外在训练时可以手动加入一些错误状态,来训练模型,不然的话遇到的错误状态还是太少了,不足以训练好模型。

Dynamic Oracles


Goldberg (2012)证明了Dynamic Oracle可以通过定义一个损失函数来直接实现,而这个损失函数可以用来衡量当前状态可以产生的最优句法树和标准句法树的距离。最小化这个距离就会使得错误状态也会转移到最终错误最少的状态。而这个损失函数就要和当前状态c挂钩了,这样才能达到和传统的Dynamic Oracle类似的效果。

损失函数

传统的损失函数定义为预测短语成分集合和标准短语成分集合不相交的元素数量,即:

image.png

根据上一篇博文

更快的基于非二叉化自底向上策略的转移系统成分句法分析godweiyang.com


的推导,该损失函数可以计算为

image.png

上面的损失函数是上一篇论文中介绍的bottom-up的转移系统的Dynamic Oracle,但是本文主要讨论top-down和in-order的转移系统,因为转移系统多了non-terminal,所以需要新加入两项损失,用来衡量当前状态可以产生的最优句法树与标准句法树之间的汉明损失。

这两项新加的损失分别是:

  • 当前栈中已经生成的non-terminal集合 image.png 中不包含在标准non-terminal集合 image.png 中的non-terminal数量,即 image.png
  • 当前栈中违反了标准树中non-terminal顺序的non-terminal数量。

所以最终的损失函数为:

image.png

前面三项都很容易求得,至于最后一项,可以通过计算栈里的gold non-terminal序列的最长上升子序列来得到,而序列中每个non-terminal的标号就是它在标准树转移序列的non-terminal顺序标号。

短语的可达性

在这里用短语集合 image.png 来表示一棵句法树,我们假设状态c的短语集合为 image.png ,那么我们说,标准句法树中的一个短语 image.png 当且仅当满足如下三个条件之一时,称它是“各自可达短语”:

对于top-down转移系统:

  • image.png (因为短语已经包含在了状态c已生成的短语集合里,那么它当然是可达的)。
  • image.png (因为短语还在buffer中,并且短语的non-terminal还没有入栈,所以可以通过入栈 image.png ,再不断SHIFT然后REDUCE得到)。
  • image.png(这种情况表明了短语的左端点恰好位于栈里某个短语的边界处,而右端点又还在buffer里,所以还可以通过不断SHUFT然后REDUCE得到短语。但是如果左端点不是栈里短语的边界,那说明产生了交叉,自然不会可达了。而如果右端点已经在栈里了,那之后也不会得到了,因为转移系统每次都是REDUCE栈顶的短语,不可能从栈里面开始REDUCE的,当然这些前提条件当然是non-terminal image.png 已经在栈里了)。

对于in-order转移系统:

  • image.png (因为短语已经包含在了状态c已生成的短语集合里,那么它当然是可达的)。
  • image.png (因为短语还在buffer中,所以可以通过入栈第一个左儿子,再入栈 image.png ,再不断SHIFT然后REDUCE得到)。
  • image.png (这种情况表明了第一个左儿子已经生成了一部分或者完全生成了,并且根结点non-terminal还没有入栈,所以依然可以生成)。
  • image.png (这种情况表明了第一个左儿子已经完全生成了,并且根结点non-terminal在栈里,所以依然可以生成)。

枚举标准树中的所有短语,根据以上规则可以得到可达短语集合 image.png ,然后从标准短语集合中排除掉这部分短语,剩下的就是不可达短语集合 image.png 。这部分短语就是不论采取何种动作序列,最后都不可能生成的短语集合。

关于这两个Dynamic Oracles的正确性,这里就不再证明了,证明过程和上一篇bottom-up的差不多。

实验结果


本文和基础的几个转移系统做了对比,代码也是在他们基础上进行修改的,结果如下:

image.png

可以发现,加了Dynamic Oracles之后,结果还是有略微提高的。


相关文章
|
编译器 C++
【C++】—— c++11新的类功能
【C++】—— c++11新的类功能
137 0
成功解决:443端口被vmware-host(8992)占用。请关掉占用443端口的程序或者尝试使用系统代理模式
该博客文章提供了解决443端口被vmware-host占用问题的方法,包括关闭占用端口的程序或尝试使用系统代理模式。
成功解决:443端口被vmware-host(8992)占用。请关掉占用443端口的程序或者尝试使用系统代理模式
|
移动开发 小程序 JavaScript
开源的微信小程序框架
【8月更文挑战第22天】开源的微信小程序框架
805 65
|
JavaScript 前端开发
JavaScript Boolean(布尔) 对象
Boolean(布尔)对象用于将非布尔值转换为布尔值(true 或者 false)。
182 7
|
存储 安全 关系型数据库
深入理解MySQL数据库存储引擎及数据授权
深入理解MySQL数据库存储引擎及数据授权
180 0
|
机器学习/深度学习 人工智能 数据处理
一文速通自监督学习(Self-supervised Learning):教机器自我探索的艺术
一文速通自监督学习(Self-supervised Learning):教机器自我探索的艺术
2587 0
|
Java 数据库 容器
简单详细的SpringBoot自动配置原理解析
上一篇文章我们介绍了SpringFactoriesLoader,之所以介绍SpringFactoriesLoader是因为我们这篇文章要介绍的SpringBoot的自动配置会用到SpringFactoriesLoader的知识。闲话少叙,让我们直入主题。
305 0
简单详细的SpringBoot自动配置原理解析
|
应用服务中间件 Linux
Linux - 部署 Tomcat 项目其浏览器不能打开的解决方案
Linux - 部署 Tomcat 项目其浏览器不能打开的解决方案
226 1
Linux - 部署 Tomcat 项目其浏览器不能打开的解决方案
|
测试技术 Android开发
Android应用中菜单(Menu)的位置显示问题
问题的产生: 在bugzilla中发现测试人员提出的一个bug,经过仔细阅读测试人员给出的信息,发现是关于应用中MENU按键弹出菜单和点击More弹出菜单的位置显示不一致的问题,具体问题如下:1、按下手机上的MENU按键弹出的菜单显示如下:2、点击右上角的More按钮显示的菜单如下:初步分析:从表面来看,同样的功能菜单,同样的选项,不同是触发方式和显示的位置。
1518 0