前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详解Transition-based Dependency parser基于转移的依存句法解析器

详解Transition-based Dependency parser基于转移的依存句法解析器

作者头像
zenRRan
发布于 2019-11-19 12:36:06
发布于 2019-11-19 12:36:06
1.4K0
举报

阅读大概需要8分钟

主讲:余南

整理:甄冉冉

导师:付国宏 张梅山

出自:黑龙江大学自然语言处理实验室周末讨论班

以下图片,来自于余南师兄

什么是依存句法树

依存句法树就是表示一个句子中词与词之间的依存关系,如下图

其中两个词之前的弧表示这两个词有依存关系,弧上的标签为二者的关系,弧的始发点为父亲节点,箭头指向为孩子节点。比如The 和 fox 是冠词+名词(det)的名词短语。

除了一个词,即根节点(这里为jumped)外,其他词都有词作为父亲节点,而该根节点(jumped)的父亲节点为root。

但是注意,依存句法树是不允许弧之间有交叉或者回路!

依存句法树数据表示

依存句法树的文本表示格式为conll格式,如表

根据该表的父亲节点索引和对应的弧上关系就能还原该依存句法树。其中-1表示根节点。

依存句法树的用途

我们通常将依存句法的特征融入到其他任务模型里,比如机器翻译、意见挖掘、语篇分析等,一般能得到更好的性能。

那怎么得到依存句法特征呢?通常有两种方法:

  • 将依存句法树喂给递归神经网络,得到的隐层表示可以作为该依存句法的特征表示。
  • 将依存句法树交给特征模板,从而得到该依存句法的特征表示。

什么是Transition-based基于转移的框架?

这个框架由状态和动作两部分构成,其中状态用来记录不完整的预测结果,动作则用来控制状态之间的转移。

用在生成依存句法树上,则具体表示为从空状态开始,通过动作转移到下一个状态,一步一步生成依存句法树,最后的状态保存了一个完整的依存树。依存分析就是用来预测词与词之间的关系,现在转为预测动作序列。在基于转移的框架中,我们定义了4种动作(栈顶的元素越小表示离栈顶越近):

  • 移进(shift):队列首元素

出栈,压入栈成为

  • 左规约(arc_left_l):栈顶2个元素

规约,

下沉成为

的左孩子节点,l为弧上关系。

  • 右规约(arc_right_l):栈顶2个元素

规约,

下沉成为

的右孩子节点,l为弧上关系。

  • 根出栈(pop_root):根节点出栈,分析完毕。

ps:下沉的意思

0下沉,视觉效果能看出是1的孩子

所以,我们基于转移的依存句法分析器就由预测树结构问题转为预测动作序列问题。使得问题简单了不少。

Transition-based基于转移的具体例子

还是以上面的依存树为例:

一整套依存分析的动作序列(金标,训练数据)就变为:

详细解释下:

初始状态

栈为空,队列为整个文本的数字序列。这个时候只能进行移进shift操作:

因为左边栈对一个元素0,还是只能进行移进shift操作:

这个时候栈中有2个元素,我们此时看依存树

0、1之间并没有弧,不能进行规约,所以还是只能shift:

此时看栈顶两元素,发现依存树中1、2之间有依存关系

而且1为2的孩子,所以此时的动作为左规约arc_left,1下沉,为2的孩子(此时实际操作为1被踢出栈,栈里剩为0、2,踢出是因为最后能根据动作序列还原整个依存树,当然也为了接下来的操作方便),此时标签为amod:

此时栈里为0、2,再次查看依存树

发现0、2之间有依存关系,其中0为2的孩子,所以此时操作为左规约,此时标签为det

...

中间略过一些步骤,因为都是同理,这次说下第9步

此时栈中为3、4,查看依存树

按照正常操作,此时应该arc_right右规约,但是如果真的4就下沉,就没了。而一会5要入栈,再查看依存树发现4是自己的爸爸,天呐,5的爸爸没了,找不到了,消失了,其他词都有爸爸,就5没有,还有比这个更惨的吗?这就没发再进行操作了!所以,还有一个潜规则如果操作为栈顶元素要进行arc_right时,不执行该操作,而选择shift。

而你可能会问arc_left会有这样的问题吗?不会啦,比如3、4进行arc_left操作,3下沉,如果右边的队列中有父亲节点是3,那么就表示该依存树有交叉或者回路!这种是不可能发生的,因为依存树不允许有交叉或者回路!(不信的话,你自己画画试试)

最后说下,pop_root根弹出操作,只能发生在最后

右下角的数据为词与词之间的关系,这个就是根据动作序列生成的依存关系(父亲,孩子,关系),根据该关系,就能还原成原来的依存树。

