关系抽取一步到位!

2021 年 2 月 19 日 AINLP

本文主要详细解读关系抽取SOTA论文Two are Better than One:Joint Entity and Relation Extraction with Table-Sequence Encoders[1], 顺带简要介绍关系抽取的背景,方便完全不了解童鞋。

信息抽取

我们说的信息抽取一般是指从文本数据中抽取特定数据结构信息的一种手段。对于不同结构形式的数据如结构化文本,半结构化文本,自由文本,有各自对应的方案,其中从自由文本中抽取难度最大。总之,我们的目的是希望在海量文本中,快速抽出我们关注的事实。

了解信息抽取必须要知道关系抽取。

关系抽取

大部分情况下,我们喜欢用三元组的数据结构来描述抽取到的信息

三元组

  • 三元组的表达能力非常丰富,几乎所有事情都可以自然或者强行的表达成三元组,比如随便一句”今天天气真冷“ 表达为 天气-状态-冷
  • 三元组与后续的知识图谱工作非常适配,如Neo4j等图数据库就是以三元组为存储单位,图谱的查询推断等工具使用三元组比普通的关系型数据库来的方便的多。

三元组千千万,我应该怎么抽?

Schema

当我们拿到一个信息抽取的任务,需要明确我们抽取的是什么,”今天天气真冷“,我们要抽的天气的状态天气-状态-冷,而非 今天-气候-冷(虽然也可以这样抽),因此一般会首先定义好我们要抽取的数据结构模式shcema, 会确定谓词以及主语并与的类型

一个三元组schema的例子,其中Subject_type代表主语类型,Predicate是谓词,Object_type指宾语类型:

Subject_type: 人物
Predicate:  出生地
Object_type: 地点

确定了schema,我们一般如何抽取呢?

常规RE方案

目前主流关系抽取一般两种解决方法

  • pipline两步走: 将关系抽取分解为NER任务和分类任务,NER任务标注主语或宾语,分类主要针对定义的schema中的有限个谓词进行分类。根据具体任务不同,有些可能是两步走或者三步走,pipline任务的顺序先分类还是先标注也会有差异

    • Pipline优势:每一步分别针对各个任务进行,表征是task-specific, 相对来说精度较高
    • Pipline缺陷:- 任务有顺序会存在误差传递问题,即在预测时下一步任务会受上一步误差影响,而在训练阶段没有这种误差,因此存在训练和预测阶段的gap - 分开的任务在一句话中多个实体关系时,比较难解决实体和关系的对应问题,以及重叠关系
  • joint learning: joint learing可以理解为采用多任务的方式,同时进行NER和关系分类任务, 在众多joint learning中最出众的是采用tabel filled 方式,即任务的输出是filled一张有text-sequence构成的表,在表中的位置表达除了词与词的连接,该位置的标注则标出了谓语(如下图)

    • 优势: 1. 两个任务的表征有交互作用可能辅助任务的学习 2. 不用训练多个模型,一个模型解决问题,不存在训练与预测时的gap
    • 缺陷: 1. 两个任务的表征可能冲突,影响任务效果 2. 解决了主谓宾之间的对应关系,无法解决重叠问题 3. Fill table本质仍然是转成sequence来fill,未能充分利用table结构信息(下文会解释)

下面重点解读table fill方式的一篇SOTA,解决了joint learning的多任务表征冲突以及为利用table结构信息

RE with Table Sequence

终于来到本篇的主题啦,为了解决一般filled table的问题, 作者提出table-sequence encoder的方法,分别对table和sequence做表征,本文的最大贡献在于

  • 分别对table和sequence做表征(encoder),并设计了一个Table-Guided Attention来对table和sequence进行交互,这样即不会完全共享表征导致对不同的任务表征冲突,也不会丢失表征的相互指导作用

  • 在table encoder中采用多维GRU来捕获更多的句子结构信息

  • 在架构上table encoder和 sequence encoder多层交互

下面仔细介绍各个部分,看看它是如何神奇做到SOTA的

Text Embedder

在上图的结构图中,Text Embedder采用类似FLAT分别做了基于lstm的char( )和word( ),以及基于bert的word ( )作为预训练的embedding ,并拼接起来

图中

Table Encoder

整个Table Encoder部分由多个Table Encoding的单元组成,每个Encoding单元的输入分别是起始输入 ,对应senquence结构的输入 ,以及上一个Tabel Encoding单元的输出 ,Table Encoding 采用MDRNN结构提取输入的特征信息,作者在这选择MDGRU(多维度GRU),tabel结构本身有2维,加上前后层实际有4维,但是层的维度信息单向流动,实际上是只用到了3个方向( )

如图所示, 是来自sequence的输入,作者分别测了使用所有方向和分别使用几个方向,发现上图中a,c效果类似,这种多维GRU全面的考虑了整个table的结构信息,即一个词的状态跟其他所有词的状态相关,并且受其他词的不同程度的影响,这种影响程度由GRU门控机制控制

Sequence Encoder

sequence Encoder 也由多个sequence encoding够成,sequence encoding结构直接采用transformer中的encoder

只不过将其中的self attention替换为table-guide attention, 这种attention的改造非常巧妙,能更好捕捉word-word之间的关

正常的dot attention如上图

