前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >绝了!关系抽取新SOTA

绝了!关系抽取新SOTA

作者头像
NewBeeNLP
发布2022-06-06 10:02:27
发布2022-06-06 10:02:27
2K0
举报
文章被收录于专栏:NewBeeNLPNewBeeNLP

作者 | Nine 整理 | NewBeeNLP

关系抽取目前的算法大概可以分为以下几种:

  • pipeline approach:先抽实体,再判关系,比如陈丹琦的《A Frustratingly Easy Approach for Joint Entity and Relation Extraction 》(后面称为PURE)
  • Joint Entity and Realtion Extraction:联合模型,目前我看过的有这么几种方式:
    • 将联合任务看做是一个填表问题,比如:table sequence[1],TPlinker[2]
    • 将联合任务看做是一个序列标注问题,比如:ETL Span[3],PRGC[4]
    • 将联合任务看做是一个seq2seq问题,比如:SPN4RE[5]

今天分享的论文是一篇pipeline方法,来自清华和微信ACL2022的工作,《Packed Levitated Marker for Entity and Relation Extraction》,是PURE的升级版,这里我们先简单介绍一下PURE。

PURE

PURE中 NER部分 是将文本送入PLM中获取每个token的上下文表征,然后将每个span的start token、end token的上下文表征以及span长度的embedding拼接在一起得到span的表征,然后送进两层前馈神经网络,最后预测entity type。

PURE中的 关系抽取部分 采用了往句子中的subject span和object span的前后插入 “typed marker” 的方式,这个typed marker就是一对标记,

  • object span的 typed marker 为 start marker [O: entity_type]和end marker [/O: entity_type],
  • Subject span的[S: entity_type]和[/S: entity_type]

通过这种方式对句子改造以后,将改造后的句子送入PLM,然后将 subject span 和 Object 的start marker 的上下文表征拼接在一起作为span的表征,然后过线性变换和softmax预测这个span的relation type。(后面称为PURE-Full)

这种方式的问题就在于每一个训练和预测样本都只能插入一对subject span和object span,导致计算量很大。

他们提出了一种加速方法,这种加速方式也是本文的主要参考的模型: 将typed marker全部放在句子末尾,然后通过让typed marker与相应的subject span或object span中的头/尾单词共享position embedding,并且利用attention mask矩阵来完成一些限定,typed marker进可以与文本以及当前span pair内的typed marker进行attention, text仅可以与text进行attention

这样的话就可以在一个句子中并行处理多对span pairs了,他们提出的这种加速方法提升了关系抽取的速度,但是效果会有一些折扣。(后面成为PURE-Approx.)

PL-Marker

  • 论文:《Packed Levitated Marker for Entity and Relation Extraction》
  • 发表方:清华大学+微信,ACL2022
  • 论文链接:https://arxiv.org/abs/2109.06067v4
  • 开源代码:https://github.com/thunlp/PL-Marker

接下来就是今天的重点,PL-Marker。主要对NER和RE中span的表征进行改进,在之前的工作中,有三种span表征方式:

  • T-Concat :这种方式将span 的start 和end token的representation拼接起来作为span的representation,也就是PURE中NER用的方式,其实很多模型都用的这种方式;
  • Solid Marker(固定标记) :显式的在句子中的span前后插入两个marker,如果是关系抽取,就在subject span和object span前后,但这种方式没法一次性处理多对span,因为在句子中要塞入多对marker的话,不但句子结构会很乱,而且对于有交叉的span也不好处理。PURE-Full就用的这种方式。
  • Levitated Marker(悬浮标记) :就是PURE-Approx,这里不赘述了,目前仅有PURE-Approx中用了这种方式,效果相较于PURE-Full是有折扣的,论文中认为简单将悬浮标记放到句子后面的方式没有考虑多个span之间的关联。

本篇论文对span表征的建模采用的是后两种Marker的方式,针对单个span和多个span提出了两种标签打包的策略:

  • 在做NER的时候提出了: Neighborhood-oriented Packing for span,就是将相邻的span的悬浮标记拼接在同一个样本里面
  • 在做RE的时候提出了: Subject-oriented Packing for span pair,就是将subject span用固定标记插入句子中,其对应的Object span们,用悬浮标记拼接在句子后面,放在一个样本里面

PL-Marker的两种标签打包策略

模型结构

PL-Marker使用的模型就是PLM,与PURE-Approx类似:

  • 拼接在句子后面的悬浮标记对中的start marker与其在句子中对应的span的start token共享position embedding,end marker与对应span的end token共享 position embedding;
  • 通过attention mask矩阵进行限制,使得悬浮标记可以看到它的搭档标记和前面的文本,看不到其他悬浮标记对,文本仅可以看到文本
NER部分:Neighborhood-oriented Packing for span

这部分采用的悬浮标记,将所有的可能的实体span的悬浮标记对都放在句子最后面。但是这样就出现了一个问题,因为要遍历句子中所有可能的span,而PLM能处理的句子长度有限。

因此他们提出了Packing的策略,在Packing的时候,考虑到为了更好的分清楚span的边界(更重要的是区分同一个词为开头的span的差别),会将span相近的放在一起,就是将以开头相同的或者相近的放在一个样本中。

