Coreference Resolution学习笔记(三):Mention Ranking模型与端到端的Coreference模型

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

导语

学习需要,对Coreference Resolution(指代消解)进行了解使用。本次学习资源为经典的斯坦福CS224n 2021课程,视频链接为:www.bilibili.com/video/BV18Y…

本篇博客沿着上一篇的思路继续介绍,主要分为以下几个部分:

  • Mention Ranking模型
  • CNN网络
  • 端到端的神经网络Coreference模型
  • Coreference Resolution的评价指标
  • 总结

Mention Ranking的Coreference模型

在了解了Mention Pair模型的缺点后,我们可以作出如下改进:

  • 根据模型预测,把得分最高的先行词分配给每个 mention
  • 设置一个虚拟的 NA mention ,允许模型拒绝将当前 mention 与任何内容联系起来(“singleton” or “first” mention)
    • first mention: I 只能选择 NA 作为自己的先行词

image.png

这里经过一个softmax后得到各个link的概率值。

image.png

只选取概率值最大的那个进行连边,而不是将所有的都连边。

image.png

image.png

那么我们如何计算这些概率呢?这里提供了三种方法:

  1. 使用非神经网络的统计分类器
  2. 简单的神经网络
  3. 更加高级的神经网络结构,如LSTM,attention,transformer等

image.png

非神经网络网络的方法可以使用很多统计特征,比如

  • 人、数字、性别
  • 语义相容性
  • 句法约束
  • 更近的提到的实体是个可能的参考对象
  • 语法角色:偏好主语位置的实体
  • 排比

image.png

标准的前馈神经网络方法中,输入层是候选先行词和当前指代词的词向量,还需要加入一些额外的特征(Additional Feature),也就是上面统计机器学习方法里用到的一些特征。中间是FFNN,即全连接网络,最后输出两个指代是coreference的概率。

image.png

  • 嵌入
    • 每个 mention 的前两个单词,第一个单词,最后一个单词,head word,…
      • head word是 mention 中“最重要”的单词—可以使用解析器找到它
      • 例如:The fluffy cat stuck in the tree中的cat
  • 仍然需要一些其他特征
    • 距离
    • 文档体裁
    • 说话者的信息

image.png

CNN网络

在这之后,manning又快速讲了一些cnn应用的内容。其核心思想为:如果我们为特定长度的每个可能的单词子序列计算向量会怎么样呢?

image.png

image.png

其整体思想与图像上应用CNN一致,即设置多个卷积核,然后滑动这个窗口,使得对应位置上元素和卷积核内对应位置元素相乘然后求和。同样也可以使用padding的操作使得应用Conv 1D后的size与开始相同。

image.png

image.png

最后,使用average pooling或者max pooling获得最终的输出结果。

image.png

Pytorch中的实现代码如下:

batch_size = 16
word_embed_size = 4
seq_len = 7
input = torch.randn(batch_size, word_embed_size, seq_len)
conv1 = Conv1d(in_channels=word_embed_size, out_channels=3,
kernel_size=3) # can add: padding=1
hidden1 = conv1(input)
hidden2 = torch.max(hidden1, dim=2) # max pool
复制代码

另一种将CNN应用在NLP中的普遍做法是将他们与字符级别的word embedding结合,用于组合生成新的word embedding。这样,模型将能够处理任意的单词而不会产生out of vocabulary的现象。很多人会将原始的word embedding和由character获得的embedding进行拼接来代表完整的词义embedding。

image.png

端到端的神经网络Coreference模型

Kenton Lee et al. from UW (EMNLP 2017) 是最早的完全摆脱了任何pipeline的,纯粹end-to-end方式的Coreference模型。但是由于缺乏mention detection步骤,所以在确定candidate mention时,该模型将任意长度不超过某个阈值的text span都当做了candidate mention。

image.png

神经网络的输入embedding是word embedding和character-level CNN得到的embedding的联合输入。

之后,输入经过一个Bi-LSTM得到隐层变量输出。

image.png

接着,需要计算每个span i的表示向量。比如General, General Electric, General Electric said, …, Electric, Electric said, 都将获得一个表示向量。

image.png

