paper: End-to-end Neural Coreference Resolution
code: https://github.com/kentonl/e2e-coref
文章目录:
文章词语解释
Abstract
- 想法:通过考虑文档中所有的span【文本中的子串/短语】以及学习每个span的可能的指代。
- 方法:通过计算span本身embedding表示和span边界的头注意力机制
- 训练目标:配合上剪枝,训练得到在共指簇中可能性最大的指代的span
- 实验表现:在ontonote5.0上F1提升1.5,集成5个的小技巧后,F1提升3.1
Introduction
- 解释了本文第一次使用了端到端的模型,这就意味着只需要考虑输入,通过模型即可得到输出,不需要像之前那样比如前面任务的分词,标注不到位影响模型效果
- 再次提到模型核心是向量的embedding表示
- 文档长度为L, 那么计算所有span的得分的复杂度就是L的四次方,不实际, 所以计算一元的mention【文本中的指代】得分,在mention 得分的基础上做剪枝,然后前值对得分的计算量就会减少很多
Task
- 假设对于某个文档表示为 D,文档中有 T 个word,文档中就有N个可能的span ()
- 对于某个span表示为 i ,它的头索引为START(i),尾索引为END(i),然后通过START(i)进行排序,如果START(i)相同,再比较END(i)进行排序。
- 对于某个span表示为 i,它对应的前值为,可以确定是span i的前面出现过的span或者没有前指(本身就没有/还没出现,在后面),所以 在集合 内。
- 的两种可能情况:(1) 某个span本身不是一个实体的mention【指代】,(2)span是实体的指代,但没和之前的span形成共指
Model
-
目标:使用条件概率分布,使得最有可能的共指簇概率最大:
- 表示在某个文档中,span i 和span j 共指的得分
- 计算:(1)span i 的得分 (2)span j 的得分 (3)span j 是 span i 的前指得分
- 当span i 没有前指时,的得分为0。
-
如何得到span的embedding表示(原论文是先讲计算得分,为了按顺序理解,进行了调换)
作者认为,对于某个span,它的上下文背景的指代span和他的span本身结构十分重要,每个span的起始word【head word】用注意力机制,用双向LSTM表示span的内部和外部的信息。
- 假设输入word i ,对应输入向量表示 【i 对应的预训练的word embedding和经过charCNN得到的embedding拼接的得到的embedding】——> LSTM
- 送入bi-LSTM,提取bi-LSTM中两个隐藏层向量,拼接起来作为 i 的特征向量 【包含 | 】——>注意力机制
- 对于,使用注意力机制对word的重要单词进行学习,分配不同权重得到 ——>进行向量拼接
- 包含4部分:span的起始和终止位置的特征向量【包含这个span的起始和终止位置的特征】;这个span的attention表示向量【提取这个span表示的核心信息,比如the black cat中cat是核心信息】;以及一些额外的特征。
-
如何计算得分
- 简单点说:让向量的表示【Embedding】经过一个全连接神经网络【FNN】,即获得得分
- 抽取了所有span的特征向量后,需要完成两个任务,一是判断这个span是否是一个指代,二是判断任意两个span是否是coreference的关系。对于任意两个span i和j,它们的打分公式如下图所示,包含三部分,分别表示三个意思:span i是一个指代吗、span j是一个指代吗、span i和span j是coreference关系吗。三部分的概率计算方法也是全连接网络FFNN的方法。
-
剪枝
- 计算完每个span的得分后,对得分高的保留,得分低的剪掉;对于保留下来的,每个span也只考虑指定个数的前指。降低计算量的同时,仍然有不错的召回率。
-
优化目标
-
通过真实的簇【gold clustering】,对于每个正确的前值的对数释然进行优化。(这里可以去论文或者代码细看,我觉得我不太能讲清楚)
-
整体算法流程
-
由下至上
Experiments
-
使用CoNLL-2012的英文指代消解英文数据集,训练集2802个文档,验证集343个文档,测试集348个文档。训练集平均每个文档有454个字,最长的文档有4009个字。
-
实验效果:
-
使用CoNLL-2012的英文指代消解英文数据集,训练集2802个文档,验证集343个文档,测试集348个文档。训练集平均每个文档有454个字,最长的文档有4009个字。
-
实验效果: