句法依存分析_复旦大学邱锡鹏教授:词法、句法分析研究进展综述

018153d6878572463c8aa46983344300.png
本文为第十六届自然语言处理青年学者研讨会 YSSNLP2019 报告《词法、句法分析研究进展综述》的简要文字整理,本报告主要回顾词法、句法领域的最新研究进展。

关于报告人:

邱锡鹏,复旦大学计算机科学技术学院副教授,博士生导师。于复旦大学获得理学学士和博士学位。主要从事自然语言处理、深度学习等方向的研究,在 ACL、EMNLP、IJCAI 等计算机学会 A/B 类期刊、会议上发表 50 余篇学术论文,引用 1600 余次。开源中文自然语言处理工具 FudanNLP 作者。2015 年入选首届中国科协人才托举工程,2017 年 ACL 杰出论文奖,2018 年获中国中文信息学会“钱伟长中文信息处理科学技术奖—汉王青年创新奖”。

8ac756b5383d4d2335b006d9d1d76fc3.png

大家好,我是邱锡鹏。今天非常荣幸给大家简要分享一下 NLP 中词法和句法分析领域的最新研究进展。

7d8fa1f94893a2cee93b3d3c690e9c7b.png

首先,我们来看一下词法和句法分析中的任务定义。我们一般认为词是语言中的最小语义单位,所以在进行后续的很多 NLP 任务的时候,需要先进行(中文)分词,标注它的词性,并分析句子的句法结构。像这里给的一个句子“上海计划发展金融业”,首先需要将其进行分词,然后进行词性标注和句法分析。这里我们的句法分析主要以依存句法分析为主进行介绍,建立词与词之间的依赖关系。因此我们这里主要涉及三个任务:中文分词,词性标注和依存句法分析。

6aae4ee6d927f1c1bbc2cdcaa09f557e.png

目前用来解决这三个任务的基本方法可以分为序列标注方法,基于转移的方法和基于图的方法三种。为了解决错误传播问题,一般来说,我们可以将这三个任务进行联合建模,比如中文分词和词性标注的联合模型、词性标注和句法分析的联合模型、以及三个任务的全联合模型。

30aa8cb382716d5ec199b92f38375a3a.png

这三个任务的最新研究进展和 SOTA 模型都可以从 NLP-Progress 这个网站进行查询。

中文分词

233c4259e6e50ed57123132b65b8e711.png

首先我们来看一下中文分词。

982691f19aa7c874db59949b696b6722.png

目前中文分词最好的模型是来自 EMNLP 2018 的一篇论文,采用了基于堆叠双向长短期记忆网络的序列标注模型

25feb48bd6987e649bb53604a00d6e95.png

该方法虽然在模型上并没有太多的创新,但是其采用了预训练 bigram embedding 和变分 droupout 方法以及堆叠双向长短期记忆网络的微创新,训练了一个相对较深的网络,在解码时直接使用一个 softmax 分类器,而不用 CRF。在多个数据集上达到了最好的效果。

1d7e1b01855dc22cec6ad9451d936467.png

基于序列标注的方法是给字进行打标签,很难利用到词级别的信息。为了引入词级别的信息可以采用以下三种方法:基于转移的方法、Semi-CRF 和 DAG-LSTM/Lattice-LSTM。下面我分别简要介绍一下这三种方法。

d9757f1a30d2bbcf1ce27084e37acd4e.png

基于转移的方法是通过转移动作序列来进行分词,即从左往右判断一个每两个相邻的字是分还是不分。这是一种贪婪的方法。在中间某一步时,我们已经有之前分好词的信息,所以可以利用词级别的信息来进行建模。

7990ef6b61188ea8a263689799c16e15.png

第二种利用词级别信息的方法是利用 Semi-CRF 模型,直接建模不同词之间的依赖关系。一般来讲,可以先统一通过一个双向的循环神经网络来提取字别的信息,然后使用一个融合方法来生成词级别的信息,最后输入 Semi-CRF 层来进行分词。Semi-CRF 的缺点是候选词有一个最大长度限制,我们提出了一种改进方法,目前正在投稿中。

b9fa715b79cc6c729b3584ab3e2c5fd9.png

第三种利用词级别信息的方法是是改进 LSTM 模型,将链式结构扩展到 DAG 结构。我们可以用一个事先准备好的词典,对句子进行预分割,把所有的分割可能性都组合出来。这样我们模型的输入是有多个字和词构成的混合序列,构成一个 DAG 结构。针对这种结构,我们提出一种 DAG-LSTM 来进行序列标注。

