论文笔记:Straight to the Tree: Constituency Parsing with Neural Syntactic Distance

目录

  • 论文笔记:Straight to the Tree: Constituency Parsing with Neural Syntactic Distance
  • 导语
  • 摘要
  • 1 简介
  • 2 句法解析树的句法距离
  • 3 学习句法距离
    • 3.1 模型架构
    • 3.2 目标函数
  • 4 实验
    • 4.1 Penn Treebank
    • 4.2 Chinese Treebank
    • 4.3 Ablation Study
    • 4.4 解析速度
  • 5 相关工作
  • 6 总结

导语

本篇论文主要借助上一篇工作(上一篇博客参考:论文笔记:Neural Language Modeling by Jointly Learning Syntax and Lexicon)中所提出的句法距离做有监督的成分句法分析,相比于其他方法,可并行性是这篇论文的最大亮点之一。所述模型在实验数据上取得了不错的结果,且花费时间大大减少。

  • 论文地址:https://aclanthology.org/P18-1108.pdf
  • 会议:ACL 2018

摘要

在这项工作中,我们提出了一个成分句法解析方案。该模型预测了输入句子中每个分割位置的实值标量组成的一个向量,即句法距离。句法距离可以指定选择分割点的顺序,以自顶向下的方式递归地划分输入。与传统的shift-reduce解析方法相比,我们的方法避免了潜在的复合错误问题,同时具有更快和更容易的并行化。在PTB数据集中,我们的模型在同单模型、判别式解析器模型比较时取得了很好的表现,并且在CTB数据集中表现优于以前的模型。

1 简介

设计快速准确的句法分析算法是自然语言处理中一个重要而又长期存在的问题。句法分析已经在几个相关任务中融入了语言先验,如关系提取、同义句检测自然语言推理和机器翻译等。基于神经网络的方法依赖于输入的稠密表示并已经在成分句法分析上取得了不错的结果。一般来说,这些方法要么通过在一个transition-based parser中控制序列的转换(transition),或者使用一种chart-based的方法,通过估计非线性可能性并通过动态规划执行精确的结构推理。

transition-based模型将结构化预测问题分解为一系列局部决策。这使得快速贪婪解码成为可能,但也会导致复合错误,因为模型在训练期间不会暴露自己的错误。解决这一问题的方法通常是使用通过beam search的结构化训练,使训练过程复杂化和动态预言。另一方面,chart-based模型在训练过程中可以包含结构化损失函数,并受益于CYK算法的精确推断,但在解码过程中遭受较高的计算成本。(关于以上提到的这几种方法,不太熟悉的读者可以参考这一篇博客:成分句法分析 & 依存句法分析 Parsing 知识图谱)

本文基于最近(Shen et al., 2017)(即我的上一篇博客:论文笔记:Neural Language Modeling by Jointly Learning Syntax and Lexicon)为语言建模引入的句法距离概念,提出了一种全新的、完全并行的成分句法解析模型。要从一个句子构造一个解析树,可以采用自顶向下的方式,递归地将较大的成分分解为较小的成分,分解的顺序定义了层次结构。对句子中每个可能的分割点定义句法距离。由句法距离引起的顺序完全指定了句子需要递归分解成更小的成分的顺序(如图1):对于二叉树,原序列和句法树之间存在一对一的对应关系。因此,模型经过训练,通过margin rank loss来重现由ground-truth distance引起的分割点之间的排序。最重要的是,本文所述模型是并行工作的:每个分割点估计的距离是独立于其他点产生的,这允许在用于深度学习的现代并行计算架构(如GPU)中轻松并行化。除了句法距离之外,我们还训练模型生成组成标签,这些标签用于构建完全标记的树。

所述模型是完全并行的,因此在训练过程中不需要耗费大量计算的结构化推理。从语法距离到树的映射可以在O(n log n)时间内有效完成,这使得解码的计算速度很有吸引力。尽管我们在输出预测上有很强的条件独立假设,但我们在PTB (91.8 F1)和CTB (86.5 F1)匹配中实现了良好的单模型鉴别解析,有时甚至优于最近chart-based和transition-based解析模型。

2 句法解析树的句法距离

