近几年做结构化信息抽取的一些论文和模型

1. 最早拿阅读理解模型做关系抽取

Zero-Shot Relation Extraction via Reading Comprehension

基本框架:给定一个实体s以及一个候选关系e,从文本t中抽取出e(s, ?)所对应的关系(没有的话输出None)。

模型概况       

1)候选问题生成:给定实体s和关系e,根据问题模板生成问题q:

  

2)使用生成的问题q,在给定的句子t中抽取问题的答案,如果抽取出了答案,则组成三元组,否则句中没有对应的关系三元组。

模型细节       

1)候选问题生成使用模板       

2qa模型用的BiDAF(一种经典的基于BiLSTM的问答模型);       

3)输出用的头尾指针标注,限定最多只能有一个答案,使用了softmax输出每个字作为答案头尾的概率,取头尾概率乘积最高的区间作为答案;空答案使用阈值过滤(还提出了另外一种空答案的过滤方式,但是没啥意义)。

额外说明       

1)模型没有给出实体s的抽取方法,按照正常推算应该是用NER的方法抽取得到。       

2)标题的Zero-Shot的意思是:对于训练集中出现过的关系类型,使用新的问题模板,最后也能抽取得到关系三元组;对于训练集中没有出现过的关系类型,使用相似的问题模板生成问题,最后效果虽然很差,但是也能抽取得到一部分关系三元组。 

2. 后起之秀,端到端地使用阅读理解模型抽取关系三元组

Entity-Relation Extraction as Multi-turn Question Answering

基本框架:给定一组实体关系三元组的schema,从句子t中抽取给定schema中的关系三元组,其中subjectobject是句子t中出现的,predicateschema给出的。

模型概况      

 1)对于schema中的每一类关系三元组,根据模板生成两个问题:句子当中有没有提到subject类型的实体?句子当中提到的subjectpredicate是什么?

       

2)设计一个问答模型来回答第一个问题,这个问答模型用来抽取subject,是一个多答案的问答模型;(对于一个句子,需要问多个问题来抽取所有的subject      

 3)根据第一个问题的答案生成第二个问题;(对于一个已定类型的subject,需要生成多个第二类问题来抽取其相关的所有三元组,每个问题对应一类predicate       

4)设计一个问答模型来回答第二个问题,这个问答模型用来抽取object,这是一个单答案的问答模型;(这一步的每个问题与一个subjectpredicate绑定,抽取得到的object可直接组成关系三元组)

模型细节       

1)两类问题的生成依靠模板,文中还设计了一个强化模型来根据不同的句子选择最为合适的模板;       

2)文中的qa模型借鉴了BiDAF,但是最后使用的是BERT框架实现字/wordembedding,将问题和句子合并起来[CLS,Q,SEP,C,SEP]输入到BERT模型中得到embedding       

3)输出层使用的BMEO序列标注的方法;       

4)两模型共用参数,一起训练,共用到什么程度文中没写,大概是所有参数都共用。

额外说明       

1)自己设计提出了一个中文的关系抽取数据集RESUME 

3.    拿阅读理解的框架做命名实体识别

A Unified MRC Framework for Named Entity Recognition

基本框架:给定一组实体类型,在句子s中抽取得到指定类型的实体,很多情况下实体之间会相互重叠(例如,鲁迅自传),文章致力于解决这个问题。

模型概况      

 1)问题生成,根据实体类型生成相应的问题,问题当中包含这个实体类型的其他描述等信息。

  

2)使用阅读理解模型来回答这个问题,对应着抽取得到相应类型的实体。

模型细节       

1)问题生成靠人工,基本模板是问题+实体类型的描述      

 2)阅读理解模型使用的BERT模型,将问题和句子文本合并起来[CLS,Q,SEP,C,SEP],经过BERT后其他网络没有描述;       

3)输出层使用头尾指针标注,头尾指针标注时每个字有一个二维(是/否)softmax输出,最后得到每个字能否作为头尾实体边界。       

4)最后头尾实体边界的匹配并不是就近匹配,而是使用了一个实体头尾边界匹配模型(二分类模型)来判断一头一尾能否匹配来得到指定的实体。       

5)阅读理解模型和头尾实体边界匹配模型公用部分参数(BERT参数公用),loss加起来一起训练。

额外说明       

1)文章其实很简单,但是做了很多对比实验和分析:对比了其他各种NER模型,对比分析了是BERT的提升还是MRC阅读理解框架的提升,对比了Nested NER(实体之间有重叠)和Flat NER两种数据集上面的效果,对比了不同问题的生成方式的影响等等;      

 2)方法具有zero-shot效应:训练集中没有的实体类型,依照相似的方法生成对应的问题,也能在句子当中抽取得到相应类型的实体,虽然效果比较差。 

