李宏毅DLHLP.23.Constituency Parsing.1/2

文章目录

  • 介绍
    • Constituency Parsing - Labels
  • 法1.Chart-based Approach
    • Chart-based – Classifier
  • 法2.Transition-based
  • 法3.seq2seq:Grammar as a Foreign Language

介绍

本门课程是2020年李宏毅老师新课:Deep Learning for Human Language Processing(深度学习与人类语言处理)
课程网站
B站视频
公式输入请参考:在线Latex公式
Parsing有两种,一种是本节要学的Constituency Parsing,一种是Dependency Parsing,这个先挖坑。
Constituency Parsing概念:
• Some text spans are constituents (“units”)就是一些token的组合constituents (这个可以看做一种单位,也可以是单个token)
• Each constituent has a label.
例如:
李宏毅DLHLP.23.Constituency Parsing.1/2_第1张图片
在语言学上有方法来判断constituent

Constituency Parsing - Labels

李宏毅DLHLP.23.Constituency Parsing.1/2_第2张图片
我们可以把单个token看做constituent,然后进行组合,得到对应的标签,可以组合多次,形成一种树状结构。
李宏毅DLHLP.23.Constituency Parsing.1/2_第3张图片
• Each word is a constituent (their labels are POS tags)
• Some consecutive constituents can form a larger one.
现在就是要解决如果将一句话对应到正确的constituent。

法1.Chart-based Approach

方法一,这个方法思想来自CKY chart parsing: A Dynamic Programming Approach(https://web.stanford.edu/~jurafsky/slp3/13.pdf),具体不展开:
李宏毅DLHLP.23.Constituency Parsing.1/2_第4张图片
这个方法就是训练一个分类器,这个分类器可以吃一个span,然后做两个事情:
李宏毅DLHLP.23.Constituency Parsing.1/2_第5张图片
例如:
李宏毅DLHLP.23.Constituency Parsing.1/2_第6张图片

李宏毅DLHLP.23.Constituency Parsing.1/2_第7张图片

Chart-based – Classifier

分类结构如下图:
李宏毅DLHLP.23.Constituency Parsing.1/2_第8张图片
序列先通过预训练模型得到序列对应的预训练向量,然后选取我们关心的部分,例如上图中我们关心w4-w7,然后将这几个token对应的预训练向量丢得到一个Span Feature Extraction中,得到一个向量表示,然后这个向量分别进入Constituent Classifier(FC结果)和Label Classifier得到最后的分类结果。
在训练的时候,有给定的Constituent树形groud truth,就可以端到端的训练。
• Given a sequence with N N N tokens, then run the classifier N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2 times ……
但是在训练的过程中经常会遇到如下问题:
李宏毅DLHLP.23.Constituency Parsing.1/2_第9张图片
可以看到模型在判断Constituent的时候子序列之间有重合(上例中is是重合的),那么就没有办法生成树形结构了(树的结构中兄弟节点是不会有直接关系。)
解决方法是先将所有可能的(合法的)Constituent树形结构,然后训练一个分类器来判断哪个树形结构得分最高。例如:
李宏毅DLHLP.23.Constituency Parsing.1/2_第10张图片
这里用的就是 CKY algorithm.
另外一个对应Constituent的方法就是:

法2.Transition-based

有Stack、Buffer、Actions三部分,具体如下:
李宏毅DLHLP.23.Constituency Parsing.1/2_第11张图片
下面一步步的列举Transition的步骤,初始状态为:
stack中是空的
在这里插入图片描述
buffer中是一句话
在这里插入图片描述
根据buffer,模型采取的第一个action是CREATES(S),括号中的S代表创建一个Sentence
在这里插入图片描述
然后在stack中得到:
在这里插入图片描述
接下来创建NP
在这里插入图片描述
然后在stack中得到:
在这里插入图片描述
接下来根据stack和buffer中的内容采取SHIFT这个action
在这里插入图片描述
stack变成:
在这里插入图片描述
buffer变成:
在这里插入图片描述
接下来根据stack和buffer中的内容采取SHIFT这个action
在这里插入图片描述

stack变成:
在这里插入图片描述

buffer变成:
在这里插入图片描述
接下来根据stack和buffer中的内容采取REDUCE这个action
在这里插入图片描述
stack变成:
在这里插入图片描述
buffer不变。
以此类推,最后buffer为空,stack和action为:
李宏毅DLHLP.23.Constituency Parsing.1/2_第12张图片
这个方法中最重要的就是如何根据stack和buffer来决定采用什么样的action:
李宏毅DLHLP.23.Constituency Parsing.1/2_第13张图片
stack和buffer,以及之前采用的action都属于序列,因此,可以用rnn来读取,然后得到序列的向量表示,丢进一个network,然后由它来决定采用哪种action。训练过程如下:
李宏毅DLHLP.23.Constituency Parsing.1/2_第14张图片
因为有label(具体的action),可以直接训练。可以看做一般的分类任务,不需要RL。
第三种方法和Transition-based方法其实差不多,叫:

法3.seq2seq:Grammar as a Foreign Language

是15年nips上谷歌的一篇文章,《Grammar as a Foreign Language》,就是用seq2seq模型将从句子提取constituent的任务看做翻译,然后训练模型。
先将树形结构表示为序列:Tree to Sequence
李宏毅DLHLP.23.Constituency Parsing.1/2_第15张图片
例如上面的结构,一般是从上到下,从左到右,有点类似二叉树的中序遍历。最后结果如下:
李宏毅DLHLP.23.Constituency Parsing.1/2_第16张图片
其中右括号表示其子树遍历完毕。
当然还可以用别的方式进行遍历。
将法2和法3放在一起然后对比一下:
Seq2seq v.s. RNN grammar
李宏毅DLHLP.23.Constituency Parsing.1/2_第17张图片
二者产生的结果不同,但是他们的结果是一一对应的Seq2seq的每个token都对应RNN grammar的一个action。
这里原始Seq2seq方法中,输出中不会涉及具体文字,而是用X来代替文字,就好比RNN grammar中用shift来表示要输出文字。
还有无监督的Parsing,老师只给了链接:https://youtu.be/YIuBHB9Ejok

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