在本节中,我们从Shen等人(2017)为通过语言建模进行无监督句法分析而引入的句法距离概念开始,其扩展到监督设置。我们提出了两种算法:

  • 一种是基于连续词之间的句法距离将解析树转换成稠密表示(即下文中的算法1);
  • 另一种是将推断的稠密表示映射回完整的解析树(即下文中的算法2)。

这个表示法稍后将用于监督训练。下面我们正式定义解析树的语法距离:

定义2.1TTT是一个解析好的句法树包含一系列叶子节点(w0,⋯,wn)(w_0,\cdots,w_n)(w0,,wn)。对于任意两个叶子节点(wi,wj)(w_i,w_j)(wi,wj),它们的最小公共祖先的高度记做d~ji\tilde{d}_j^id~ji。那么定义TTT的句法距离可以是满足下列关系的任意的实值向量d=(d1,⋯,dn)d=(d_1,\cdots,d_n)d=(d1,,dn)

这里的定义有些抽象,其实就是对任意的序列/向量中的两个数值,他们的大小关系是保持一致的。换句话说,向量ddd与由连续相邻两个单词对推断的向量d~=(d~10,⋯,d~nn−1)\tilde{d} =( \tilde{d}^0_1,\cdots,\tilde{d}^{n-1}_n)d~=(d~10,,d~nn1)有着相同的长度和数量,而且两两元素之间的大小关系是一致的。注意长度为n的句子有n-1个句法距离(因为连续两个单词之间才有一个句法距离)。

例2.1 如图1中的句法树所示,我们首先算出所有的两两相邻单词的d~\tilde{d}d~,这里d~10=2,d~21=1\tilde{d}^0_1=2,\tilde{d}^1_2=1d~10=2,d~21=1。即d~=(2,1)\tilde{d}=(2,1)d~=(2,1),然后我们只要找一个长度、大小顺序都和d~\tilde{d}d~相同的向量ddd即可。比如这里只要d=(d1,d2)d=(d_1,d_2)d=(d1,d2)且任何的两个实数值符合d1>d2d_1>d_2d1>d2关系即可。

根据这个定义,解析模型预测一个标量序列,这是基于神经网络的模型更自然的设置,而不是预测一组跨度。

我们首先考虑二叉解析树的情况。算法1提供了一种从解析树转换到三元组(d,c,t)(d,c,t)(d,c,t)的方式,其中ddd包含从左到右(按顺序)中序遍历的树内节点的高度,ccc是按相同的顺序遍历的每个树中节点的句法成分标签,ttt是从左到右顺序下每个单词的词性标签。ddd是一个满足定义2.1的有效的句法距离序列,比如图1所示的句法树可能得到输出为d=[2,1],t=[N,V,N],c=[S,VP],h=2d=[2,1],t=[N,V,N],c=[S,VP],h=2d=[2,1],t=[N,V,N],c=[S,VP],h=2(这个是我自己带入算法1计算的结果,不保证正确性哈)。

当模型能够估计出这些数值后,使用算法2可以将模型输出(d^,c^,t^)(\hat{d},\hat{c},\hat{t})(d^,c^,t^)还原为一颗句法树。


算法的过程很简单,每次找出最大的句法距离,然后以此为分割点,继续递归解析其左右两部分成分,直到所有的成分都只包含一个节点(即叶子节点)。


模型所需的复杂度为O(nlog⁡n)O(n\log{n})O(nlogn),而之前的greedy top-down方法复杂度是O(n2)O(n^2)O(n2)。上图展示了重建解析树的一个示例。图中使用了一个虚拟的标签∅\varnothing来隐式的进行了二叉化。首先,找到最大的dddd1d_1d1,所以第一次分割点得到的左子树是(w0)(w_0)(w0),预测其标签是NP,右子树是(w1,⋯,w5)(w_1,\cdots,w_5)(w1,,w5),预测它的标签是∅\varnothing(表明这是一个临时合并用于二叉化的虚拟成分,后续会对其进行剔除,详情参考成分句法分析综述(第二版))。然后递归的对左右子树进行同样方法的解析。由于左子树只有一个节点,故其已经完成解析。对右子树进行解析,寻找最大的ddd,这里d4d_4d4,所以第二次分割点得到的左子树是(w1,w2,w3,w4)(w_1,w_2,w_3,w_4)(w1,w2,w3,w4),预测其标签是VP,右子树是(w5)(w_5)(w5),预测其标签是∅\varnothing。以此类推,最终完成所有解析。

