原文链接:

What's Going On in Neural Constituency Parsers? An Analysis

论文地址: What's Going On in Neural Constituency Parsers? An Analysis
代码地址: github

摘要

最近几年,成分句法分析的方法发生了巨大的变化。传统的有基于PCFG的CKY算法,最近几年随着神经网络的兴起又产生了基于转移的方法、CRF句法分析、重排序方法等等。

本文是伯克利大学在NAACL18提出的一种基于神经网络的句法分析方法,和传统的方法不同的是,完全不使用语法规则和词汇特征,只需要用神经网络学习出短语的表示即可。通过实验可以发现,神经网络的确也很好的隐式学习出了传统的方法显式用到的语法规则和其他一些特征。在PTB数据集上,该方法达到了92.08%的F1值,这也直接超过了传统的大多数方法。而在下一篇伯克利的ACL18论文中,他们提出的基于Multi-Head Attention的成分句法分析方法更是达到了95.13%的F1值。

介绍

在过去几年,成分句法分析方法发生了巨大的变化。最大的变化就是语法规则和人工的词汇特征变得越来越不那么重要,取而代之的用循环神经网络学习短语的表示,但是还没有什么人对这种神经网络表示的有效性做研究分析。本文提出了一种用RNN学习表示用来句法分析的模型,并对模型的各个方面进行了分析。

句法分析模型

模型总览

和传统的CKY算法一样,该模型还是采用动态规划的算法求解每个短语的最大得分对应的类别以及分割点。只不过这里的短语得分不再是产生式概率之积,而是用RNN训练出来的短语得分。

表示短语 类别为 的得分,句法树 的得分表示为所有产生式的得分总和:

值得一提的是,该句法分析模型不需要句法树是二叉树,所以可以直接分析出 叉树结构。

模型的任务依然是寻找得分最高的句法分析树:

短语得分 的计算可以通过三个部分实现:单词表示、短语表示、短语类别得分。

单词表示

首先采用Char-BiLSTM训练出每个单词的字符级别的表示,这种表示方法已经很常见了,优点是可以捕捉到单词的前缀后缀等信息,还可以解决未登录词的表示问题。

最后将字符级别的词表示和预训练的词向量拼接起来作为最终的单词表示。也可以用外部序列标注器预测出单词的词性,并拼接上去作为输入,但是在这里只要Char-BiLSTM训练的足够好,就不需要词性标注了。

短语表示

对句子单词序列跑一遍双向LSTM,得到每个单词的前向后向上下文表示 ,然后对于短语 ,用两者的上下文表示的差值拼接起来作为该短语的向量表示:

图1是一个具体的例子:

短语类别得分

最后将短语表示输入到一个单层前馈神经网络中,输出得分向量,其中得分向量每个维度就对应了每个类别的概率。具体计算公式如下:

句法分析

虽然现在是 叉树,但是依然可以用CKY算法来进行句法分析。这时候就需要定义一个虚拟短语类别 ,表示实际上不能构成短语的临时短语。例如对于产生式 ,分析的时候可以将其分析为 。定义虚拟短语类别的得分为0,即

定义 为短语 得分最高的句法分析树的得分。首先对长度为1的短语即单词进行初始化:

然后对于短语 ,运用动态规划算法计算得分最高的句法分析树:

注意到这里对类别的预测和分割点的预测是分开的,短语的最高分数就是最优子树的每个结点的类别得分之和。

自底向上进行计算,最终整个句子的最高得分就是 。然后自顶向下回溯得到整个句子的句法分析树,注意如果回溯遇到了虚拟短语类别 ,就直接忽略它,继续往下回溯。

整个算法的时间复杂度为 ,因为没有用到语法规则,所以 的常数系数 就没有了,复杂度大大降低!

模型训练

损失函数依然使用的是max-margin,即

这里提到了一点加快计算的方法, 可以融入到动态规划算法中一起计算,即将短语类别得分 替换为 ,其中 是标准树中短语 的类别。

实验结果

经过10轮训练之后,模型在验证集上的F1值达到了92.22%,在测试集上的F1值为92.08%。