37a60a621d9b636a6a21324f4625820f.png

在中文分词中,有一个问题是很多不同的分词标准。之前的方法都是在单个标准上进行训练模型。我们知道,不同的分词标准之间有很多共通的特性。如这个表中所示,三个不同标准存在部分重叠,因此我们可以同时利用多个不同标准的数据进行联合训练,通过多任务学习来辅助提高每个单独标准的分词能力。

4e97db4d28968599753150414ab36867.png

这里介绍一个我们在多标准分词上面的最新工作,所有不同的标准都共享一个模型,由于 Transformer 的强大能力,我们用一个共享的 Transformer 来进行编码,解码用一个共享的 MLP 或 CRF。然后增加一个额外的 Criterion ID,用来指示模型输出哪个标准的结果。目前这个模型在所有的分词任务上都达到了最好的效果。

词性标注

150e1ae86ddc4585ead0d2c9f0e6d832.png

词性标注一般来讲比较简单,所以很少有单独工作来专门的词性标注任务。一般都是词性标注和其他任务相结合。首先我们来看一下联合的中文分词和词性标注任务。

c12f74aebd7353b485f282343456652a.png

第一种方法是基于字的序列标注方法,使用“BMES”和词性的交叉标签来给每个字打标签。比如“B-NN”、“S-NR”等。相比于中文分词,分词和词性的联合任务需要更多的特征,因此我们可以用更复杂的网络来进行抽取特征。

914caeff9e4af749969799e40b869d1e.png

第二种方法是基于转移的方法,首先利用一个 BiLSTM 编码器来提取上下文特征,在解码时每一步都预测一个动作。动作的候选集合为是否分词以及词性。

依存句法分析

3c754d7cfbdb9bb3d886f167128e72a2.png

接下来介绍下句法分析的最新进展,这里主要以依存句法分析为主。在深度学习之前,依存句法分析就分为基于转移的方法和基于图的方法。近几年,分别出现了针对这两种不同方法的神经网络模型。

3451ea32073e8dfc7f152f6dcdb9adf4.png

首先来看下基于转移的方法,通过 shift-reduce 两个基本的动作来将序列转换为树结构。首先用一个 buffer 来存储所有未处理的输入句子,并用一个栈来存储当前的分析状态。

动作可以分为:1)shift,即将 buffer 中的一个词移到栈中;2)left_arc(x),即栈顶两个词 a,b 为 a<-b 的依赖关系,关系种类为 x;3)right_arc(x),即栈顶两个词 a,b 为 a->b 的依赖关系,关系种类为 x。后两种动作为 reduce 动作。

cd5e4f9eb7913c3ecde04b9dddf01583.png

目前基于转移的方法的最好模型是 Stack LSTM,通过三个 LSTM 来分别建模栈状态、待输入序列和动作序列。 其中因为栈需要入栈和出栈,因此作者提出了一个 Stack LSTM 来建模栈状态。

b14491fe460acb3b88b3aef56a45b0f6.png

虽然基于 Stack LSTM 取得了非常好的效果,但是在目前的依存句法分析中,最流行的方法是基于图的方法经典的方法是 Biaffine 模型。直接用神经网络来预测每两个词之间存在依存关系的概率,这样我们就得到一个全连接图,图上每个边代表了节点 a 指向节点 b 的概率。然后使用MST等方法来来将图转换为一棵树。

Biaffine 模型其实和我们目前全连接自注意力模型非常类似。Biaffine 模型十分简单,并且容易理解,并且在很多数据集上都取得了目前最好的结果。

d65b99bf1cfcf59e19526d42e90f6f1b.png

除模型外,目前依存句法分析主要关注于多语言的依存通用依存分析。目前一个数据集是 universal dependenies,其中有很多问题值得研究,比如多任务学习、迁移学习、通用语言表示等。

词性标注 & 句法分析

ab2602f609e41ce33663a302c559f862.png

很自然地我们可以将词性标注和句法分析作为联合任务来进行建模。

a43c7c3393980893253c7ec5da45c768.png

联合的词性标注和句法分析方法有很多,可以是基于转移的方法也可以是基于图的方法。这里介绍一种比较简单的方法,首先利用 LSTM 来预测词性,然后用词性信息和词信息一起用另外一个 LSTM 进行建模,并用 Biaffine 模型进行句法分析。

中文分词 & 句法分析

5f01a451fc3be6c0863f8704d618074b.png

在中文方面,句法分析是基于词级别的,所以在做句法分析之前要先进行分词。那么我们是不是可以将中文分词和句法分析也作为一个联合任务来同时进行呢?

