每天给你送来NLP技术干货!
论文:A Frustratingly Easy Approach for Entity and Relation Extraction - NAACL2021
单位:普林斯顿大学
链接:https://arxiv.org/pdf/2010.12812.pdf
提取摘要
端到端关系抽取旨在识别命名实体并提取它们之间的关系。最近的工作将这两个子任务联合建模,要么将它们投射到一个结构化的预测框架中,要么通过共享表示执行多任务学习。
在这项工作中,作者提出了一种用于实体和关系提取的简单pipeline方法,并在标准基准(ACE04、ACE05 和 SciERC)上达到了SOTA,在关系 F1 上与具有相同预训练编码器的先前联合模型相比获得了 1.7%-2.8% 的绝对提升。该方法本质上建立在两个独立的编码器上,并且仅使用实体模型来构建关系模型的输入。通过一系列实验,验证了学习实体和关系的不同上下文表示、在关系模型的早期融合实体信息以及合并全局上下文的重要性。最后,作者还对该方法提出了一种更快的方法,使得在推理时只需要通过一次实体和关系编码,就能实现 8-16 倍的加速,但精度略有降低。
总结一句话就是,从之前的pipeline方法进化到多任务或者魔改为其他结构的预测(transition-based/span-based等)方法,这次又回到了原始的pipeline方法。因为丹琦认为实体识别和关系抽取使用同一个模型的话,会使得文本表示会丢失一些重要信息,最终实验也得以验证。
可见,不断创新的时候,也要时不时批判式的回头看看。
具体介绍
实体识别
这里选取的实体抽取为之前介绍过的Span-based方法,即列举所有span的组合,选取最佳,表示的话为通常的三部分:span的开始,span的结束以及span的长度,即:
然后预测该span的是否是实体的概率。
关系抽取
关系预测的话,需要列举每一组不同实体,然后预测是否有关系以及是哪种关系的多分类问题。其中每种实体的表示依然采用上面实体抽取的span表示,这里预测关系抽取结果使用的隐层为两个实体的开始:
其中
需要注意的是,实体识别和关系抽取所使用的预训练模型不是同一个。
损失
损失很普通,区别在于都是单独训练的:
有效的batch计算的近似方法
因为上面的关系抽取需要一个一个循环计算两两span的关系计算,太耗时,太麻烦了,所以本文提出一种可以一次性计算所有实体组合。
方法就是将实体span的开始和结尾表示放到该句子的最后,然后这样就能直接一次性计算所有实体之间的关系了,其中实体符号表示为该表示的span的position embeddings:
其次,向注意力层添加一个约束,强制文本标记只关注文本标记而不关注标记本身,而实体标记可以关注所有文本标记和与同一span对关联的所有4个标记。
实验
该方法在ACE04, ACE05, and SciERC数据集上的F1值性能比较,可以看出都达到了最佳值:
使用batch加速计算的速度和F1值比较,可以看出性能降低有限,速度巨幅提升:
其中,是否共享encoder是本文的一个关键,具体实验指出不使用同一个encoder下,实体性能巨幅提升,关系提升甚微,可见共用encoder的时候后面的关系抽取确实会影响前面的实体识别:
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
整理不易,还望给个在看!