[NAACL18]What's Going On in Neural Constituency Parsers? An Analysis(神经成分句法分析器的一些分析)...相关推荐

  1. 吴恩达深度学习4.4笔记_Convolutional Neural Networks_人脸识别和神经风格转换

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42432468 学习心得: 1.每周的视频课程看一到两遍 2.做笔记 3.做每周的作业 ...

  2. Learning Skeletal Articulations with Neural Blend Shapes(使用神经混合形状学习骨骼关节)SIGGRAPH 2021顶刊解析

    北京大学前沿计算研究中心 作者:李沛卓 描述 我们通常看电影或者动漫时常常会遇到以下这种蒙皮不够饱满的情况,而且通常动画师在进行建模的时候会在这方面花费很大精力和时间,但是最终效果却依然不够理想,本文 ...

  3. 自然语言处理(NLP)-3.1 用神经网络进行情感分析(Neural Networks for Sentiment Analysis)

    1.用神经网络进行情感分析 1.1 神经网络概述 前向传播(Forward propagation): 定义:逐层计算,用前一层输出*当前层权重,再通过激活函数 1.2 神经网络用于情感分析 原理:使 ...

  4. Constituency Parsing with a Self-Attensive Encoder 论文解读

    之前没咋涉略过 parsing 部分,最近有用到,遇到一个实现的很不错的库:benepar,无论是速度.代码还是性能上,伯克利出品.而本文要讲的论文就是 benepar 的参考论文,代码和论文作者都是 ...

  5. NAACL 2018 ACCEPTED PAPER

    NAACL 2018 接受论文列表地https://naacl2018.wordpress.com/2018/03/02/list-of-accepted-papers/ 详细如下: A BI-MOD ...

  6. 斯坦福大学深度学习与自然语言处理第一讲:引言

    斯坦福大学在三月份开设了一门"深度学习与自然语言处理"的课程:CS224d: Deep Learning for Natural Language Processing,授课老师是 ...

  7. 斯坦福大学深度学习与自然语言处理第一讲引言

    http://www.52nlp.cn/%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A ...

  8. CS224n笔记1 自然语言处理与深度学习简介

    什么是自然语言处理 这是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部分.这个星球上有许多生物拥有超过人类的视觉系统,但 ...

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

    论文笔记:Straight to the Tree: Constituency Parsing with Neural Syntactic Distance 目录 论文笔记:Straight to t ...

  10. 5.深度学习练习:Deep Neural Network for Image Classification: Application

    本文节选自吴恩达老师<深度学习专项课程>编程作业,在此表示感谢. 课程链接:https://www.deeplearning.ai/deep-learning-specialization ...

最新文章

  1. bert pytorch源码_【PyTorch】梯度爆炸、loss在反向传播变为nan
  2. CentOS 6.5的安装详解
  3. 用 Flask 来写个轻博客 (20) — 实现注册表单与应用 reCAPTCHA 来实现验证码
  4. STL中heap算法(堆算法)
  5. POJ 3620-Avoid The Lakes
  6. MySQL - 锁等待及死锁初探
  7. [前端漫谈] 做一个四则计算器
  8. 7-14 求整数段和 (15 分)
  9. linux5 yum安装,(5)Linux_软件管理_yum安装本地软件
  10. 遇到bug我会怎么做
  11. 怎么用QQ查看对方IP
  12. 没登录的计算机怎么远程桌面,没有远程登陆工具如何远程电脑 如何用向日葵实现远程登陆?...
  13. Python3.7安装教程
  14. golang 实现微信聊天机器人
  15. cdd matlab 算法,求翻译 CDD修复算法
  16. 动手智能小车记(5)-坦克底盘硬件模块大杂烩
  17. 阿里财报中的饿了么:守正出奇
  18. 吃鸡神器!12G+128G 平板电脑吃鸡贼爽,送!
  19. android屏幕唤醒与解锁
  20. 明天是程序员节,程序员的过节姿势大全抢先看

热门文章

  1. 极光IM使用教程-极光推送
  2. oracle的热备份和冷备份
  3. struts2 国际化 cookie保存语言, 下次访问时显示当前设置的语言
  4. 20190909 SpringBoot集成Swagger
  5. 杭电2072 单词数
  6. python学习之-文件和对象
  7. Miller Robbin测试模板(无讲解)
  8. 666的vue.mixin
  9. 解决eclipse中git中cannot open git-upload-pack(无法打开Git上传包)问题
  10. linux下Apache默认安装路径