Chapter7-8_Deep Learning for Constituency Parsing

本文为李弘毅老师【Deep Learning for Constituency Parsing】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 7-7 Deep Learning for Coreference Resolution

下篇 - 7-9 Deep Learning for Dependency Parsing

总目录

1 什么是Constituency Parsing

Constituency parsing要做的事情就是解析出句子中所有的constituents。constituent在英文字典中的意思是“成分”,而在我们这次的这个场景中可以理解为句子中的一个“单元”。比如下面这句话中,“deep learning"就是一个constituent,“very powerful"也是一个constituent,甚至每一个单词都是一个"constituent”。但是"learning is very"这样狗屁不通的句子就不是"constituent”。一种感性的理解,只要读的通的,就是"constituent"。
ch7-8-1

每个constituent在语言学中都有对应的专有名词(POS tags),比如"deep learning"就是NP(Noun phrase),"very power"就是ADJP(Adjective phrase)等等。多个constituents可以组成一个更大的constituent。这也就构成了一棵树的结构,每个节点都是我们要找的constituent。为了简化,本文只考虑二叉树的情况。
ch7-8-2

那么,到底有哪些constituents呢?可见下表。
ch7-8-3

2 解决方案

用deep learning的方法来解决Constituency Parsing的问题有两个方案,一个是Chart-based Approach,另一个是Transition-based Approach。

2.1 Chart-based Approach

chart-based方法很直接,就是遍历句子里的所有spans,然后对每个span做两次分类,先推测这个span是不是一个constituent,如果是的话,再推测这个constituent的词性是什么。
ch7-8-4
模型的结构和上一篇中的Coreference Resolution很像。就是把整个句子过一个预训练的模型,然后对模型的输出取一个感兴趣的span,抽取这个span的特征,再送入刚才说的两个分类器当中。
ch7-8-5
如果要遍历所有的span的话,就要遍历N(N-1)/2次,这样做会有一个大问题,就是当模型认为"deep learning is"和"is very powerful"都是constiuent的时候,模型就自相矛盾了。
ch7-8-6

所以,实际情况下,并不是去遍历所有的spans,而是去遍历所有的树结构。然后取总置信度最高的那棵树来作为最终的那棵树。而去遍历所有的树的时候,会有许多需要重复计算的子节点,这就是一个典型的动态规划问题了。有个叫做CKY的算法就是来解决遍历树这个问题的。
ch7-8-7

2.2 Transition-based Approach

Transition-based方法有三个状态,一个叫做stack,用来存储已经操作过的元素;一个叫做buffer,用来存储还未操作的句子;还有一个叫做actions,表示着可以采取的动作。动作有"create",“shift"和"reduce"三种。“create"表示一个词性的开始,将移入stack当中,比如NP从这个位置开始。“shift"表示将buffer中的一个单词移入stack当中。“reduce"表示一个词性的结束,结束符也将移入stack当中。
ch7-8-9
比如下图当中,每一步采取的action在下半图,每一个action的结果将保存在上半图的stack当中。首先create了一个”(s"表示"s"从这里开始,然后create了一个”(NP"表示"NP"从这里开始,接着两个shift,把"deep"和"learning"放入stack当中,接着一个"reduce”,表示"NP"的结束,即"deep learning"是一个"NP”,以此类推,直到全部结束。
ch7-8-10
这个方法的网络结构如下,就是将"stack","previous actions"和"buffer"分别过一个RNN,然后将这三个结果再一起过一个分类网络,输出要采取什么action,接着根据action更新状态,如此循环,直到结束。
ch7-8-11
看到有action,很多人可能会联想到强化学习,难道训练的时候要用强化学习的方法吗?不用!这就是一个简单的分类任务。因为我们的ground truth明确地告诉了我们这一步要输出什么action,所以只要每一步做分类就可以了。
ch7-8-12

2.3 Grammer as Foreign Language

还有一种直接用seq2seq的方法去做的,这种方法的关键就在于构造输出的结果是什么。一种构造方法如下图所示,自顶向下,由左向右,构造出来的和刚才Transition-based Approach的简直一模一样。只不过这里是直接用seq2seq去做的。
ch7-8-13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七元权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值