李宏毅DLHLP.19.Coreference Resolution

介绍

本门课程是2020年李宏毅老师新课:Deep Learning for Human Language Processing(深度学习与人类语言处理)
课程网站
B站视频
公式输入请参考:在线Latex公式
上节NLP tasks有提到过,常见的NLP任务又8类,但是有一些任务比较特殊,要单独讲,这节就来讲讲Coreference Resolution如何用DL的方式来解。
另外老师推荐了斯坦福的Dan Jurafsky写的:Speech and Language Processing (3rd)

Example for Coreference Resolution

共指消解、 指代消解、同指消解,例如老师给出的例子:
在这里插入图片描述
这个任务的作用是在QA任务中给出准确的答案。例如:
在这里插入图片描述
这个回答不准确,应该是钟佳播的拳头:
在这里插入图片描述

常见的Coreference Resolution任务是:Winograd Schema Challenge,例如:
在这里插入图片描述

The trophy would not fit in the brown suitcase because it was too big. What was too big?
Ans: Trophy
The trophy would not fit in the brown suitcase because it was too small. What was too small?
Ans: suitcase

概念

了解Coreference Resolution后,来看看在Coreference Resolution任务中几个概念:
某个词汇对应到具体的人物/东西,那么这个词就称为mention;
如果有两个mention指向同一个人物/东西,对应关系就叫corefer;有corefer的多个mention中第一个出现的mention叫:antecedent(先行词),后面出现的mention叫:anaphor。
如果有一个mention指向一个人物/东西,对应关系就叫singleton;
在这里插入图片描述

任务介绍

主要两个方面:
1.All the mentions are labeled. (sometimes singletons are ignored).mention有包含或者重叠关系,例如下面的【他的拳头】
2.The mentions are grouped into clusters.
在这里插入图片描述
既然该任务已经分解为两个步骤,下面来看如何用DL来分别解这两个问题。

Framework

Step 1: Mention Detection
把这个步骤看做二分类的问题,给定一段文字,然后读取某一个span,然后判断这个span是否是mention。
在这里插入图片描述
注意,这里吃的不是单个的token,而是要吃span
对于包含N个token的一句话,所包含的span数量最多为:
N ( N − 1 ) 2 \cfrac{N(N-1)}{2} 2N(N1)
用穷举的方式划分好span后就可以训练,这里有label好的数据直接train即可:
在这里插入图片描述
Step 2: Mention Pair Detection
这个步骤也可以用二分类的思路来解:
在这里插入图片描述
二分类器吃两个mention作为输入,然后判断这两个mention是否指向同一个实体。例如:
在这里插入图片描述
如果有K个mention,那么二分类器就要比较 K ( K − 1 ) 2 \cfrac{K(K-1)}{2} 2K(K1)次。

End-to-end

虽然分成两个步骤,并且用二分类器分开解决是没有问题,但是要想实现端到端如何做?思路就是要把两个二分类器结合到一起变成一个二分类器:
这个二分类器吃两个span(两个sequence的subsequence)
在这里插入图片描述
输出YES的条件是:
1.两个输入都是mention;
2.两个mention都指向同一个实体。
如果sequence有N个token,共有 N ( N − 1 ) 2 = K \cfrac{N(N-1)}{2}=K 2N(N1)=K个span,二分类器要运行 K ( K − 1 ) 2 \cfrac{K(K-1)}{2} 2K(K1)
因此其算法时间复杂度为: O ( n 4 ) O(n^4) O(n4)
训练过程如下:
在这里插入图片描述
这里忽略了 Mention Ranking Model ,具体可以参考Speech and Language Processing (3rd)的22.4
下面来看具体的模型细节。
显示将sequence过一下预训练模型(ELMo, BERT都可),可以看到预训练模型是看过整个sequence之后吐出的embedding。
在这里插入图片描述
然后将embedding经过Span Feature Extraction模块,通过这个模块把输入的span的多个embedding(绿色)汇聚为一个embedding(蓝色),这里不用担心蓝色embedding忽略全局信息,因为之前预训练模型已经讲全局信息处理到绿色embedding里面了。
在这里插入图片描述
然后会有mention detection模块,吃一个蓝色embedding,然后给出这个embedding是不是span的结论(是一个分数)。
在这里插入图片描述

然后有一个mention pair detection的模块,判断两个蓝色的embedding是不是指向同一实体,同样这个模块输出也是一个分数。
在这里插入图片描述
最后将三个分数整合起来(这里用的是sum,也可以用别的方法。),如果满足2个条件,我们希望这个输出越大越好。
在这里插入图片描述

Span Feature Extraction

下面详细看看上面提到的Span Feature Extraction模块:
在这里插入图片描述
假设有四个embedding: x 1 , x 2 , x 3 , x 4 x^1,x^2,x^3,x^4 x1,x2,x3,x4
在这里插入图片描述
然后单独加一个attention模块,就是上图中的蓝色部分,得到每个embedding应该对应的权重: α 1 , α 2 , α 3 , α 4 \alpha^1,\alpha^2,\alpha^3,\alpha^4 α1,α2,α3,α4,有了权重之后就是加权求和:

