http://arxiv.org/abs/2010.11304
用自适应阈值和局部上下文池化技术进行文档级关系抽取任务
与句子级关系抽取相比,文档级关系抽取(RE)提出了新的挑战。一个文档通常包含多个实体对,一个实体对在与多个可能的关系关联的文档中多次出现。在本文中,我们提出了两种新的技术,自适应阈值和局部上下文池,以解决多标签和多实体问题。自适应阈值法用一个可学习的实体相关阈值代替了之前工作中多标签分类的全局阈值。本地化上下文池直接将注意力从预先训练的语言模型转移到定位相关上下文,从而有助于确定关系。
目录
1 动机
- 在不同的实体对中,同一个实体的表示一样,忽略了实体的局部信息
- 在预测的关系概率值转换为关系标签时,需要用到阈值,而之前的方法时使用全局阈值,一个全局阈值不足以满足的不同实体对和类别,无法判断哪个阈值的效果最佳
2 改进
2.1 局部上下文池化:
2.1.1 目的
对动机1进行改进,为了使不同实体对中的同一实体得到额外的局部信息表示,以获取更好的实体对的局部信息表示
2.1.2 做法
1.获得预训练模型的注意力
2.对同一实体的提及的注意力进行平均,以获得实体级别的注意力
3.再将头实体和尾实体的注意力相乘,得到实体对的注意力
4.再通过实体对的注意力来获得对该实体对很重要的局部上下文表示
5.将获得的局部上下文表示添加到不同的全连接层中获得头实体和尾实体的隐藏状态
2.2 自适应阈值
2.2.1 目的
在本文中,我们提出了自适应阈值技术,用一个可学习的阈值类来代替之前的全局阈值。阈值类是通过我们的自适应阈值损失来学习的,对于不同的数据集,阈值类的值是不同的,是自适应的。
2.2.2 做法
1.将实体对划分为正类和负类,正类表示实体对之间存在的关系,负类表示实体对之间不存在的关系
2.如果一个实体对被分类正确了,那么出现在正例中的logit都要比阈值大,而出现在负类中的样本都应该比阈值小
3.根据2,定义出自适应阈值损失函数
2.2.3 注意
阈值是无法求得确定的,我们只是通过阈值损失函数的损失反向传播来更新模型的权重参数,阈值是无法确定的,不同的数据的阈值计算出来的不同,然后计算数据集的关系概率值logits张量,将张量的第一列即NA的概率值当作阈值类的值,通过与该值进行比较,比阈值大,当作预测出来的关系,若一行都比阈值小,则该实体对的关系为NA。具体的去看代码在losses.py文件中
3 模型的框架
一.Encoder
二.Localized Context Pooling
三 . Classifier
四 . Adaptive Thresholding
4 测试时
- 加载训练好的模型参数
- 将测试集放入模型中,得到预测的logits
- 第一列为阈值类,将logits的值和阈值作比较,若大于,则为预测的实体对关系。若一行中没有值大于阈值,则该实体对的的关系为NA
5 模型结果