任意一个span的表示向量由4部分组成,这里以”the postal service“这个span为例,说明其计算过程:

  • x S T A R T x_{START}^{*} :这个span的起始位置对应的Bi-LSTM的隐层变量,即the对应的Bi-LSTM的输出变量
  • x E N D x_{END}^{*} :这个span的结尾位置对应的Bi-LSTM的隐层变量,即Service对应的Bi-LSTM的输出变量
  • x ^ i \hat{x}_{i} :基于attention的词表示,详细计算过程见后面
  • ϕ ( i ) \phi(i) :额外的feature,比如span长度等

其中,基于attention的词表示其实就是计算了span中最后一个词对于所有词的attention值后再进行加权求和,其基本思想就是attention,不熟悉的同学可以参考我之前的博客juejin.cn/post/708180… vector直接等于隐层变量h,而这里则多了个神经网络层处理,即

α t = w α F F N N α ( x t ) \alpha_{t}=\boldsymbol{w}_{\alpha} \cdot \mathrm{FFNN}_{\alpha}\left(\boldsymbol{x}_{t}^{*}\right)

image.png

得到context vector(这里即幻灯片上的 α t \alpha_t )后,做一个Softmax再加权求和即可得到最终表示输出。

image.png

获得所有span的特征向量 g i g_i 后,使用神经网络完成两个任务:

  1. 判断这个span是否是一个mention,即下面的公式1
  2. 判断任意两个span是否是coreference的关系,即下面的公式2
s m ( i ) = w m FFNN m ( g i ) s a ( i , j ) = w a FFNN a ( [ g i , g j , g i g j , ϕ ( i , j ) ] ) \begin{aligned} s_{\mathrm{m}}(i) &=\boldsymbol{w}_{\mathrm{m}} \cdot \operatorname{FFNN}_{\mathrm{m}}\left(\boldsymbol{g}_{i}\right) \\ s_{\mathrm{a}}(i, j) &=\boldsymbol{w}_{\mathrm{a}} \cdot \operatorname{FFNN}_{\mathrm{a}}\left(\left[\boldsymbol{g}_{i}, \boldsymbol{g}_{j}, \boldsymbol{g}_{i} \circ \boldsymbol{g}_{j}, \phi(i, j)\right]\right) \end{aligned}

这两个任务也分别用两个神经网络层来实现。

最终,对于任意两个span i和j,它们的打分公式如下图所示,包含三部分,分别表示三个意思:span i是一个mention的概率、span j是一个mention的概率、span i和span j是coreference的概率。

image.png

尽管这个模型是一个end2end的方法,能够同时完成mention detection和Coreference resolution两个任务,但它的复杂度过高。假设句子中有T个词,枚举所有span需要O(T^2)的复杂度,然后枚举任意两个span又需要O(T^2)的复杂度,综合起来就是O(T^4)的复杂度。

由于复杂度太高,这个模型需要一个剪枝过程,如设定span的最大长度,设置不同span之间判断的距离阈值等。

image.png

目前,最先进的SOTA模型借助于大规模预训练模型,比如BERT,SpanBERT等,取得了比以往方法都要好的结果。

image.png

Coreference Resolution的评价指标

Coreference Resolution的评价指标很多,主要有MUC、 B 3 B^3 ,BLANC等。这些评价指标的详情这里不介绍,有兴趣的同学可以参考web.stanford.edu/~jurafsky/s… score。

image.png

image.png

image.png

从上面的结果可以看到,最新的模型得分都比较高了。但是manning也说,这些数据集都是一些新闻数据集,主要是各个国家和地区的领导人之类的词语,因而比较简单,所以取得了不错的性能。实际应用中,Coreference Resolution系统还有很大提升空间。

总结

  • Coreference Resolution是一项有意义的,有挑战性的,语言学上富有趣味性的任务
    • 许多不同类型的Coreference Resolution系统被提出
    • 随着大规模预训练模型的应用,这些系统的性能在快速提升
    • 但大多数模型只是在OntoNotes数据集上表现很好,实际应用中仍有很大提升空间
  • 可以尝试自己设计一个Coreference系统

猜你喜欢

转载自juejin.im/post/7084097056042106888