好像已经很久没有看论文了呢,开学了一堆事情,以后还是要抽空阅读论文,保持一定的阅读量,并且不能光看最新的论文,还得去前人传统的方法中去寻找有没有能应用于深度学习的东西,说不定就发ACL了呢(手动滑稽)。

论文地址:​Linear-Time Constituency Parsing with RNNs and Dynamic Programming​

代码地址:​github​

介绍

这次要介绍的论文是huang liang发表在ACL18的一篇短文,提出了一个基于转移系统的线性时间句法分析器。本文的主要贡献点主要有如下几点:

  • 传统的基于转移的句法分析模型都是贪心解码,不能考虑到所有的状态空间,所以本文的模型采用beam search将状态空间提升到了指数级别。
  • 首次采用cube pruning将分析的时间复杂度降低到了 。
  • 采用max-violation损失函数代替原来的求和的损失函数,并且对cross-span的span进行了惩罚。
  • 在单模型上取得了最高的F1值。
  • 采用图结构的栈(GSS)代替了原来的stack,这样不需要时刻保存历史信息。

模型基础

基于span的转移系统

这个我已经在之前的文章


​成分句法分析综述​

[ACL18]基于RNN和动态规划的线性时间成分句法分析_指针数组

GSS的具体结构如下图所示:


[ACL18]基于RNN和动态规划的线性时间成分句法分析_指针数组_02

[ACL18]基于RNN和动态规划的线性时间成分句法分析_句法分析_03

[ACL18]基于RNN和动态规划的线性时间成分句法分析_损失函数_04

max violation updates

这是huang liang在2012提出来的,其实就是计算出每个时刻预测得分和标准得分的差距,然后取差距最大的那个时刻的得分差距作为最终的损失函数,之前都是用每个时刻得分差距之和来作为损失函数的。

实验

下图是不同的beam大小对不同长度句子分析速度的影响:


[ACL18]基于RNN和动态规划的线性时间成分句法分析_句法分析_05

最终综合考虑速度和准确率,选择beam大小为20。

最后是beam-span模型在PTB测试集上的准确率,在单模型上取得了最好的结果:


[ACL18]基于RNN和动态规划的线性时间成分句法分析_句法分析_06

总结

这篇论文是短论文,所以相比之下创新没有那么的大吧,主要还是速度上比chart-based有了提升,准确率上比普通的转移系统有了提升,另外还提出了几点小的改进吧,例如cross-span问题、max-violation损失之类的,转移系统也改成了适合用来进行beam search的GSS,为了进一步加快速度,还用了cube剪枝。

这么多改进其实个人感觉也是影响不大的,不是很通用,cross-span和max-violation损失可以考虑拿来用一下。下一步的工作还是考虑如何增加特征表示、加入头结点之类的吧。