3 学习句法距离

给定一个句子,我们使用神经网络来估计句法距离向量。这里使用一个修改的hinge loss,它的target distance就是我们通过算法1得到的distance。

3.1 模型架构

给定输入句子w=(w0,w1,⋯,wn)w=(w_0,w_1,\cdots,w_n)w=(w0,w1,,wn),我们需要预测出三元组(d,c,t)(d,c,t)(d,c,t)。词性ttt由一个额外的词性标注器给出。句法距离ddd和成分标签ccc是由一系列LSTM和卷积层堆叠组成的神经网络预测出。

首先将单词的embedding和其tag标签的embedding拼接起来输入一个Bi-LSTM层:

预测每一个单词是一个成分的概率:

并计算相邻两个单词之间的卷积:

其中,gisg_i^sgis可以被视为对算法2中每个分割点位置的粗略表示。然后再将输出通过一层Bi-LSTM:

这些hidden state即对于相邻两个单词之间的split的表示。

最后,分别对句法距离和成分标签进行预测:



下图形象的展示了模型的整体架构:

图中,圆圈代表LSTM单元,三角形代表卷积层,灰色箭头块表示前馈神经网络,双向的蓝色箭头代表的是双向循环网络连接。首先输入的是word和tag的embedding。然后底层的灰箭头预测一元生成式的标签,相邻两个单词进行卷积后再送入上层的Bi-LSTM然后分别预测句法距离ddd和成分标签ccc(利用句法距离d确定解析树的结构,然后c赋予各个中间成分标签)。

3.2 目标函数

给定训练数据集D={<dk,ck,tk,wk>}k=1KD=\{<d_k,c_k,t_k,w_k>\}^K_{k=1}D={<dk,ck,tk,wk>}k=1K,训练的目标函数是预测句法距离的loss和成分标签的loss加和。

对于成分标签,直接使用cross-entropy loss即可,其预测的每个标签的概率可以由公式3和公式7得到。

而对于句法距离的loss,最朴素的想法是使用MSE loss,即

然而,我们并不介意这些距离数值的绝对值,我们最关心的是他们的大小顺序关系,因为我们是通过这个大小关系来判定分割点的,而非某个特定的数值。所以,这里使用一个改进的hinge loss:

整体的目标函数就是二者的加和

4 实验

4.1 Penn Treebank

在PTB数据集上的实验结果如下:

可以看出,结果还是不错的。

4.2 Chinese Treebank

在CTB数据集上的实验结果如下:

模型取得了Single model组的最好的结果。

4.3 Ablation Study

模型研究的Ablation Study如下:

4.4 解析速度

5 相关工作

6 总结

我们提出了一种基于预测实值标量的成分句法解析方案,叫做句法距离,其顺序识别自顶向下分裂决策的序列。使用神经网络模型来预测距离d和组成标签c。给定在第2节中介绍的算法,我们可以在每个三元组(d,c,t)(d,c,t)(d,c,t)和解析树之间一一对应的转换。我们的模型的一个特别之处在于,它可以并行的进行预测分割点。实验表明,所述模型可以达到较强的性能相比以前的模型,同时显著地提高了效率。由于模型的架构只不过是标准的递归层和卷积层的堆栈,而这些层是大多数学术和工业深度学习框架的基本组件,因此这种方法的部署将非常简单。

