论文笔记 – Entity-Relation Extraction as Multi-turn Question Answering

Xiaoya Li, et al., “Entity-Relation Extraction as Multi-turn Question Answering”, ACL 2019

1 简介

这篇文章解决的是 document 关系抽取中 hierarchical tag dependency 的问题。于是使用多轮 QA 的方式,先抽 head entity,然后对每一个 head 抽 relation 和 tail(由于关系是 hierarchical,所以要按照这个 hierarchical 顺序来多轮 QA)。他的动机很有实际意义,他还发了一个中文数据集,里面是人的简历,which requires multi-step reasoning to construct entity dependencies。非常有意思的工作(怎么回事?这不是老板的经典评论吗)。

2 方法

先说一下 hierarchical tag dependency 问题是什么。在一篇文章中会有多对实体的多对关系,这些关系之间,也是可能有依赖的。比如文档里是很多诸如“A 创造了 B 公司,在 C 时间担任 D 职位”的句子,这样一来,时间 C 的抽取就依赖于职位 D,因为一个人可以在不同时间担任不同职位;同理,职位 D 的抽取又依赖于公司 B,因为一个人可以在不同公司有各自的职位。

因此实际上,为了最好的表述这些实体之间的关系,应该抽成一张 table:

其实这里我还是比较疑惑,原先的方法是抽一堆三元组,其实也是能解决这个问题的:三元组作为一个个边,构成一棵树,其实是要比这个表格更加形象、准确的。不过,在这种情况下,抽三元组很难(特别是当(1)实体相距很远;(2)一个实体出现在多个三元组中;(3)一个句子包含多个同类关系;(4)关系跨度相交的时候)。而按照 hierarchical 的方式去解决问题,的确能将这些依赖用上,从而大幅度提升性能。不错。

再说一下 QA 的基本框架:就是把问题和句子拼起来,中间插个 [SEP],送入 BERT,做 BMEO 序列标注任务,得到多个答案(或者没有答案,输出 None)。

算法流程如下:

第一轮,抽取头实体。对于 ACE 和 CoNLL,问题(似乎)就直接是 entity type,对于自创的 RESUME 数据集,问题是 “who is mentioned in the text”(不是中文数据集吗?这是用英文问?没看懂)。对每个 entity type 提问,最后得到一堆 head。

第 2-n 轮,抽取关系和尾实体。首先它定义了一个 ChainOfRelation,就是上面表格里的一行,这里的多轮 QA,就是上一个问题的答案作为下一轮问题中的信息,这样多轮来回答。比如上面的表格,这里就需要三轮 QA。这里问题是通过模板槽填充生成的自然语言的句子。下图就是 RESUME 数据集的问题模板。

对于 ACE 和 CoNLL,问题也是,每种关系都有一系列的模板。不过由于这两个数据集没什么 hierarchical 的关系,因此在这第二部分,就只需要一轮 QA。

虽然是多轮 QA,但是训练时,还是两部分 loss 直接相加,作为总的优化目标。

最后作者还加入了强化学习,但是我完全看不懂【#TODO345】

3 实验

  1. 在所有数据集都是 sota
  2. 自然语言的问题要比直接用关键词做问题好:自然语言的问题包含更多语义信息
  3. 这两部训练,互相都是有帮助的!!这表明联合抽取的优越性

4 思考

以后这个系列的都要读读

5 TODO

  1. MRC 的好几篇文章
  2. multi-turn QA 的好几篇文章
  3. 强化学习的 reward
  4. 强化学习的 replay strategy
  5. 强化学习的 curriculum learning
  6. dependency parsing model Biaffine

发表评论