本文主要详细解读关系抽取SOTA论文Two are Better than One:Joint Entity and Relation Extraction with Table-Sequence Encoders[1], 顺带简要介绍关系抽取的背景,方便完全不了解童鞋。
我们说的信息抽取一般是指从文本数据中抽取特定数据结构信息的一种手段。对于不同结构形式的数据如结构化文本,半结构化文本,自由文本,有各自对应的方案,其中从自由文本中抽取难度最大。总之,我们的目的是希望在海量文本中,快速抽出我们关注的事实。
了解信息抽取必须要知道关系抽取。
大部分情况下,我们喜欢用三元组的数据结构来描述抽取到的信息
三元组千千万,我应该怎么抽?
当我们拿到一个信息抽取的任务,需要明确我们抽取的是什么,”今天天气真冷“,我们要抽的天气的状态天气-状态-冷,而非 今天-气候-冷(虽然也可以这样抽),因此一般会首先定义好我们要抽取的数据结构模式shcema, 会确定谓词以及主语并与的类型
一个三元组schema的例子,其中Subject_type代表主语类型,Predicate是谓词,Object_type指宾语类型:
Subject_type: 人物
Predicate: 出生地
Object_type: 地点
确定了schema,我们一般如何抽取呢?
目前主流关系抽取一般两种解决方法
pipline两步走: 将关系抽取分解为NER任务和分类任务,NER任务标注主语或宾语,分类主要针对定义的schema中的有限个谓词进行分类。根据具体任务不同,有些可能是两步走或者三步走,pipline任务的顺序先分类还是先标注也会有差异
joint learning: joint learing可以理解为采用多任务的方式,同时进行NER和关系分类任务, 在众多joint learning中最出众的是采用tabel filled 方式,即任务的输出是filled一张有text-sequence构成的表,在表中的位置表达除了词与词的连接,该位置的标注则标出了谓语(如下图)
下面重点解读table fill方式的一篇SOTA,解决了joint learning的多任务表征冲突以及为利用table结构信息
终于来到本篇的主题啦,为了解决一般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采用类似FLAT分别做了基于lstm的char( )和word( ),以及基于bert的word ( )作为预训练的embedding ,并拼接起来
图中
整个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 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:
作者在各个数据集上进行实验,对比各个目前SOTA分别有一定的提高,且 时效果最佳,模型参数量不到5M,要什么自行车,附上开源地址[2],作者的代码与论文在attention计算有一丢丢不一致,但是并不影响效果
作者:厂妹
厂妹,在社会劳动中寻找价值的初心青年。目前在平安科技AI研究院做算法,主要感兴趣方向包括对话系统,知识图谱,文本搜索,推荐系统。三和什么都没有,厂妹也无知,所以每一个任务都是全新的开始。
知乎ID:厂妹
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)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
推荐阅读
征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)
完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