Table-Guided attention 具体来说:

      为参数矩阵

  采用加性

是table encoder中的table的 隐藏节点,该节点由多个方向的经过GRU编码得到,不管是哪个方向它的来源始终是由 构造而来,理论上是可以由 拟合而来,因此这里直接由 来代替 , 也就是这个attention,其实是计算了table 结构中各个位置对该的权重,是一个四面八方attention

剩下就是transform中正常的LayerNorm 和残差结构了

输出和loss

输出比较常规,loss采用常规

输出:

loss:

实验 and 效果

作者在各个数据集上进行实验,对比各个目前SOTA分别有一定的提高,且 时效果最佳,模型参数量不到5M,要什么自行车,附上开源地址[2],作者的代码与论文在attention计算有一丢丢不一致,但是并不影响效果


作者:厂妹

厂妹,在社会劳动中寻找价值的初心青年。目前在平安科技AI研究院做算法,主要感兴趣方向包括对话系统,知识图谱,文本搜索,推荐系统。三和什么都没有,厂妹也无知,所以每一个任务都是全新的开始。

知乎ID:厂妹


参考资料

[1]

  Two are Better than One:Joint Entity and Relation Extraction with Table-Sequence Encoders: https://arxiv.org/abs/2010.03851

[2]  

开源地址: https://github.com/LorrinWWW/two-are-better-than-one,


题图:一人之下 王也道长




由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入知识图谱交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注知识图谱

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
4

相关内容

关系抽取指的是检测和识别文本中实体之间的语义关系,并将表示同一语义关系的提及(mention)链接起来的任务。关系提取任务需要在一组工件(通常来自文本或XML文档)中对语义关系提及进行检测和分类。该任务与信息抽取(IE)的任务非常相似,但是IE还需要删除重复关系(消除歧义),并且通常指的是提取许多不同的关系。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
专知会员服务
70+阅读 · 2021年3月27日
【AAAI2021】以事件为中心的自然语言理解,256页ppt
专知会员服务
73+阅读 · 2021年2月8日
【经典书】模式识别概率理论,654页pdf
专知会员服务
81+阅读 · 2021年1月21日
【WSDM2021】通过学习中间监督信号改进多跳知识库问答
专知会员服务
10+阅读 · 2021年1月14日
【ACL2020】端到端语音翻译的课程预训练
专知会员服务
5+阅读 · 2020年7月2日
知识图谱融合方法,140页ppt,南京大学胡伟老师
专知会员服务
142+阅读 · 2020年2月19日
远程监督在关系抽取中的应用
深度学习自然语言处理
12+阅读 · 2020年10月26日
关系抽取之远程监督算法:别再跟我提知识图谱(上篇)
深度学习自然语言处理
5+阅读 · 2020年5月31日
知识图谱构建-关系抽取和属性抽取
深度学习自然语言处理
26+阅读 · 2020年3月1日
ACL 2019 | 面向远程监督关系抽取的模式诊断技术
AAAI 2019 | 基于分层强化学习的关系抽取
PaperWeekly
20+阅读 · 2019年3月27日
论文浅尝 | 基于知识库的类型实体和关系的联合抽取
开放知识图谱
35+阅读 · 2018年12月9日
徐阿衡 | 知识抽取-实体及关系抽取(一)
开放知识图谱
41+阅读 · 2018年9月18日
我们眼中的“关系抽取” | 每周话题精选 #02
PaperWeekly
22+阅读 · 2017年6月21日
Arxiv
0+阅读 · 2021年4月22日
Scale-Aware Trident Networks for Object Detection
Arxiv
4+阅读 · 2019年1月7日
VIP会员
相关VIP内容
专知会员服务
70+阅读 · 2021年3月27日
【AAAI2021】以事件为中心的自然语言理解,256页ppt
专知会员服务
73+阅读 · 2021年2月8日
【经典书】模式识别概率理论,654页pdf
专知会员服务
81+阅读 · 2021年1月21日
【WSDM2021】通过学习中间监督信号改进多跳知识库问答
专知会员服务
10+阅读 · 2021年1月14日
【ACL2020】端到端语音翻译的课程预训练
专知会员服务
5+阅读 · 2020年7月2日
知识图谱融合方法,140页ppt,南京大学胡伟老师
专知会员服务
142+阅读 · 2020年2月19日
相关资讯
远程监督在关系抽取中的应用
深度学习自然语言处理
12+阅读 · 2020年10月26日
关系抽取之远程监督算法:别再跟我提知识图谱(上篇)
深度学习自然语言处理
5+阅读 · 2020年5月31日
知识图谱构建-关系抽取和属性抽取
深度学习自然语言处理
26+阅读 · 2020年3月1日
ACL 2019 | 面向远程监督关系抽取的模式诊断技术
AAAI 2019 | 基于分层强化学习的关系抽取
PaperWeekly
20+阅读 · 2019年3月27日
论文浅尝 | 基于知识库的类型实体和关系的联合抽取
开放知识图谱
35+阅读 · 2018年12月9日
徐阿衡 | 知识抽取-实体及关系抽取(一)
开放知识图谱
41+阅读 · 2018年9月18日
我们眼中的“关系抽取” | 每周话题精选 #02
PaperWeekly
22+阅读 · 2017年6月21日
Top
微信扫码咨询专知VIP会员