笔记:Joint Extraction of Entities and Overlapping Relations Using Position-Attentive Sequence Labeling


Joint Extraction of Entities and Overlapping Relations Using Position-Attentive Sequence Labeling

作者:Dai Dai et al., AAAI 2019.

目录

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

1 简介

对比之前的两篇(Zheng et al., ACL \(^{[3]}\), Zeng et al.,ACL \(^{[4]}\)),这三篇都是做联合抽取实体和关系的任务,不同的是,(Zheng et al.)这篇无法解决关系重叠的问题,(Zeng et al.)这篇虽然解决了关系重叠的问题,但是他的方法只能针对单个词的实体,对于多词实体即一个实体由多个词构成的情况无法处理(这也正是读这篇paper时的疑问),因此本篇paper类似(Zheng et al.)也设计了一个新的标注方案,将联合抽取看作是三元组抽取转化为序列标注任务,同时利用提出的position-attentive模型进行标注,进而抽取关系和实体,既能解决关系重叠问题,又适用于多词实体的情况。

2 方法

首先介绍新的标注方案,将抽取任务转化为一系列序列标注任务(为什么是一系列序列标注?与position-attentive有关),之后基于此标注方案,详细介绍position-attentive序列标注模型--即如何标注的。

2.1 Tagging Scheme

如图Figure 2,为标注方案的一个例子。

他这个标注感觉是实体和关系标注混合了,n为句子长度,p为词的位置。首先,正如介绍中所说是position-attentive,此标注要基于不同位置的p,产生不同的句子表示,那么n个词就会有n个表示,所以说是一些列标注任务。
其次,具体的标注条件是若p位置的词是实体的开始词,那么就去其他位置找与它有关系的实体并标注关系类型,那么由于会遍历所有位置p然后去匹配其他实体,那么说明实体可以重复利用且对于反向关系也能处理,就解决了关系重叠问题,同时实体的标注采用BIES标注方案,那么也就能够解决多词实体的问题了。
例如,figure 2中p=5, “Trump”为S-PER,那么与其他位置与它有关的实体依次构成不同的关系, (trump, President_of,United States)等,标注缩写见Figure 2中的说明。

2.2 End-to-End Sequence Labeling Model with Position-Attention

那么知道标注方案后,如何进行标注呢,本节就介绍具体的序列标注模型。结构图如Figure 3所示。

Bi-LSTM Encoder

首先对于图中Word Character部分,就是序列标注任务中常见的处理,使用CNN做字符级别的embedding与预训练的word embedding拼接得到最终的输入词表示,使用BLSTM作为编码器,使用其输出作为计算Position Attention的输入。

Position-Attention Mechanism

抽取所需要的主要的信息就是实体所包含的词的信息、句子中相关联的实体信息(这就需要位置信息)以及两实体之间的关系信息(这就需要上下文信息),因此基于此想法,提出了position-attention,既能够根据位置p编码实体信息,又能够编码整个句子的上下文信息,进而产生position-aware和context-aware的句子表示:\(\{\mathbf{u}_t\}_{t=1}^n\),作为下一步的输入。

其中,\(\mathbf{u}_t\)表示每种句子表示的第t个词(假设句子长度为n),\(h_t\)表示表示位置t处的hidden state,\(c_t\)表示整个句子的attention-pooling vector--即对整个句子attention后信息集成的向量。

\(c_t\)就是对每个位置的hidden state \(h_j,j=1,...,n\)的权重求和,\(a_{tj}\)为权重,通过对得分\(s_{tj}\)做softmax得到,t为当前要进行表示的词位置t,\(s_{tj}\)是通过\(h_j,h_p,h_t\)计算得到的每一个位置的得分。那么为什么要使用这三个hidden state计算呢,这就回到此小节开头说到的编码位置和上下文信息的问题,对于当前遍历的位置p的hidden state,通过\(h_p\)与所有位置的hidden state \(h_j\)计算,得到我们需要的针对当前遍历到的位置p处的实体与其他词的位置信息。我们是要根据不同的位置p表示整个句子的,对于t位置的要表示的词,我们利用\(h_t\)\(h_j\)计算得到t位置词的上下文信息。也就是说利用\(h_p\)\(h_t\)分别与\(h_j\)计算编码针对当前遍历位置p与当前表示位置t的位置信息和上下文信息。

如图Figure 3,先利用虚线框中的\(h_t,h_p\)与虚线箭头的\(h_j,j=1,...,n\)计算\(a_t\),之后再利用\(a_t\)对每个实现箭头也是\(h_j\)加权处理得到\(c_t\),最后再将\(c_t\)\(h_t\)拼接得到CRF层的输入。至于为什么\(u_t\)\(h_t,c_t\)的拼接,个人感觉要预测当前t位置的词的标签,肯定需要当前词的信息\(h_t\)以及整个句子集成的信息\(c_t\)

CRF Decoder

\(\{\mathbf{u}_t\}_{t=1}^n\)作为输入预测标签,对于LSTM-CRF标签预测结构原理之类的解释,见参考[5]。

最后对每个输入语句都标注得到标签序列后,就按照Figure 2的方法依次结合三元组。

3 实验

作者做了很多实验,包括消融实验、attention权重分析--看看到底是否编码了位置和上下文信息,以及对一定程度的长距离的实体关系抽取也能用等,值得看看包括里面一些论述对于理解此模型或此类联合抽取任务都有帮助,这里就不再赘述了,感兴趣可以看看原文。

4 总结

还是那个问题,单就序列标注任务,虽然明白了序列标注模型,但序列标注其实就是多分类嘛,那这数据集如NYT10里的数据也没他提出的这个新的标注的类别标签啊,模型怎么标注啊哪里知道哪类是哪个标签,不像传统多分类如NER虽然也是给每个词打标签,但人家数据集本身就是这样的啊每个词都有个标签到时候模型根据训练集预测标签与真实标签计算损失学习就行了,他或者(Zheng et al., ACL)提的新的标注方案都一样,这数据集都没有这样标签的数据怎么训练啊???主要他这还是关系实体标签混着来的要是单就实体标签还有这样的标注数据集,难道自己手动标啊这么多条数据呢,以后看看代码或者其他paper吧,搞不懂。

参考

【1】Dai Dai,Xinyan Xiao,Yajuan Lyu,Shan Dou,Qiaoqiao She,Haifeng Wang.Joint Extraction of Entities and Overlapping Relations Using Position-Attentive Sequence Labeling.AAAI 2019.

【2】论文笔记 – Joint Extraction of Entities and Overlapping Relations Using Position-Attentive Sequence Labeling.https://ivenwang.com/2020/12/18/pa-lstm-crf/.

【3】Suncong Zheng, Feng Wang, Hongyun Bao, Yuexing Hao,Peng Zhou, Bo Xu.Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme.ACL 2017.

【4】Xiangrong Zeng, Daojian Zeng, Shizhu He1, Kang Liu, Jun Zhao.Extracting Relational Facts by an End-to-End Neural Model with Copy Mechanism.ACL 2018.

【5】BiLSTM + CRF 学习.https://ivenwang.com/2020/06/12/bilstmcrf/.