神经网络模型

我们用神经网络来进行特征抽取,该网络共分为2部分:

编码端:用来负责计算词的隐层向量表示

解码端:用来解码计算当前状态的所有动作得分

编码端

我们用Bi-LSTM来编码一个句子

,计算对应的隐层表示

。公式表示为:

其中,

为词向量,

为词性向量,

为向量拼接。

具体解释:

就是咱们平时用的词的embedding

就是词性,比如是NN,VV,VP等。将它当成词的操作一样,用它自己的embedding(和词的embedding不是一个!)表示。

就是向量拼接,咋拼接都行,cat呀,add呀都行的。自己尝试哪个效果好用哪个,没有死规定。而我们这里用的是cat。

解码端

解码端就需要对每一个状态打出所有动作的得分。根据经验,认为栈顶三元素和队列首元素为动作预测关键特征,于是将栈顶三元素

(下标越小离栈顶越近)和队列首元素

进行拼接。然后用线性变换计算每一个动作的分数:

模型预测

对每一个动作的分数进行Softmax概率化,然后输入到交叉熵中,作为目标函数。然后再用Adam来进行更新模型参数,最小化目标函数:

其中

为金标动作序列的概率,

为模型参数。

推荐阅读:

一大批历史精彩文章啦

经验 | 初入NLP领域的一些小建议

学术 | 如何写一篇合格的NLP论文

干货 | 那些高产的学者都是怎样工作的?

是时候研读一波导师的论文--一个简单有效的联合模型