论文笔记:Straight to the Tree: Constituency Parsing with Neural Syntactic Distance相关推荐

  1. 论文笔记--决策树(Decision Tree)

    论文笔记–决策树(Decision Tree) 1.定义 首先,决策树是一个树结构.其非叶节点表示的是一个特征属性的测试,而每个分支代表了其父节点的特征属性在某个值域的输出.使用决策树进行决策的过程就 ...

  2. 【论文笔记】3D LiDAR-Based Global Localization Using Siamese Neural Network

    [论文笔记]3D LiDAR-Based Global Localization Using Siamese Neural Network ~~~   ~~~~     在本文基于从神经网络中学习到的 ...

  3. 论文笔记(三):PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

    PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes 文章概括 摘要 1. ...

  4. 图像隐写术分析论文笔记:Deep learning for steganalysis via convolutional neural networks

    好久没有写论文笔记了,这里开始一个新任务,即图像的steganalysis任务的深度网络模型.现在是论文阅读阶段,会陆续分享一些相关论文,以及基础知识,以及传统方法的思路,以资借鉴. 这一篇是Medi ...

  5. 论文:Ordered Neurons: Integrating Tree Structures into Recurrent Neural Networks

    一.译文: ABSTRACT 自然语言是分层结构的:较小的单元(例如短语)嵌套在较大的单元(例如子句)中.当较大的组件结束时,嵌套在其中的所有较小的组件也必须结束.虽然标准的LSTM体系结构允许不同的 ...

  6. 论文笔记 NAACL 2016|Joint Event Extraction via Recurrent Neural Networks

    文章目录 1 简介 1.1 动机 1.2 创新 2 背景知识 3 方法 3.1 编码 3.1.1 句子编码 3.1.2 RNN编码 3.2 预测 3.2.1 触发词预测 3.2.2 论元角色预测 3. ...

  7. 论文笔记 Inter-sentence Relation Extraction with Document-level Graph Convolutional Neural Network

    一.动机 为了抽取文档级别的关系,许多方法使用远程监督(distant supervision )自动地生成文档级别的语料,从而用来训练关系抽取模型.最近也有很多多实例学习(multi-instanc ...

  8. 论文笔记:Person Re-identification with Deep Similarity-Guided Graph Neural Network

    Person Re-identification with Deep Similarity-Guided Graph Neural Network 2018-07-27 17:41:45 Paper: ...

  9. 论文笔记(一)《Intriguing properties of neural networks》

    对抗样本(一)<Intriguing properties of neural networks> 神经网络的有趣特性 两点: 性质1:单个的深层神经元与随机线性组合的多个深层神经元并没有 ...

最新文章

  1. FLASHCS3多文件上传源代码(类似uccenter社区)
  2. 动态CSS - LESS学习总结
  3. 《剑指Offer》37:序列化二叉树
  4. jsp标签 判断 余数_程序员的数学基础课(三)余数与迭代法
  5. mysql explain 派生表_MySQL的Explain命令
  6. django-解决-修改过的模型类不能被正常迁移的解决办法
  7. android 页面icon拉伸_所有同学!注意咯!!设计师不可忽略的页面转场来咯!!...
  8. 2017年闰秒linux_2017年Linux专业人员的4个热门技能
  9. 有什么看到就想要抄下来的句子?
  10. ThreadPoolExecutor执行任务,异常日志缺失问题
  11. 算法小讲堂之你真的会双指针吗?
  12. 学生信息管理系统(附运行效果图和源码下载)分页技术(后台封装json数据传递到前端显示,动态分页等)(Mybatis,json,ajax,jQuery实用整合示例)
  13. 如何删除IOS--CISCO IFS简介
  14. Vue响应式声明渲染机制
  15. 智遥工作流将数据导出到Excel分析
  16. 浅谈fiddler抓包工具中自动断点——Before Requests与After Responses断点功能
  17. Win10 打开图片,提示文件系统错误(-2147219196)
  18. 【.net函数式编程】可重复的执行repeatable execution
  19. Python的基本数据类型与运算符号
  20. [Unity]Shader利用Geometry处理实现描边效果

热门文章

  1. 跨国企业在中国 | 3M与美的达成家电领域战略合作;舍弗勒南京公司开建新厂房...
  2. matlab [c, lags]=xcorr(y1,y2) 转python
  3. 飞冰,怎么配置打包时候去掉console.log配置
  4. react native Android端保持APP后台运行--封装 Headless JS
  5. DELL笔记本自带键盘启动与关闭方式
  6. app公司制作app的方法和步骤
  7. 格式刷只能刷一次?教你如何刷一辈子
  8. PG第五章-体系结构
  9. 合法的python赋值语句_关于Python赋值语句,以下选项中合法的是??()。
  10. 哪里买linux虚拟主机的,怎样购买虚拟主机