Press "Enter" to skip to content

分层上下文表征:句子级+文档级

《Hierarchical Contextualized Representation for Named Entity Recognition》阅读笔记

 

paper: Hierarchical Contextualized Representation for Named Entity Recognition

 

code: cslydia / Hire-NER

 

source: AAAI-2020

 

论文概述:

 

主要工作/创新点:

引入了分层上下文表征,即分别提取了句子级和文档级信息,融入embedding提高了对非近邻信息( non-local information )的利用能力。
分别使用label embedding attention mechanism和键-值记忆网络提取句子级和文档级信息。

概述:

 

本文在三个数据集上实现了SOTA的效果,虽然提高并不多,但是其提取的embedding利用到了句子级和文档级两个层次的信息,同时还引入了实体label更多的信息而不仅仅是利用label index ,思路值得参考。

 

1、Introduction

 

首先分析BiLSTM在利用全局信息上存在的两个缺陷 :

 

1、在每一个时间步(time step),它都是以前一个cell 的状态和当前的word embedding作为输入,因此较难捕获句子级信息。

 

2、虽然BiLSTM是利用训练实例的迭代来更新参数,但是无论是在训练过程还是预测过程,实际上都是只利用了单个实例,即缺少更高层次的信息——文档级信息( document (dataset)-level information )。数据集中每一句话都是一条相对独立的训练实例,并没有构成文章即实例间不构成上下文关系,所以为什幺用利用文档级信息呢?

 

针对以上问题,本文提出的分层上下文表征的具体做法:

 

对于sentence-level representation ,基本思路是使用word和它对应的label embedding的相似度对句向量进行加权,作为使用sentence-level representation。

 

所谓的label embedding是随机取出属于类标签 的几百个具体的实体,然后对这些实体的word embedding取平均,作为 的embedding。

 

这样训练出来的label embedding有两个较好的性质:1、一定程度上引入了更多的关于实体标签本身的信息;2、对于每一个word embedding,其更倾向于接近它所属的标签的embedding,远离其他标签的embedding。

 

之后计算每个word embedding与离它最近的label embdding间的相似度,作为一个置信度分数,该置信度分数可以用来加权每个word对于sentence-level representation的贡献,即使用word的置信度对句子中的所有word进行加权,得到句子级表征。

 

对于document-level representation ,使用键值记忆网络。

 

2、Model

 

整体模型结构如下图A,模型由解码器(上)、序列标注编码器(右上)、句子级编码器(右下)、文档级编码器(左)四个模块组成。

图A

Token Representation :对于一个输入序列 ,其中每个词 其表征采用词向量(word embedding) 和字符向量(character embedding) 的联合表征,即 ,其中 是预训练词向量, 训练的字符向量;

 

Sequence Labeling Encoder :序列标注编码器由BiLSTM构成,其输入是上述得到的 再拼接上sentence-level encoder的输出,即 。BiLSTM的计算如下:

 

 

其中, 和 是待训练参数。

 

Decoder :

 

简单回顾一下CRF ,一般CRF特指线性条件随机场,即给定X的条件下,Yi仅与其左右相邻状态有关。CRF相关的一些推导及介绍,感觉《白话条件随机场》这篇文章讲得不错。

 

 

 

 

这三条公式,对应于:

 

 

其中, 是转移特征函数,用于衡量当前词 的标签 受周围词标签 影响的程度; 是状态特征函数,用于衡量当前词的标签 受当前词 影响的程度。

 

简单理解就是,对于一个输入序列: ,它的 一个 可能的标签序列为 ,二者等长。对于 ,它的标签 既跟 有关,同时也和它周围词的标签有关,这在语法上也较好理解,如果它前一个词是形容词,那幺它更可能是名词而不是动词,对吧?

 

所以对于其中 一个 可能的标签序列,得分为

 

然后做一个softmax,就是 ,训练目标就是找到一个使得 最大的标签序列 。

 

Sentence-level Representation:

 

句子级表征由sentence-level Encoder生成,基本思路是先用BiLSTM训练词序列得到隐藏层状态,然后用计算词序列和标签的相似度,取最大的相似度,softmax后作为权重,将权重乘以隐藏层状态即为句子级embedding。

 

BiLSTM的输入是 : word embedding, : character embedding,输出的隐藏层状态 ,N是序列长度, 是隐藏层维度。

 

对于权重的计算:先计算词序列中每一个词和每个标签的余弦相似度,然后通过max pool找到最大相似度,做一个softmax映射到[0~1],得到权重 ,乘以BiLSTM输出的隐藏层状态 ,得到句子级表征

 

Document-level Representation:

 

使用文档级表征,是为了将文档级的信息作为额外的信息帮助预测标签。本文采用key-value memory networks,提取文档级信息。记忆槽(memory slots)用向量对 定义,其中 对应词嵌入 , 对应序列标注编码器输出 ,因为同一个词在不同的训练实例下有不同的上下文,因此也有不同的embedding所以它可能会出现在多个记忆槽中。

 

Memory Update :由序列标注编码器的输出进行更新;

 

Memory Query :对于序列中第 个词,提取出它在Memory中的所有上下文表征。

 

对每个词进行检索得到 ,将它们分别作为 做attention, 。attention的计算方法有一下三种:

 

(1)

 

(2)

 

(3)

 

然后使用下式计算文档级表征:

 

 

最后输入到CRF的fusion representation是: ,其中 是超参数。

 

3、Experiment

 

数据集:CoNLL-2003 English NER、OntoNotes 5.0、CoNLL_2002 Spanish NER

 

对于前两个数据集,使用100维的Glove,对于最后一个数据集使用64维的Glove;

 

character embedding :使用IntNet character embeddings(Xin et al.2018);

图B:F1 scores on CoNLL-2003

图C: F1 scores on CoNLL-2002

图D: F1 scores on OntoNotes 5.0

如图B,与一些SOTF的模型比较,本文的模型有零点几的提高,在增加了BERT后,仍然高于其他模型,图C和图D分别对比了其他两个数据集上的结果,总体上都有所提高,虽然幅度不高。

 

消融实验:

 

实验1: 验证sentence-level representation和document-level representation的有效性:

两种表征都对性能的提高起了作用。

 

实验2: 验证加权方式的有效性,分别是计算句子级表征时采用mean-pooling还是用label加权、计算文档级表征时attention方式的选取:

Memory Size and Time Consuming:

分析了在不同的Max memory size for unique word下,模型的F1分数和耗时。

 

Improvement Discussion:

分析了对于不同的词,模型的预测准确率。

 

IV :in-both-vocabulary words; OOTV :out-of-training-vocabulary words; OOEV :out-of-embedding-vocabulary words ; OOBV: out-of-both-vocabulary words

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注