笔记:Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extract


Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction

作者:Yu et al., CONLING 2020.

目录

  • 简介
  • 方法
  • 实验
  • 总结

1 简介

本文仍然是做实体关系联合抽取,不同的是在少样本的条件下。基本方法类似一些FewRel中的方法,利用prototype网络,原来是求关系类别的原型向量,现在是既要求关系也要实体的prototype,进行训练学习。

本文算是第一篇在少样本条件下尝试实体关系联合抽取的工作,也是用的pipeline方法做联合抽取。之前的少样本学习基本上都是做关系分类任务即假设每个语句中只有一对实体,判断其对应的关系类型。

2 方法

如下图2为MPE模型大致的流程结构。

本文虽然是实体关系联合抽取,按理应该是multiple entity pairs的,但本身联合抽取中多实体多关系关系重叠等就很难,在加上少样本条件就更难了,所以为了简单起见,本文就假设每个句子只有一对实体,就是关系分类的条件一致。

结合图2,整个框架主要分为三个部分:

  • Instance Encoder 利用预训练模型如BERT,对句子编码
  • Hybrid Prototype Learning 学习实体原型和关系原型
  • Prototype-Aware Regularization 为了增强原型的学习

2.1 Instance Encoder

常规操作,利用BERT对句子编码,同时为了满足BERT对输入的要求,在序列前后插入[CLS]、[SEP]。根据BERT的工作,[CLS]可以代表整个句子的信息。同时文中还提到一点,就是经过BERT后的输出的长度可能和原语句长度不同(正常应该相同的),由于要做分词,例如tokenizer工具分词,可能将词分成多个子词。

2.2 Hybrid Prototypical Learning

Entity Prototype Learning. 在few-shot训练阶段,首先要利用train-support set中的instances构建prototype,这里就是构建entity prototype,那么想要构建entity原型,就要先确定实体span,本文根据标注集S = {B-Head, I-Head, B-Tail, I-Tail, O, X} ,利用CRF-based 序列标注模型进行实体识别,其中标注类似BIOES,只不过这里三元组嘛有head和tail实体两个,B-Head,I-Head代表head实体,B-Tail,I-Tail代表tail实体,O代表其他标签不属于head和tail实体,X说是X is any remaining fragments of tokens split by the tokenizer,我感觉就是之前分词后的子词但实体构成不需要这个子词?

对于实体原型的计算,如公式5、6所示,类似(Gao et al., 2019\(^{[2]}\)),不多赘述了感兴趣可以看看这篇。

其中,\(head_i\)为K-way的第i类关系的K-shot(\(S_k\))中的instance,\(tail_i\)同理,\(Q\)为query set中的一个instance编码后的表示vector。

Relation Prototype Learning. 关系原型文中处理的很简单,就是利用句子表示即前文提到的[CLS]按照公式5、6同样的处理得到初步的关系表示\(sent_{proto}\)和知识限制的\(kg_{proto}\)拼接而成,如公式8所示:

对于\(kg_{proto}\)来说,则是根据TranE思想:\(h+r \approx t\)(就是类似之前看过一个例子,说是一个embedding向量加上另一个embedding向量在向量空间中会得到另一个embedding,是word2vec还是知识图谱三元组的例子来着?忘了,就是什么皇后+什么关系=国王,什么的这个例子忘了),利用\(head_{proto},tail_{proto}\)相减得到\(kg_{proto}\)

2.3 Prototype-Aware Regularization

希望support set中每个类别的句子表示和其对应的原型能够更近,不同类别的句子表示的原型更远,如公式9挺清晰的。

那么,总的目标函数/优化目标为:

3 实验

基于FewRel(Han et al., 2018)数据集,重新构造使其符合少样本关系三元组抽取任务。数据集中没有关系重叠的情况。

与各监督方法BERT微调和few-shot方法的对比实验,如表2。

可以看到虽然关系抽取的结果还行,但关系的抽取结果好没用啊,你是实体关系联合抽取,最终的评估是看三元组的正确率的即不仅关系要正确,与此关系对应的三元组内的两个head和tail实体的span及类型(严格点的话类型也有要求)都要正确才行,而且关系效果好,也和实体抽取的效果没太大关联吧,pipeline方法联合抽取,训练时估计用的gold entity span作为输入的单独关系抽取好也可理解,但要用预测的实体即实体抽取的结果作为下一步关系抽取的输入,那就不一定了。

4 总结&疑问

  • 首先最关键的一点实体效果不行,我们知道联合抽取任务,实体的信息包括span和类型很重要,这一点对于pipeline方法尤为重要。至于为什么?那肯定就是实体抽取不够好,具体来说就是实体原型没表示的很好,如公式5中,他的实体原型是以关系类别为基准,一个关系类别对应一种head和tail实体原型,以head实体为例,这个原型是把K-shot中的每个句子中的head实体加权attention结合到一块得到一个统一的\(head_{proto}\),最重要的实体类型没有考虑,也不管每类关系N-way的K-shot中的每个句子的head实体的类型是什么,\(tail_{proto}\)同理。
  • 关系原型虽然简单,但我觉得也挺合理的把,有没有更好的方法。
  • 公式6中(以head为例)计算得分时,为什么用的时\(head_{proto}\)?没理解,按照文中的逻辑以及(Gao et al., 2019\(^{[2]}\))的想法,我感觉应该是\(head_i,tail_j\) 啊?
  • 感觉好像可以改进的地方挺多的,但好像也很难本身少样本和实体关系抽取就感觉不容易,在这个方向做至少感觉得效果要好很多吧,这篇效果不好但毕竟时第一次在少样本条件下实体关系联合抽取的第一次尝试,“你没资格啊!你没资格。”
  • 参考[3]理解的更深一些可以看看,回顾的话paper上自己的笔记注释也看看。

参考

【1】Haiyang Yu1,2?, Ningyu Zhang1,2??, Shumin Deng1,2, Hongbin Ye1,2.Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction.COLING 2020.

【2】Tianyu Gao,? Xu Han,? Zhiyuan Liu,? Maosong Sun.Hybrid Attention-Based Prototypical Networks for Noisy Few-Shot Relation Classification.AAAI 2019.

【3】论文笔记 – Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction.https://ivenwang.com/2020/12/04/mpe/.