《An End-to-end Model for Entity-level Relation Extraction using Multi-instance Learning》阅读笔记
- 从句子级层面的抽取转向了从长文本段落(文档级)的抽取,这样可以利用更多的上下文信息,提高关系抽取的准确性和鲁棒性。
- 从使用单独的模型解决实体提及检测和关系提取转向了使用联合模型解决这些任务,这样可以避免错误传播,提高模型的效率和泛化能力。

。在推理阶段,JEREX不需要任何实体或提及的先验知识,而是自动地从文档中识别和聚类它们。- 通过基于跨度的方法定位文档中的所有实体提及。
- 通过共指消解将检测到的提及聚类为实体。
- 通过对局部提及表示的融合(实体分类)对每个实体簇的类型(如人或公司)进行分类。
- 通过对提及对的推理提取实体之间的关系。


,本文根据 Eberts 和 Ulges (2020) 的方法,通过最大池化操作来获取跨度的 token 嵌入的表示:

表示向量串联,
是一个包含 ReLu激活函数的两层前馈神经网络。本文对所有长度不超过 L 的 token 跨度进行分类,并根据一个阈值
过滤出概率高于
的跨度,作为最终的实体提及集合
。
是否共指。本文的方法是将两个提及的跨度表示
和
与它们之间的编辑距离嵌入
结合起来。然后计算两个提及的跨度之间的 Leven-shtein 距离
,并使用一个学习的嵌入
。接着,通过连接得到一个提及对的表示:

的架构与
相同。本文构造一个相似度矩阵
(其中 m 是文档的总提及数),包含每一对提及之间的相似度得分。通过应用一个过滤阈值
,使用完全链接(Mullner , 2011)对提及进行聚类,得到一个包含实体提及簇的集合
,并把这些簇称为实体或实体簇。
进行最大池化,得到一个实体的表示:
进行实体分类,让模型能够综合文档中不同位置的提及信息。本文将实体表示
输入到一个 softmax 分类器中,得到一个实体类型的概率分布:
。本文的关系分类器对每一对实体
进行分析,判断它们之间是否有
中的某种关系。具体来说,对每个候选三元组
计算一个分数,表示
(作为头) 和
(作为尾) 之间有关系
的可能性。本文提出了两种关系分类器:一种是全局关系分类器,它作为基线方法,直接使用实体簇的表示
作为输入;另一种是多实例关系分类器,它考虑了某些实体提及对对特定关系的支持程度,并将这些信息融合成一个实体对级别的表示。
的最大池化实体簇表示
和
来进行训练。本文还将实体类型
嵌入到实体表示中,这在 Yao等人(2019) 的工作中已经证明了其有效性。然后,将两个实体的表示和类型连接起来,得到一个实体对表示:
(与
类似) 中,将其映射到
个关系类型上。最后一层使用 sigmoid 激活函数进行多标签分类,并将超过阈值
的关系类型标记为正类:
和
,本文计算任意
的提及对表示。这个表示是由全局实体嵌入(公式(5))和提及的局部跨度表示(公式(1))拼接而成的:
的元嵌入,分别在句子
和词
层面上。另外,根据 Eberts 和 Ulges (2020) 的工作,本文还添加了两个提及之间的最大池化上下文
。这个局部化的上下文提供了一个更聚焦的文档视角,并且对于长而嘈杂的输入特别有益:


与实体类型嵌入
连接起来,并应用一个两层的
(类似于
)。注意,对于两种分类器(GRC/MRC),需要对
和
都进行评分,以推断非对称关系的方向。
和
是跨度、共指和关系分类器的二元交叉熵损失,
是实体分类器的交叉熵损失。
,
,
和
是平衡不同子任务的超参数。本文从每个文档中采样正负样本来构成一个批次,发现这种单遍处理的方法可以显著提高学习和推理的效率。具体来说,多任务学习框架包括以下四个子任务:- 实体提及定位:使用文档中所有的真实实体提及
作为正样本,从预定义长度
内的随机非提及跨度中采样
个负样本。本文只在数据集的分词方式下对完整的词进行训练和评估,不对字节对编码的词进行操作,以降低计算复杂度。另外,只采样句内跨度作为负样本。由于句内提及跨度具有较高的挑战性(如“纽约”和“纽约市”),本文采样至多
个句内提及跨度作为负样本。 - 共指消解:在所有真实实体簇
中抽取的跨度对上训练共指分类器,作为正样本。本文还从不同簇的随机真实实体提及对中采样
个负样本。 - 实体分类:在所有真实实体簇上训练实体分类器。由于实体分类器在推理时只接收假定的实体簇,因此不需要采样负样本。
- 关系分类:使用真实实体簇之间的关系作为正样本,从
中抽取与真实标签无关的
个负样本。