51e832fec5e1b00505253d8582e7553c.png

我们提出了一个基于图方法的统一模型来同时解决中文分词和句法分析问题。其实方法很简单,只需要将词内部的字之间加上一个特殊的依赖关系“app”,然后将词级别的依存关系转换为字级别的依存关系。并且用 biaffine 模型来进行同时预测。

0de6bf06edf1c040010edc8a70a7eb96.png

这就是具体的模型结构,和 biaffine 模型类似。

fastNLP

99775025ba5abb33ce4a50502054cb1d.png

最后,上面的模型都将在 fastNLP 中进行实现,这里简单介绍下我们最近的一个工作,基于深度学习的自然语言处理平台 FastNLP

c4afccf9853365c173082c82d3dacbeb.png

我们希望做到具有 Spacy 的易用性,AllenNLP 模块化以及 AutoML 自动模型选择。

393083206cfe2d7e37e7c1e2adabfe3e.png

FastNLP 是一个模块化可扩展的 NLP 框架,提供大量的预训练模型,可以使大家在五分钟内实现 SOTA 模型。另外 NLP 中大量的时间都花在数据的预处理和数据转换上面,FastNLP 提供了一种非常简单高效的数据预处理方法。面向我们科研工作者,FastNLP 也提供了非常方便的参数记录以及实验过程可视化工具。

0730ee514473d923b8fb1b38dfcee472.png

最后希望有兴趣的老师、同学一起来参与开发,谢谢。

#投 稿 通 道#

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

投稿方式:

• 方法一:在PaperWeekly知乎专栏页面点击“投稿”,即可递交文章

• 方法二:发送邮件至:hr@paperweekly.site ,所有文章配图,请单独在附件中发送

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

加入社区:http://paperweek.ly

微信公众号:PaperWeekly

新浪微博:@PaperWeekly

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取系统信息3——proc文件系统介绍和使用

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、proc文件系统介绍 1、操作系统级别的调试一般很困难 简单的程序可以单步调试&#xff1b;复杂一点的程序可以printf、cout等打印信息调试&#xff08;即输出信息到控制台&#xff09;&#xff0…

阻止函数源码在控制台输出

这是一个很贱的技能&#xff0c;我在谷歌控制台源码里看到的。相信大家都知道&#xff0c;在控制台里只输入函数名&#xff0c;不输入 () 然后按回车&#xff0c;就可以输出源码。 都不会陌生吧&#xff0c;这也有助于我们调试&#xff0c;是个很棒的技巧。不过系统内置的就会输…

值不值得入手_iPhone11现在还值不值得入手?真实用户说出心里话

iPhone11作为苹果走量的一款机型&#xff0c;自发布以来就备受争议&#xff0c;有的朋友说真香&#xff0c;A13iOS只卖4000多&#xff0c;还有的朋友吐槽大黑边、828P的屏幕、信号不好还有充电太慢&#xff0c;特别是现在同价位能买到的安卓旗舰&#xff0c;要5G有5G、要高刷新…

设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动

以下内容转载于微信公众号&#xff1a;嵌入式企鹅圈。如有侵权&#xff0c;请告知删除。 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术。 对于初学者来说会非常困惑&#xff0c;甚至对Linux有一定基础的工程师而言…

对于局部变量_对于SQL常用查询优化方法的整理

查询进行优化&#xff0c;应尽量避免全表扫描&#xff0c;首先应考虑在where 及order by 涉及的列上建立索引:尝试下面的技巧以避免优化器错选了表扫描&#xff1a;使用ANALYZE TABLE tbl_name为扫描的表更新关键字分布。对扫描的表使用FORCE INDEX告知MySQL&#xff0c;相对于…

黄聪:如何使用CodeSmith批量生成代码(原创系列教程)

在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做一个简单的Demo,并不详细的讲解CodeSmith各个强大的功能,有兴趣的朋友可以打开CodeSmith的…

c语音异或运算符_C语言中的按位异或运算符有什么用处?

原标题&#xff1a;C语言中的按位异或运算符有什么用处&#xff1f;想知道C语言中的按位异、运算符有什么用处&#xff0c;首先C语言中^为按位异或运算符&#xff0c;若两个二进制位相同&#xff0c;则结果为0&#xff0c;不同为1例&#xff1a;#include "stdio.h"ma…

HDU2201

水&#xff5e; 分析&#xff1a;n&#xff0c;m。对于第一个人不抽到m号座位概率为&#xff08;n-1&#xff09;/n&#xff0c;第二个人为&#xff08;n-2&#xff09;/&#xff08;n-1&#xff09;.。。。第m个人为1/&#xff08;n-m1&#xff09;.。。。 相乘之后则为 1/n V…