4. 使用特殊的标注方法来进行端到端的实体关系抽取

Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme

基本框架:给定一组实体关系三元组的schema,从句子t中抽取给定schema中的关系三元组。将实体关系抽取建模为序列标注模型,采用特殊的标注方法端到端地抽取实体关系三元组。

模型概况       

1)序列标注模型将句子序列中的每个字进行标注;       

2)对标注进行解码,得到实体关系三元组;

模型细节       

1)标注策略:给定实体关系三元组schema,一共有N类关系,标注标签最后有2*4*N+1种标签,最后的1Ooutside),对于每一类关系,有2*4种标签:(B-XX-1, I-XX-1, E-XX-1,S-XX-1)(B-XX-2, I-XX-2, E-XX-2,S-XX-2),分别表示头实体和尾实体的标注,头尾实体的标注使用标准的BIES标注手法。

2)序列标注模型:基于BiLSTMencode-decode模型


  3)针对标注进行解码:(B-XX-1, I-XX-1, E-XX-1,S-XX-1)(B-XX-2, I-XX-2, E-XX-2,S-XX-2)标注出实体Subject-XXObject-XX,然后两两就近匹配,组成(Subject,XX,Object,XX就是predicate。

额外说明      

 1)模型对最后的loss进行了调整,降低了O标签的权重,增加了relation相关标签的权重;       

2)相同XXSubject-XXObject-XX可能有多组,这个时候模型采用就近匹配,不同XX之间不影响,无法处理实体重叠现象。 

5. lic2019关系抽取比赛冠军队伍的模型

http://tcci.ccf.org.cn/summit/2019/dlinfo/1104-ljq.pdf

基本框架给定一组实体关系三元组的schema,从句子t中抽取给定schema中的关系三元组。

模型概况       

1)存在关系识别模型:识别句子当中有哪些类型的实体关系三元组;

       

2)关系抽取模型:仿照上面的qa模型,将要识别类型的实体关系三元组类型信息与待抽取句子连起来,输入到一个标注模型当中。

标注模型给出每个字作为Subject开头、Subject结尾、Object开头、Object结尾的概率。

模型细节       

1)存在有两个模型:存在关系识别模型与关系抽取模型,前者只是为后一个模型进行一次初步的筛选,防止后一个模型需要遍历所有类型的关系三元组。      

 2)两个模型公用架构与大部分参数,基本架构为Bert+Dgcnn

 

 3)存在关系识别模型的输入是待抽取的句子,输出是一个多分类sigmoid输出,用于判断句子中存在哪些关系类型,用于后一个模型遍历。      

 4)关系抽取模型输入是候选关系类型+待抽取句子,两者拼接起来输入,输出是每个字上面4个指针标注输出:作为Subject开头的概率、作为Subject结尾的概率、作为Object开头的概率、作为Object结尾的概率。       

5)解码过程先产生SubjectObject候选集合,排除覆盖和相交部分(分数高者胜出),最后匹配形成三元组:

额外说明       

1)训练过程两个模型一起训练,预测过程先预测得到候选实体关系类型,遍历得到的结果,使用关系抽取模型抽取关系。 

6. lic2019关系抽取比赛第7名队伍模型

https://kexue.fm/archives/6736

基本框架给定一组实体关系三元组的schema,从句子t中抽取给定schema中的关系三元组。

模型概况       

1Subject抽取模型:从待抽取句子当中抽取得到候选的Subject       

2Predicate+Object抽取模型:遍历上面得到的Subject,抽取得到句子当中对应所有类型PredicateObject,分别组成三元组。

模型细节      

1)模型分为两个部分,整体架构采用Embedding+DGCNN+self-attention+CNN的架构,整体设计非常复杂,如下图所示:
       2Subject模型负责得到所有候选的Subject,输出双层指针标注,分别表示subject的头和尾的位置,解码时就近匹配处理。       

3Predicate+Object模型,负责输出Subject对应所有Predicate的情况下,句子当中是否有Object以及Object位置,输出层对应每个Predicate有两层指针标注,分别表示对应类型的object的头和尾的位置,解码时就近匹配处理。

额外说明       

1)两个模型共用embedding+dgcnn部分的参数,并且一起训练; 随时获取华为云AI最新动态,欢迎关注华为云AI公众号:


随时获取华为云AI最新动态,欢迎关注华为云AI公众号:

B8483785-C43D-4374-9026-618F8EBE3597.png