对于一个token数量为N的句子

X = \left\{ x_{1}, x_{2}, ..., x_{N} \right\}

,规定最大的span长度为L,具体步骤如下:

  1. 首先,对所有的悬浮标记对(一个开始标记,一个结束标记)进行排序,排序的方式是按照它们每一对悬浮标记所代表的的span的start token的位置,以及end token的位置,从小到大进行排序,得到排序后的候选span列表;
  2. 然后,将所有的悬浮标记拆分成K个组,这样的话相邻的span的悬浮标记就会被分在一个组里,然后每组拼接分别拼接在句子后面,作为K个样本;
  3. 最后,将样本送进PLM,对于每一对悬浮标记对
s_{i} = \left( a, b \right)

,分别将他们的开始标记的表征

h_{a}^{(start)}

和结束标记的表征

h_{b}^{(end)}

拼接在一起,作为其对应span的表征:

\psi\left( s_{i} \right) = \left[ h_{a}^{(start)}; h_{b}^{(end)} \right]
  1. 而在进行NER的时候,他们是通过上面的步骤获取到span表征(也就是PL-Marker抽取到的span特征),然后与T-Concat方法抽取的span表征合并起来去预测entity type。
RE部分:Subject-oriented Packing for span pair

这部分采用固定标记和悬浮标记混用的方式,原因是如果也采用PURE-Approx的那种subject span levitated marker与object span levitated marker都拼接在后面的情况的话,虽然可以用attention mask去把两对marker绑定在一起,但是这样的话,那么它就不太能识别出它同span的另一个marker。具体做法如下:

  1. 对于一个句子,以及其中的subject span和它对应的object spans,构成一条训练样本,其中subject span采用固定标记,也就是在句子中span单词的前后直接插入[S]和[/S]两个标记,然后将它对应的候选Object span用悬浮标记的方式拼接在文本后面。
  2. 然后把样本送进Pretrained Encoder,对于样本中的每一个span对
s_{subject}=\left( a, b \right)

s_{object} = \left( c, d \right)

,将Subject span前后的固定标记的表征

h_{a-1}

h_{b+1}

以及一对object span的悬浮标记的表征

h_{c}^{(start)}

h_{d}^{(end)}

拼接在一起,作为这一对span pair的表征:

\phi\left( s_{subject}, s_{object} \right) = \left[ h_{a-1}; h_{b+1}; h_{c}^{(start)}; h_{d}^{(end)} \right]

  1. 为了建模实体类型与关系类型之间的关系,他们还增加了预测object entity的辅助loss
  2. 为了增加一些补充信息,他们新增了从object到subject的反向关系的预测,从而实现了双向关系的预测,其实就是实现了一个Object-oriented packing strategy。
其他设置:
  • Prompt Initialization for NER:受prompt tuning的启发,他们在初始化NER的Marker的时候用不是随机初始化,而是embedding of meaningful words,具体的说就是他们用单词[MASK]和entity的embedding来初始化marker,发现效果均有一定程度的提升。

使用embedding of meaningful words的效果

  • 尝试用关系模型预测到的eneity type来refine由NER模型预测到的entity type,但是在不同的数据集上效果不一样,应该是不同数据集中错误数据的多少导致的吧?

3. 效果

NER效果

使用了悬浮标记的NER的效果达到了SOTA

RE效果
速度

因为采用这种拼接的方式,NER的速度一定是不快,所以他们做了这个实验,对比了不同的group下PL-Marker的做NER的速度,比SeqTagger要慢很多,下表中的Two-stage方法是指他们用一个BASE-size T-Concat模型先过滤了以下候选的span,然后才送进PL-Marker的,可以看到,entity的F1没有损失,但速度有了很大

关系抽取的速度的话,他们与PURE和PURE的加速版本进行了对比,速度上,PL-Marker自然是在这两个模型之间,而效果的话,是最好的。

消融实验

对比了如下的一些方案:

  1. 在RE模型中,将subject span的solid marker改成和levitated marker,然后将所有的span pairs都pack到一个样本里面,那这个和PURE的近似版本很像啊,只不过marker不是typed marker吗?发现效果变差很多。
  2. 他们在做实验的时候对不对称关系进行了反向Relation进行了预测,这里去掉了这部分的预测,发现效果会有比较大的降低,
  3. 去掉了entity type 的辅助loss,发现效果变差
  4. 在PL-Marker的marker都换成typed marker,就像PURE一样,比如[Subject: PER],发现效果会有所降低

本文参考资料

[1]

table sequence: https://arxiv.org/abs/2010.03851

[2]

TPlinker: https://www.aclweb.org/anthology/2020.coling-main.138.pdf

[3]

ETL Span: https://arxiv.org/abs/1909.04273v3

[4]

PRGC: https://arxiv.org/abs/2106.09895

[5]

SPN4RE: https://arxiv.org/abs/2011.01675v1

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NewBeeNLP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PURE
  • PL-Marker
  • 模型结构
    • NER部分:Neighborhood-oriented Packing for span
    • RE部分:Subject-oriented Packing for span pair
    • 其他设置:
  • 3. 效果
    • NER效果
    • RE效果
    • 速度
    • 消融实验
    • 本文参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档