在这里插入图片描述
然后将求和结果,与span的首尾两个embedding进行concat,就得到最后的Span Feature Extraction结果:
在这里插入图片描述

Practical Implementation

前面介绍方法中,我们估计出来算法时间复杂度是 O ( n 4 ) O(n^4) O(n4),还蛮大,下面看下实作过程中如何进行优化。
可以把上面端到端的训练按原始思路做两步,第一步先运行 mention detector N ( N − 1 ) 2 = K \cfrac{N(N-1)}{2}=K 2N(N1)=K次,这里得到K个span,那么如果 K < < N K<<N K<<N那么可以大幅减少运算。复杂度为 O ( n 2 ) O(n^2) O(n2)
此外,对mention长度做一个限制,例如不超过10个token,那么也会大大减少运算。复杂度为 O ( 10 n ) = O ( n ) O(10n)=O(n) O(10n)=O(n)
最后模型只用跑 K ( K − 1 ) 2 \cfrac{K(K-1)}{2} 2K(K1)

Seq2Seq思路

前面讲了如何端到端解决Coreference Resolution,老师给出了另外一篇19年的文章中的Seq2Seq思路。这个文章本来是解决QA问题的,在常见的QA任务中,模型通常不会去记忆历史对话,因而在问答过程中常常效果会差,例如:

对话内容
对话1Human:梅西有多高?
Human:How tall is Messi
对话2ChatBot:官方说法的身高是5英尺7英寸。
ChatBot:Officially he is 5ft 7 inches.
对话3Human:和C罗谁是最好的球员?
Human:Who is the best,he or C.Ronaldo?

在第三句话中,人提问中的【他】是指梅西,但是普通的QA模型不会解这个问题,因此这篇文章就提出一个Seq2Seq的训练方式,将上面三句话作为一个sequence丢入模型,Seq2Seq模型会吐出一个等价的问题:
Human:梅西和C罗谁是最好的球员?
Human:Who is the best,Messi or C.Ronaldo?
Seq2Seq模型学习到的东西就是如何将代名词替换为某一个名词。
最后得到的结果再由QA模型来求解。

Advanced Topics

这里有两个内容是本节没有深入讨论的,这里简单提一下:

Global Information

在这里插入图片描述
本节讲的End-to-end方法在抽取Coreference Resolution的信息的时候,没有考虑全局信息,例如上图中,由于没有考虑全局信息,第一次和第二次分别抽取到两个corefer,分开来看是没毛病,但是放到一起就有问题了,明显Mr.和she是不可能指代同一个人。因此有文章专门解决这个问题,要考虑全局的信息。

Unsupervised

在这里插入图片描述
Using pre-train model to fill-in the blank.
另外一个就是使用无监督的训练方式来解决指代问题,例如上图那个地方本来是个代词【he】,但是我们不知道这个代词指的是谁,因此用mask盖住,然后让预训练模型例如BERT,来填/预测这个词,这里可以做限制不让它填代词,这样就把指代任务给搞定了。

Reference

• [Lee, et al., EMNLP’17] Kenton Lee, Luheng He, Mike Lewis, Luke Zettlemoyer, End-to-end Neural Coreference Resolution, EMNLP, 2017
• [Su, et al., ACL’19] Hui Su, Xiaoyu Shen, Rongzhi Zhang, Fei Sun, Pengwei Hu, Cheng Niu, Jie Zhou, Improving Multi-turn Dialogue Modelling with Utterance ReWriter, ACL, 2019
• [Wu, et al., ACL’20] Wei Wu, Fei Wang, Arianna Yuan, Fei Wu, Jiwei Li, Coreference Resolution as Query-based Span Prediction, ACL, 2020
• [Lee, et al., NAACL’18] Kenton Lee, Luheng He, and Luke Zettlemoyer, Higherorder coreference resolution with coarse-to-fine inference, NAACL, 2018
• [Joshi, et al., EMNLP’19] Mandar Joshi, Omer Levy, Luke Zettlemoyer, Daniel Weld, BERT for Coreference Resolution: Baselines and Analysis, EMNLP, 2019
• [Kantor, et al., ACL’19] Ben Kantor, Amir Globerson, Coreference Resolution with Entity Equalization, ACL, 2019
• [Kocijan, et al., EMNLP’19] Vid Kocijan, Oana-Maria Camburu, Ana-Maria Cretu, Yordan Yordanov, Phil Blunsom, Thomas Lukasiewicz, WikiCREM: A Large Unsupervised Corpus for Coreference Resolution, EMNLP, 2019

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

oldmao_2000

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

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

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

打赏作者

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

抵扣说明:

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

余额充值