句法分析:依存分析(Dependency Parsing)_满腹的小不甘
文章推薦指數: 80 %
依存关系分析,又称依存句法分析(dependency syntactic parsing),简称依存分析,作用是识别句子中词汇与词汇之间的相互依存关系。
依存句法分析属于 ...
句法分析:依存分析(DependencyParsing)
满腹的小不甘_静静
于 2020-12-1610:11:05 发布
5605
收藏
29
分类专栏:
自然语言处理
文章标签:
自然语言处理
原文链接:https://zhuanlan.zhihu.com/p/147321515
版权
自然语言处理
专栏收录该内容
44篇文章
8订阅
订阅专栏
目录
1.句法分析任务分类
2.依存分析方法
2.1什么是依存分析
2.2传统的基于转移的依存分析(Transition-basedParsing)
2.3神经依存分析(NeuralDependencyParsing)
句法分析(syntacticparsing)是自然语言处理中的关键技术之一,它是对输入的文本句子进行分析以得到句子的句法结构的处理过程。
对句法结构进行分析,一方面是语言理解的自身需求,句法分析是语言理解的重要一环,另一方面也为其它自然语言处理任务提供支持。
例如句法驱动的统计机器翻译需要对源语言或目标语言(或者同时两种语言)进行句法分析;语义分析通常以句法分析的输出结果作为输入以便获得更多的指示信息。
1.句法分析任务分类
根据句法结构的表示形式不同,最常见的句法分析任务可以分为以下三种:
句法结构分析(syntacticstructureparsing),又称短语结构分析(phrasestructureparsing),也叫成分句法分析(constituentsyntacticparsing)。
作用是识别出句子中的短语结构以及短语之间的层次句法关系。
依存关系分析,又称依存句法分析(dependencysyntacticparsing),简称依存分析,作用是识别句子中词汇与词汇之间的相互依存关系。
依存句法分析属于浅层句法分析。
深层文法句法分析,即利用深层文法,例如词汇化树邻接文法(LexicalizedTreeAdjoiningGrammar,LTAG)、词汇功能文法(LexicalFunctionalGrammar,LFG)、组合范畴文法(CombinatoryCategorialGrammar,CCG)等,对句子进行深层的句法以及语义分析。
2.依存分析方法
基于规则的方法:早期的基于依存语法的句法分析方法主要包括类似CYK的动态规划算法、基于约束满足的方法和确定性分析策略等。
基于统计的方法:统计自然语言处理领域也涌现出了一大批优秀的研究工作,包括生成式依存分析方法、判别式依存分析方法和确定性依存分析方法,这几类方法是数据驱动的统计依存分析中最为代表性的方法。
基于深度学习的方法:近年来,深度学习在句法分析课题上逐渐成为研究热点,主要研究工作集中在特征表示方面。
传统方法的特征表示主要采用人工定义原子特征和特征组合,而深度学习则把原子特征(词、词性、类别标签)进行向量化,在利用多层神经元网络提取特征。
https://www.jianshu.com/p/24e0d53b1ee2
https://blog.csdn.net/qq_28031525/article/details/79187080
用语言云分析依存句法和语义依存:语言云工具
生成句法分析树:基于概率上下文无关文法(PCFG)
2.1什么是依存分析
自然语言处理任务中,有很重要的一块,就是分析语言的结构。
语言的结构,一般可以有两种视角:
组成关系(Constituency)依赖关系(Dependency)
前者,主要关心的是句子是怎么构成的,词怎么组成短语。
所以研究Constituency,主要是研究忽略语义的“语法”结构(content-freegrammars)。
后者,依赖关系,则主要关心的是句子中的每一个词,都依赖于哪个其他的词。
比如下面这个句子:
“瞧这个可爱的小傻瓜!”
“傻瓜”,是“瞧”这个动作的对象,因此“傻瓜”是依赖于“瞧”的;“可爱的”、“小”都是修饰“傻瓜”的,因此,这两个形容词都是依赖于“傻瓜”的;“这个”同样是指示“傻瓜”的,因此它也依赖于“傻瓜”。
这样,我们就清楚了这个句子中的所有依赖关系,画成依赖关系图则是这样:
注意,在图中我们增加了一个根节点“Root”,这是为了让“瞧”这个字也有依赖的对象。
当然,关系依存分析,还有很多的规则,里面比较复杂,我不太感兴趣,所以这里不多写了。
下面我们来介绍如何让机器自动地帮我们来分析句子的结构。
DependencyStructure展示了词语之前的依赖关系,通常用箭头表示其依存关系,有时也会在箭头上标出其具体的语法关系,如是主语还是宾语关系等。
DependencyStructure有两种表现形式:
一种是直接在句子上标出依存关系箭头及语法关系,如:
另一种是将其做成树状机构(DependencyTreeGraph)
DependencyParsing可以看做是给定输入句子 (其中常常是fakeROOT,使得句子中每一个词都依赖于另一个节点)构建对应的DependencyTreeGraph的任务。
而这个树如何构建呢?一个有效的方法是Transition-basedDependencyParsing。
2.2传统的基于转移的依存分析(Transition-basedParsing)
这里主要介绍Nivre在2003年提出的“GreedyDeterministicTransition-basedParsing”方法,一度成为依存分析的标准方法。
这里我简单地介绍一下它的工作原理。
我们构造一个三元组,分别是Stack、Buffer和一个DependencySet。
Stack:最开始只存放一个Root节点;Buffer:则装有我们需要解析的一个句子;Set:中则保存我们分析出来的依赖关系,最开始是空的。
state之间的transition有三类:
https://zhuanlan.zhihu.com/p/66268929
我们要做的事情,就是不断地把Buffer中的词往Stack中推,跟Stack中的词判断是否有依赖关系,有的话则输出到Set中,直到Buffer中的词全部推出,Stack中也仅剩一个Root,就分析完毕了。
下面,我通过一个十分简单的例子,来演示这个过程。
这次,我们分析的句子是:
分析过程如下:
上面的过程怎么理解呢?
比方从第二行,这个时候Stack中只有[Root,I],不构成依赖关系,所以我们需要从Buffer中“进货”了,因此采取的Action是Shift(把Buffer中的首个词,移动到Stack中),于是就到了第三行。
第三行,我们的Stack变成了[Root,I,love],其中I和Love构成了依赖关系,且是Love指向I,即“向左指”的依赖关系,因此我们将采取“LeftArc”的action,把被依赖的词(此时就是关系中的左边的词)给移除Stack,把这个关系给放入到DependencySet中。
按照这样的方法,我们一直进行,不断地根据Stack和Buffer的情况,来从Shift、Left-arc、Right-arc三种动作中选择我们下一步应该怎么做,直到Stack中只剩一个Root,Buffer也空了,这个时候,分析就结束,我们就得到了最终的DependencySet。
以上的过程,应该不难理解,但是相信大家此时一定会有疑问:
❝我怎么让机器去决定当前的Action呢?即机器怎么知道,Stack中是否构成了依赖关系?
❞
在Nivre的年代,这里使用是机器学习的方法,需要做繁重的特征工程.这里的特征,往往有个二值特征,即无数个指示条件作为特征,来训练模型,可以想象这么高纬度的特征是十分稀疏的。
因此,这种模型的95%左右的解析时间,都花费在计算特征上。
这也是传统方法的最要问题。
2.3神经依存分析(NeuralDependencyParsing)
神经依存分析方法,是斯坦福团队2014年的研究成果,主要就是利用了神经网络的方法代替了传统机器学习方法、用低维分布式表示来代替传统方法的复杂的高维稀疏特征表示。
而整个解析的过程,依然是根据之前的Transition-based方法。
首先明确,我们的预测任务,是「根据当前的状态,即Stack、Buffer、Set的当前状态,来构建特征,然后预测出下一步的动作」。
在神经依存分析中,我们的特征是怎么构建的呢?我们可以利用的信息包括词(word)、词性(postag)和依赖关系的标签(label)。
我们对这三者,都进行低维分布式表示,即通过Embedding的方法,把离散的word、label、tag都转化成低维向量表示。
对于一个状态,我们可以选取stack、Buffer、set中的某些词和关系,构成一个集合,然后把他们所有的embedding向量都拼接起来,这样就构成了该状态的特征表示。
至于选择哪些词、关系,这个就是一个「经验性」的东西了,在斯坦福的论文中可以详细了解。
整个模型的网络结构也十分简洁:
对于DependencyParsing的简单介绍就到此为止。
依存分析,并不是我们NLP中最常见的任务之一,我们也很少看到直接将依存分析做应用的,我们更常见的是分类、实体识别、阅读理解、对话等任务。
但是依存分析,作为自然语言处理的一项基础技术,试图让机器去理解语言的内部结构,理解了结构,NLU(NaturalLanguageUnderstanding)才成为可能。
CS224N的Assignment3就是NeuralDependencyParsing的实现,代码见github:https://github.com/beyondguo/CS
满腹的小不甘_静静
关注
关注
8
点赞
踩
0
评论
29
收藏
扫一扫,分享内容
点击复制链接
专栏目录
参与评论
您还未登录,请先
登录
后发表或查看评论
©️2022CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
满腹的小不甘_静静
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
126
原创
3万+
周排名
5859
总排名
95万+
访问
等级
7080
积分
494
粉丝
797
获赞
137
评论
4460
收藏
私信
关注
热门文章
R语言:summary()函数解读
76257
TCN-时间卷积网络
71332
R语言:rep函数解析
69533
R语言:cbind()和rbind()
59088
ZooKeeper的JavaAPI客户端异常:org.apache.zookeeper.KeeperException$ConnectionLossException:KeeperErrorC
40324
分类专栏
命名实体识别_分词_NLP原理
付费
7篇
RASA学习
付费
Python
11篇
工程
4篇
非专业知识总结
PaddlePaddle
深度学习
23篇
机器学习
26篇
自然语言处理
44篇
统计分析
25篇
R语言
16篇
时间序列
18篇
人工智能
9篇
HTML笔记
MyEclipse常见问题
8篇
Java
6篇
数据结构
3篇
Linux
2篇
ios
1篇
C\C++
4篇
资料包
最新评论
语言模型常用评价方法:perplexity、bleu
Ji_Huai:
min(7,2)=1应该错了吧
R语言:summary()函数解读
花岗岩452:
啥呀
tokenizersinTransformers:BPE、WordPiece,SentencePiece
LawsonAbs:
推荐阅读huggingface出品的分词方法叙述
文本特征提取:词袋模型/词集模型,TF-IDF
爱踢球的猕猴桃:
表示位置啊,就是相当于第零行第八列
文本特征提取:词袋模型/词集模型,TF-IDF
YQiuYing:
请问你知道,tfidf结果里面的(0,8)那些是什么意思吗?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
损失函数:交叉熵&LabelSmoothing标签平滑
fasttext
自然语言理解难在哪儿?
2022年4篇
2021年17篇
2020年33篇
2019年84篇
2018年3篇
2017年19篇
2016年1篇
目录
目录
分类专栏
命名实体识别_分词_NLP原理
付费
7篇
RASA学习
付费
Python
11篇
工程
4篇
非专业知识总结
PaddlePaddle
深度学习
23篇
机器学习
26篇
自然语言处理
44篇
统计分析
25篇
R语言
16篇
时间序列
18篇
人工智能
9篇
HTML笔记
MyEclipse常见问题
8篇
Java
6篇
数据结构
3篇
Linux
2篇
ios
1篇
C\C++
4篇
资料包
目录
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值
延伸文章資訊
- 1《自然語言處理入門》12.依存句法分析--提取使用者評論
常見的英文樹庫有賓州樹庫,相應地,中文領域有CTB。 ... 依存句法分析( dependency parsing )指的是分析句子的依存語法的一種中高階NLP任務,其輸人 ...
- 2自然语言处理:依存句法解析(Dependency Parsing)
- 3CS224n笔记6 句法分析-码农场 - Hankcs
估计是在某个图上逐步删除不符合要求的边,直到成为一棵树。 “Transition-based parsing” or “deterministic dependency parsing”. 主流...
- 4詳解Transition-based Dependency parser基於轉移的依存句法 ...
Joint POS Tagging and Dependency Parsing with Transition-based Neural Networks. ... 中文任務全面超越BERT:...
- 5dependency parsing 中文- 相依剖析依存關系句法分析
dependency parsing中文:相依剖析…,點擊查查權威綫上辭典詳細解釋dependency parsing的中文翻譯,dependency parsing的發音,音標,用法和例句等。