李宏毅DLHLP.24.Constituency Parsing.2/2

文章目录

  • 介绍
    • Dependency Parsing概念
    • 任务描述
    • 法1:Graph-based Approach
  • 法2:Transition-based Approach

介绍

本门课程是2020年李宏毅老师新课:Deep Learning for Human Language Processing(深度学习与人类语言处理)
课程网站
B站视频
公式输入请参考:在线Latex公式
Parsing有两种,一种是Constituency Parsing,一种是Dependency Parsing,第一种上节已讲,这节来看后面这个。

Dependency Parsing概念

相对于Constituency Parsing是关心两两之间相邻的token是否存在constituent关系:
李宏毅DLHLP.24.Constituency Parsing.2/2_第1张图片

Dependency Parsing则关心句子中存在某种关系的token,而位置可以不相邻:
李宏毅DLHLP.24.Constituency Parsing.2/2_第2张图片
例如上图中book和flight有某种关系,我们把这种关系中的起始词称为:head,后面的称为:dependent。下图列举了常见的词汇关系:
李宏毅DLHLP.24.Constituency Parsing.2/2_第3张图片

任务描述

把一个句子变成一个无向图,图中节点为词,边为词之间的关系,例如:
在这里插入图片描述
将这句话每个词关系标记起来如下图所示,注意有箭头,分别代表了起始词和结束词,里面每一个词都有对应一个起始词,除了want,因此为want加上一个ROOT,可以看到这个图实际上是一个树形结构,且有如下特征:
• All the words have one incoming edge, except ROOT.
• There is a unique path from each word to ROOT.
李宏毅DLHLP.24.Constituency Parsing.2/2_第4张图片

法1:Graph-based Approach

跟Constituency Parsing一样,也是训练一个分类器,吃两个token,第一个分类器吐出这两个词是否有指向关系,如果有那么第二个分类器吐出指向关系是什么类型。
李宏毅DLHLP.24.Constituency Parsing.2/2_第5张图片
具体例子如下图:
李宏毅DLHLP.24.Constituency Parsing.2/2_第6张图片
假设我们有N个词,那么分类器最多要判断 ( N + 1 ) 2 (N+1)^2 (N+1)2次(1是哪个ROOT,这里没有减去自己和自己进行匹配,ROOT被别的词指向的次数)
下图是18年某篇文章的实作:
李宏毅DLHLP.24.Constituency Parsing.2/2_第7张图片
在实作上是用token的独热编码,丢BiLSTM里面(那时还没有BERT)然后得到每个token的特征表示,然后将两个token的特征表示丢进FC,进行linear transform,然后计算一个分数(看上去与attention很像),然后根据分数判断两个token是否有指向关系。与Constituency Parsing同样的,这个方法也会存在有时候生成结果无法构成树,例如:
李宏毅DLHLP.24.Constituency Parsing.2/2_第8张图片
可以看到 W 2 W_2 W2有两个父节点(两个词都指向它),这个是不合理的,在Constituency Parsing中,是用CKY算法来解决这个问题,这里我们可以用spanning tree来解决(熟悉路由与交换的知道,这个是解决路由环路的一个协议。)例如:
李宏毅DLHLP.24.Constituency Parsing.2/2_第9张图片
这里分类器为每个关系会输出一个分数,下面把两种情况分别列举,然后看哪个的分数高:
李宏毅DLHLP.24.Constituency Parsing.2/2_第10张图片
这里的例子只有两个词,比较简单,如果词很多的时候穷举效率比较低,就要用专门的Maximum Spanning Tree算法来解。

法2:Transition-based Approach

与Constituency Parsing一样,也是可以用Transition-based方法来解这个问题,下面是具体例子,同样有:A stack, a buffer, some actions
李宏毅DLHLP.24.Constituency Parsing.2/2_第11张图片
具体的训练方法很早就有,基本思想也是把stack,buffer,actions 丢到模型里面去训练
李宏毅DLHLP.24.Constituency Parsing.2/2_第12张图片
比较有名的是:SyntaxNet(谷歌16年5月的作品),里面有个动画,可以自己看看:
https://ai.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html
当然后面还有更好的模型:Stack Pointer等,就不展开了。

你可能感兴趣的:(李宏毅.DLHLP2020)