字符设备驱动基础1——简单的驱动源代码分析

以下内容源于朱有鹏嵌入式课程的学习&#xff0c;如有侵权请告知删除。 参考博客&#xff1a;linux驱动开发&#xff08;一&#xff09; - biaohc - 博客园 一、驱动源代码示例 /********module_test.c代码*********/#include <linux/module.h> // module_init module…

字符设备驱动基础3——使用register_chrdev()函数注册字符设备

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、系统工作原理 1、工作流程 系统的整体工作流程是&#xff1a;应用层—>API—>设备驱动—>硬件。 操作系统提供的API包括open、read、write、close等函数&#xff0c;它们只是一种操作逻…

win7在未关闭vmware情况下直接关机,导致虚拟机无法克隆

今天有点小激动啊&#xff0c;着急关机&#xff0c;结果发现重启之后的虚拟机不能进行克隆操作。系统提示如下&#xff1a;the Specific Virtual Disk Needs Repair .查询“度娘”&#xff0c;突然看到一篇文章说&#xff0c;删除这啊&#xff0c;修改那的....特别复杂&#xf…

hdu 1159(最长公共子序列)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1159 思路&#xff1a;dp[i][j]表示s1从0~i-1,s2从0~j-1的最长公共子序列&#xff1b; 递推方程为&#xff1a;dp[i][j](s1[i-1]s2[j-1])?d[i-1][j-1]1:max(dp[i-1][j],dp[i][j-1]); View Code 1 #include<…

mysql applier_MySQL推出Applier,可实时复制数据到Hadoop-阿里云开发者社区

http://labs.mysql.comMySQL复制操作可以将数据从一个MySQL服务器(主)复制到其他的一个或多个MySQL服务器(从)。试想一下&#xff0c;如果从服务器不再局限为一个MySQL服务器&#xff0c;而是其他任何数据库服务器或平台&#xff0c;并且复制事件要求实时进行&#xff0c;是否可…

字符设备驱动基础4——读写接口的操作实践

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、细节提要 1、与用户与内核数据交换有关的函数 &#xff08;1&#xff09;copy_from_user()函数 该将数据从用户空间复制到内核空间。 如果成功复制则返回0&#xff0c;如果不成功复制则返回尚未…

mysql分区表mycat_MySQL 中间件之Mycat垂直分表配置

垂直分表就是将一个库下的多个表拆分到多个MySQL实例&#xff0c;实现库压力分流。通过GTID模式复制&#xff0c;db01与db02之间不进行任何连接与复制当前环境&#xff1a;mycat --> db01与db02db01 --> db03db02 --> db04当前垂直分表架构&#xff1a;后端数据库创建…

深入浅出mysql gtid_深入理解MySQL GTID

GTID的概念何为GITDGTID(global transaction identifier)是全局事务标识符&#xff0c;在MySQL5.6版本中作为一个超级特性被推出。事务标识不仅对于Master(起源)的服务器来说是惟一的&#xff0c;而且在整个复制拓扑架构来说&#xff0c;也是全局唯一的。1.GTID的格式GTID sou…

winform 64位系统中使用

WINFOR编译成X86的 转载于:https://blog.51cto.com/agilitygod/1419939

long 转为string_面试必问 Redis数据结构底层原理String、List篇

点击关注上方“Java大厂面试官”&#xff0c;第一时间送达技术干货。阅读文本大概需要 8 分钟。前言今天来整理学习下Redis有哪些常用数据结构&#xff0c;都是怎么使用的呢&#xff1f;首先看下全局存储结构。全局存储结构基础你们肯定都知道&#xff0c;redis支持的基础数据结…

wpf 3D学习

最近在看一些关于wpf 3d的效果&#xff0c;研究了一些代码特效&#xff0c;现在和广大博友共享一下. 首先用到的是MeshGeometry3D&#xff0c;msdn上介绍&#xff1a;用于生成三维形状的三角形基元。主要有4个依赖属性&#xff1a;NormalsProperty&#xff0c;PositionsPropert…

unicode字符、python乱码问题

http://www.cnblogs.com/BeginMan/archive/2013/08/08/3246619.html#a1 Python常见常用知识点http://blog.csdn.net/tingsking18/article/details/4033645 Unicode和Python的中文处理如何让Python的Unicode字符串支持中文&#xff1f;要想利用Python的Unicode机制处理字符串&…