近年来NLP在法律领域的相关研究工作


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
依存句法分析
在依存句法分析中,句子中词与词之间存在一种二元不等价关系: 主从关系。在句子中,如果一个词修饰另一个词,则称修饰词为从属词(dependent),被修饰词成为支配词(head) ,两者之间的语法关系就是依存关系(dependency relation)。
Dendi
2019/12/04
1.8K0
依存句法分析
《自然语言处理入门》12.依存句法分析--提取用户评论
语法分析(syntactic parsing )是自然语言处理中一个重要的任务,其目标是分析句子的语法结构并将其表示为容易理解的结构(通常是树形结构)。同时,语法分析也是所有工具性NLP任务中较为高级、较为复杂的一种任务。 通过掌握语法分析的原理、实现和应用,我们将在NLP工程师之路上跨越一道分水岭。 本章将会介绍短语结构树和依存句法树两种语法形式,并且着重介绍依存句法分析的原理和实现。
mantch
2020/02/25
2.7K0
《自然语言处理入门》12.依存句法分析--提取用户评论
NLP教程(4) - 句法分析与依存解析
本系列为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》的全套学习笔记,对应的课程视频可以在 这里 查看。
ShowMeAI
2022/05/05
8280
NLP教程(4) - 句法分析与依存解析
斯坦福NLP课程 | 第5讲 - 句法分析与依存解析
ShowMeAI为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制作成了GIF动图!
ShowMeAI
2022/05/05
1.5K0
斯坦福NLP课程 | 第5讲 - 句法分析与依存解析
句法依存分析背景 基本概念 及常用方法
句法结构分析又称短语结构分析(phrase structure parsing),也叫成分句法分析(constituent syntactic parsing),用于获取整个句子的句法结构;
大鹅
2021/12/21
2.2K0
论文赏析[TACL17]基于中序转移的成分句法分析
In-Order Transition-based Constituent Parsinggodweiyang.com
godweiyang
2020/03/24
4300
论文赏析[TACL17]基于中序转移的成分句法分析
高性能,依存句法解析器,基于三层神经网络模型
论文实现了一个准确快速的依存句法分析器( Dependency Parser),模型是三层神经网络,解决了三个目前普遍存在的语义分析难题。
double
2018/07/25
1.3K0
高性能,依存句法解析器,基于三层神经网络模型
成分句法分析综述(第二版)
成分句法分析近年来取得了飞速的发展,特别是深度学习兴起之后,神经句法分析器的效果得到了巨大的提升。一般来说,句法分析器都可以分为编码模型和解码模型两个部分。编码模型用来获取句子中每个单词的上下文表示,随着表示学习的快速发展,编码模型也由最初的LSTM逐渐进化为了表示能力更强的Transformer (VaswaniSPUJGKP17)。而解码模型方面,也诞生了许多不同类型的解码算法,比如基于转移系统(transition-based)的解码算法(WatanabeS15, CrossH16, LiuZ17a),基于动态规划(chart-based)的解码算法(SternAK17, KleinK18)和基于序列到序列(sequence-to-sequence)的解码算法(BengioSCJLS18, Gomez-Rodriguez18)等等。
godweiyang
2020/03/24
7540
成分句法分析综述(第二版)
【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
句法分析(syntactic parsing)是NLP中的关键技术之一,通过对输入的文本句子进行分析获取其句法结构。句法分析通常包括三种:
zenRRan
2019/07/04
9K0
【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
论文赏析[AI18]更快的基于非二叉化自底向上策略的转移系统成分句法分析
Faster Shift-Reduce Constituent Parsing with a Non-Binary, Bottom-Up Strategygodweiyang.com
godweiyang
2020/03/24
3350
论文赏析[AI18]更快的基于非二叉化自底向上策略的转移系统成分句法分析
依存句法分析器的简单实现
生成式句法分析指的是,生成一系列依存句法树,从它们中用特定算法挑出概率最大那一棵。句法分析中,生成模型的构建主要使用三类信息:词性信息、词汇信息和结构信息。前二类很好理解,而结构信息需要特殊语法标记,不做考虑。
IT小白龙
2018/10/17
1K0
依存句法分析器的简单实现
详解依存树的来龙去脉及用法
这开始介绍依存树的来龙去脉! 来历 a.简单的短语分词(正向逆向最大匹配,n-gram,机器学习...)(以单个词为重点) 比如: 猴子喜欢吃香蕉。->猴子 喜欢 吃 香蕉 。 b.由分词转向词性标注
zenRRan
2018/04/10
1.2K0
详解依存树的来龙去脉及用法
论文赏析[NAACL16]RNN文法
Recurrent Neural Network Grammarsgodweiyang.com
godweiyang
2020/03/24
5900
论文赏析[NAACL16]RNN文法
专栏 | 递归卷积神经网络在解析和实体识别中的应用
机器之心专栏 作者:触宝AI实验室Senior Engineer陈崇琛 在本文中,来自触宝科技的工程师介绍了如何在传统的解析算法中用上深度学习的技术。在实践中,深度学习减少了数据工程师大量的编码特征的时间,而且效果比人工提取特征好很多。在解析算法中应用神经网络是一个非常有前景的方向。 解析用户的真实意图 人类语言与计算机语言不同,人类的语言是没有结构的,即使存在一些语法规则,这些规则往往也充满着歧义。在有大量用户输入语料的情况下,我们需要根据用户的输入,分析用户的意图。比如我们想看看一个用户有没有购买某商品
机器之心
2018/05/10
1.5K0
【一分钟知识】依存句法分析
本文简要介绍了自然语言处理中极其重要的句法分析,并侧重对依存句法分析进行了重点总结,包括定义、重要概念、基本方法、性能评价、依存分析数据集,最后,分享了一些流行的工具以及工具实战例子。
zenRRan
2019/07/12
1.7K0
学习笔记CB006:依存句法、LTP、N-最短路径、由字构词分词法、图论、概率论
依存句法分析,法国语言学家L.Tesniere1959年提出。句法,句子规则,句子成分组织规则。依存句法,成分间依赖关系。依赖,没有A,B存在错误。语义,句子含义。
利炳根
2018/03/09
1.8K0
论文赏析[EMNLP18]针对自顶向下和中序移进归约成分句法分析的Dynamic Oracles
Dynamic Oracles for Top-Down and In-Order Shift-Reduce Constituent Parsinggodweiyang.com
godweiyang
2020/03/24
5930
论文赏析[EMNLP18]针对自顶向下和中序移进归约成分句法分析的Dynamic Oracles
论文赏析[ACL18]基于RNN和动态规划的线性时间成分句法分析
Linear-Time Constituency Parsing with RNNs and Dynamic Programminggodweiyang.com
godweiyang
2020/03/24
4400
论文赏析[ACL18]基于RNN和动态规划的线性时间成分句法分析
联合汉语分词和依存句法分析的统一模型:当前效果最佳
对此,传统的解决方案是采用基于转换的联合模型。但这些模型仍然具有不可避免的缺陷:特征工程和巨大的搜索空间。因此,本文提出一种基于图的统一模型来解决这些问题。
机器之心
2019/05/13
9720
联合汉语分词和依存句法分析的统一模型:当前效果最佳
【Hello NLP】CS224n笔记[4]:自然语言中的依存分析(Dependency Parsing)
SimpleAI 【HelloNLP】系列笔记,主要参考各知名网课(Stanford CS224n、DeepLearning.ai、李宏毅机器学习等等),并配合NLP的经典论文和研究成果、我的个人项目实践经验总结而成。希望能和各位NLP爱好者一起探索这颗AI皇冠的明珠!
beyondGuo
2020/03/25
1K0
推荐阅读
相关推荐
依存句法分析
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档