(Devlin等,2019)作为编码器,它是一个基于注意力的语言模型,在大量英文文本上进行了预训练。本文根据端到端的开发集调整了超参数。本文沿用了(Devlin等,2019)的一些设置,例如使用Adam优化器,采用线性预热和线性衰减的学习率调度策略,设置峰值学习率为5e-5,以及在模型的各个部分应用0.1的dropout。本文将元嵌入的维度
设置为25,将训练轮数设置为20,每轮训练后在开发集上评估模型的性能,选择性能最佳的模型在测试集上进行最终评估。本文对提及、共指和关系的过滤阈值
进行了网格搜索,步长为0.05。手动调整了负样本的数量
和子任务的损失权重
。另外,注意到DocRED中的一些文档长度超过了
的最大输入长度(512 BPE tokens)。对于这些文档,本文重新训练了
的位置嵌入。




(公式5)和局部上下文表示
(公式10)。结果显示,当没有全局实体表示时,F1 分数下降了约 0.66%,说明多实例推理需要结合实体级的上下文信息。当没有局部上下文表示时,F1 分数下降了约 0.90%,表明模型需要关注输入中的相关部分。最后,让模型只考虑句内的提及对。如果一个实体对没有句内的实例,就选取最近的(按词距离)提及对。这样做虽然可以降低计算复杂度和内存消耗,尤其是对于大型文档,但是发现句内的提及对并不能覆盖所有的相关信号,而把一个实体对的所有提及都配对起来可以提高 0.67% 的性能。body, td { font-family: 微软雅黑; font-size: 10pt }
《An End-to-end Model for Entity-level Relation Extraction using Multi-instance Learning》阅读笔记的更多相关文章
- 阅读《RobHess的SIFT源码分析:综述》笔记
今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...
- RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件
SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...
- RobHess的SIFT源码分析:综述
最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...
- 阅读《RobHess的SIFT源码分析:综述》笔记2
今天开始磕代码部分. part1: 1. sift特征提取. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点 img2_Feat = cvCloneI ...
- element-ui button组件 radio组件源码分析整理笔记(一)
Button组件 button.vue <template> <button class="el-button" @click="handleClick ...
- element-ui 组件源码分析整理笔记目录
element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...
- element-ui Carousel 走马灯源码分析整理笔记(十一)
Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- element-ui MessageBox组件源码分析整理笔记(十二)
MessageBox组件源码,有添加部分注释 main.vue <template> <transition name="msgbox-fade"> < ...
- element-ui switch组件源码分析整理笔记(二)
源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...
随机推荐
- 什么是 x10 开发工具?「GitHub 热点速览」
都听过 10x 工程师,一个人顶得过十个人.但是并不是每个人都是 10x 工程师,但是有些效率工具可能让你变成 2x.3x 的工程师.比如,这周火爆的 3D 游戏引擎 FlaxEngine 有着强大的 ...
- Llama2-Chinese项目:2.3-预训练使用QA还是Text数据集?
Llama2-Chinese项目给出pretrain的data为QA数据格式,可能会有疑问pretrain不应该是Text数据格式吗?而在Chinese-LLaMA-Alpaca-2和open-l ...
- c语言代码练习12
//计算1/1-1/2+1/3...-1/100的和#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { in ...
- 其它——MyCat实现分库分表
文章目录 MyCat实现分库分表 一 开源数据库中间件-MyCat 二 MyCat简介 三 MyCat下载及安装 3.1 MySQL安装与启动 3.2使用docker启动多个数据库 3.3 MyCat ...
- Docker系列——Docker-Compose、Docker网络扩展
目录 一 Docker Compose 简介 1.1 Docker Compose介绍 1.2 Docker Compose 工作原理 1.3 Docker Compose安装 1.4 Docker ...
- oj练习题 数字 eval 整数 int ???
s = input()if 'hello world!' == s.casefold(): print("Yes")else: print("No") A+B问 ...
- 第五周单元测验题英语教学与互联网 mooc
第五周单元测验题 返回 本次得分为:16.00/20.00, 本次测试的提交时间为:2020-08-30, 如果你认为本次测试成绩不理想,你可以选择 再做一次 . 1 单选(2分) 从评价的主体来看, ...
- linux的进阶命令
一. linux的基础命令 1.history 查看历史命令记录 2.ifconfig 查看所在的IP地址 3.tail -n 查看一个文件的后n行记录 4.head -n 查看一个文件的前n行记录5 ...
- 基于LangChain的LLM应用开发1——介绍
这是基于LangChain的大语言模型应用开发系列的第一篇. 文章内容会参考deeplearning.ai的短课程(https://learn.deeplearning.ai/langchain/), ...
- sql优化的方法总结
1.对查询进行优化,应该尽量避免全表扫描,首先应考虑在where和order by涉及的列上建立索引 2.应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表 ...
和跨度大小嵌入
是实体提及的概率: