近几年做结构化信息抽取的一些论文和模型
1. 最早拿阅读理解模型做关系抽取
Zero-Shot Relation Extraction via Reading Comprehension
基本框架:给定一个实体s以及一个候选关系e,从文本t中抽取出e(s, ?)所对应的关系(没有的话输出None)。
模型概况:
1)候选问题生成:给定实体s和关系e,根据问题模板生成问题q:
2)使用生成的问题q,在给定的句子t中抽取问题的答案,如果抽取出了答案,则组成三元组,否则句中没有对应的关系三元组。
模型细节:
1)候选问题生成使用模板;
2)qa模型用的BiDAF(一种经典的基于BiLSTM的问答模型);
3)输出用的头尾指针标注,限定最多只能有一个答案,使用了softmax输出每个字作为答案头尾的概率,取头尾概率乘积最高的区间作为答案;空答案使用阈值过滤(还提出了另外一种空答案的过滤方式,但是没啥意义)。
额外说明:
1)模型没有给出实体s的抽取方法,按照正常推算应该是用NER的方法抽取得到。
2)标题的Zero-Shot的意思是:对于训练集中出现过的关系类型,使用新的问题模板,最后也能抽取得到关系三元组;对于训练集中没有出现过的关系类型,使用相似的问题模板生成问题,最后效果虽然很差,但是也能抽取得到一部分关系三元组。
2. 后起之秀,端到端地使用阅读理解模型抽取关系三元组
Entity-Relation Extraction as Multi-turn Question Answering
基本框架:给定一组实体关系三元组的schema,从句子t中抽取给定schema中的关系三元组,其中subject和object是句子t中出现的,predicate是schema给出的。
模型概况:
1)对于schema中的每一类关系三元组,根据模板生成两个问题:句子当中有没有提到subject类型的实体?句子当中提到的subject的predicate是什么?
2)设计一个问答模型来回答第一个问题,这个问答模型用来抽取subject,是一个多答案的问答模型;(对于一个句子,需要问多个问题来抽取所有的subject)
3)根据第一个问题的答案生成第二个问题;(对于一个已定类型的subject,需要生成多个第二类问题来抽取其相关的所有三元组,每个问题对应一类predicate)
4)设计一个问答模型来回答第二个问题,这个问答模型用来抽取object,这是一个单答案的问答模型;(这一步的每个问题与一个subject和predicate绑定,抽取得到的object可直接组成关系三元组)
模型细节:
1)两类问题的生成依靠模板,文中还设计了一个强化模型来根据不同的句子选择最为合适的模板;
2)文中的qa模型借鉴了BiDAF,但是最后使用的是BERT框架实现字/word的embedding,将问题和句子合并起来[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种标签,最后的1是O(outside),对于每一类关系,有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)序列标注模型:基于BiLSTM的encode-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-XX和Object-XX,然后两两就近匹配,组成(Subject,XX,Object),XX就是predicate.
额外说明:
1)模型对最后的loss进行了调整,降低了O标签的权重,增加了relation相关标签的权重;
2)相同XX的Subject-XX和Object-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)解码过程先产生Subject和Object候选集合,排除覆盖和相交部分(分数高者胜出),最后匹配形成三元组:
额外说明:
1)训练过程两个模型一起训练,预测过程先预测得到候选实体关系类型,遍历得到的结果,使用关系抽取模型抽取关系。
6. lic2019关系抽取比赛第7名队伍模型
https://kexue.fm/archives/6736
基本框架:给定一组实体关系三元组的schema,从句子t中抽取给定schema中的关系三元组。
模型概况:
1)Subject抽取模型:从待抽取句子当中抽取得到候选的Subject;
2)Predicate+Object抽取模型:遍历上面得到的Subject,抽取得到句子当中对应所有类型Predicate的Object,分别组成三元组。
模型细节:
1)模型分为两个部分,整体架构采用Embedding+DGCNN+self-attention+CNN的架构,整体设计非常复杂,如下图所示:
2)Subject模型负责得到所有候选的Subject,输出双层指针标注,分别表示subject的头和尾的位置,解码时就近匹配处理。
3)Predicate+Object模型,负责输出Subject对应所有Predicate的情况下,句子当中是否有Object以及Object位置,输出层对应每个Predicate有两层指针标注,分别表示对应类型的object的头和尾的位置,解码时就近匹配处理
额外说明:
1)两个模型共用embedding+dgcnn部分的参数,并且一起训练;
PS:文中截图均来自不同文章或博客,禁止转发用于商业用途。
- 点赞
- 收藏
- 关注作者
评论(0)