[NLP] 实体链接论文阅读—Entity Linking for Chinese Short Texts Based on BERT and Entity Name Embeddings

Entity Linking for Chinese Short Texts Based on BERT and Entity Name Embeddings

写在前面:
最近在阅读实体链接论文,实体消歧是实体链接必须有的步骤,而实体链接的前一步为实体识别,对于只想知道本文到底用什么方法进行实体消歧并实体链接的,请直接移步第三部分Model架构的描述。这次直接用raw markdown写了,尝试过用线上编辑器hackmd或是mac自带的pages,问题都出在图片的问题,才发现imgur的图床原来不能直接连,然后pages排版要在博客发表又要重新编辑加上简繁转换等很麻烦der东西,所以直接写raw markdown了啊。原文编撰的不是很用心,很多重要的细节只套用个公式不对变量加以说明就带过,而且连引用的公式都出错。包含从Transformer引用的position encoding和后面的BERT-ENE模型连名字都打错,嗯…没关系我们只是要去了解架构对吧。

Abs.

传统实体链接任务主要是针对长文本,拥有完整的上下文信息,有助于实体识别与实体消歧。由于口语化、方言和短文本不足的上下文,中文短文本实体链接尚具挑战。
整个实体链接过程包含两个任务:实体识别和实体消歧。

实体识别

  1. 使用知识库内的文本描述信息来提高实体识别的表现,提出了BERT-EntityNameEmbedding (BRT-ENE) 模型。
  2. 特别是实体的词向量迁入是由知识库中实体的描述文本从中挖掘而来。
  3. 短文本内的候选实体用名称辞典匹配技术得到。
  4. 最后结果再用BERT-ENE模型过滤,完成实体识别任务。

另外还提出了BERT-ENE模型与BERT-CRF模型的组合,可以跟传统方法显著改善识别效果。

实体消歧

视为二分类模型,将预测的概率排序。最高概率的实体当作正确实体。基于本文提出的方法,我们在CCKS2019的中文短文本实体链接任务中得到了第一名。

1 Introduction

实体链接过程

网络上的数据包含了大量的命名实体,然而这些实体的含义通常很模糊,特别是当命名实体频繁出现时。一个实体可能有许多名称,仅仅单一个名称可能代表着数个不同命名实体,再来,随着诸如Wikipedia之类的知识共享社区的出现,信息提取技术的迅速发展促进了大规模知识库的自动构建,知识库包含了实体、实体自身信息和实体之间的信息。知识库的自动构建涉及到网络文本的关系抽取,然后再加入到知识库内。在这个阶段,要将抽取出的实体进行消歧,就叫做实体链接 (Entity Linking)。实体链接任务将已识别的实体引用映射到现有知识库中的正确实体对象。

本文提出的方法旨在解决CCKS2019任务2:中文短文本实体链接。知识库数据由百度提供,长度最多为50个字符,平均在27个字符。数据采样在下列的text/mention中能看到。

在此范例中,句子含有16个字符,5个实体,其中有单一字符的实体'诗'。从这里我们能看到这个任务的困难度。相较于更长的文本以及英语文本,中文短文本实体链接有更大的困难。

text:
求一些亦正亦邪的人物的性格描写《有所思》 萧衍的诗 南北朝诗人

mention:
人物, 性格, 有所思, 萧衍, 诗, 南北朝, 诗人

BERT-CRF模型只能使用短文本信息,而不能利用知识库的信息。因此,仍然会存在诸如实体边界识别错误和实体识别不完整等问题。为了弥补这些不足并充分利用知识库的信息,我们提出了BERT-ENE模型。 对于实体消歧的子任务,我们将其视为二分类问题,并使用基于BERT的二分类模型对候选实体消歧。

主要的创新点在于:

  1. 预训练模型技术性的部署在短文本的实体识别和消歧中,充分提取短文本的语义信息。
  2. 实体识别过程中,引入实体名称的向量嵌入 (embedding) ,充分利用知识库的文本描述信息,解决短文本信息量太少的问题。
  3. 提出一种结合BERT-ENE模型和BERT-CRF模型的新模型,大大提高实体识别的有效性。

2 Related Work

本文采取的两种子任务的解决办法:

  • 实体识别子任务:主要基于匹配技术使用命名实体识别与名称辞典。
  • 实体消歧子任务:采取二分类的思想来完成消歧。

鉴于命名实体识别策略不能完全认出文本中所有候选实体,研究人员使用基于名称词典的匹配技术去增进效能,名称辞典是从知识库中抽取而来的。词典中的每个名称都是一个keyword(关键字),我们可以使用不同方法得到候选实体,其中有许多精确匹配的策略。为了增加召回率(recall),(Zheng et al.)使用用字串匹配规则的宽松匹配而不是精确匹配;为了增加精确率(precision),有些研究使用经验概率去选择候选实体。现存针对选择匹配结果的方法大部分都基于规则或是概率,缺少了深度学习模型的优点。

当前主要有三种实体消歧方法,例如基于rank、基于二分类方法、基于图模型方法。下一步我们专注在探讨二分类方法,直接与我们的工作相关。

二分类方法:mention和候选实体的关联特征通常用于训练二分类模型,这个模型可以确定候选实体是否为正例,例如:

  • (Pan et al.)抽取了包含单词特征、单词目录和命名实体目录的特征,再使用SVM分类。

传统机器学习方法依赖大量手工特征,特征的品质会很严重的影响分类器的效能,例如:

  • (Sun et al.)提出使用深度学习方法得到mention、上下文和实体的语义表示。
  • (Huang et al.)提出深度与义关联模型来度量实体语义关联。
  • (Ganea et al.)通过实体嵌入(entity embedding)和局部上下文窗口注意力机制实现实体消歧。

3 Model

3.1 Data Preprocessing

训练数据:

  • text:文本
  • ment_data:包含mentionkb_id栏位

知识库:

  • subject_id:主体ID
  • subject:主体
  • alias:别名
  • data:包含多个predictate(谓词)object(对象)栏位
  • …等

Introducing a new alias 引入新的别名:对数据集进行统计分析后,发现训练集中少数实体名称跟在实体库中不匹配,例如:

  1. 安妮 '海瑟薇:文本中有特殊字元
  2. 新浪微薄:输入文本中的实体名称错误
  3. 国家质检总局:知识库没有此别名

为了解决像上述例子的问题,引入了对应于知识库中实体的新别名,步骤如下:

  1. 对于错误1,规范特殊字元并将处理后的名称添加到相应实体的别名。例如所有中文标点符号都转换成英文标点符号。
  2. 对于错误2和错误3,计算实体不匹配的次数EnumE_{num},训练集中实体E不匹配的所有字串M1,M2,...,MiM_1,M_2,...,M_i的出现次数,以及每个MiM_i的出现次数MinumM_{i_{num}}。如果Enum>4E_{num}>4Minum>3M_{i_{num}}>3,就将字串MiM_i添加到实体E的别名。

Construction of entity description text 构造实体描述文本:将数据中的predicate(谓词)object(对象)连接,得到实体描述文本。为了方便后续处理,再根据以下规则截断文本:谓词和宾语的长度>30时按比例截断,否则不截断。

Name dictionary construction 构造名称词典:根据实体名称、实体别名、实体名称的小写字母和上面新引入的别名构成。构造名称词典后,每个实体名称对应一个或多个实体ID。例'victory':[‘10001’, ‘19044’, ‘37234’, ‘38870’, ‘40008’, ‘85426’, ‘86532’, ‘140750’]。

3.2 Entity recognition

实体识别的部分使用BERT-CRF架构模型,如图:

[NLP] 实体链接论文阅读—Entity Linking for Chinese Short Texts Based on BERT and Entity Name Embeddings

BIO标注格式的BERT-CRF模型,BERT的[CLS]和[SEP]的位置用tag TAG表示。

Input layer

BERT的输入为word embedding、position embedding和type embedidng的总和。

  • word embedding对应于每个单词
  • type embedding的值为0或1,表示是否为被截断的第一个句字或第二个句子。0表示第一个句子,1表示是第二个句子。

命名实体识别任务中只有一个句子,且type embedding总是为0,要学习时间序列特征。BERT使用position embedding来作为时间序列的信息,下列为position embedding的计算公式:

PE(pos,2i)=sin(pos/100002i/dmodel,(1)PE(pos, 2i)=\sin (pos/10000^{2i/d_{model}}, (1)

PE(pos,2i+1)=cos(pos/100002i/dmodel,(2)PE(pos, 2i+1)=\cos (pos/10000^{2i/d_{model}}, (2)

这里使用sin和cos纯粹只是因为Transformer的作者基于经验法则,使用有界的周期性函数,以避免失去相邻位置字符的信息差异以及控制位position embedding的值域在一定范围内,这个部分在Transformer的原文也没有仔细描述,建议可以看看知乎大牛们的解释,总之就是一个小技巧。

BERT layer

包含12层Transformer的编码器架构。编码器单元最重要的模组是自我注意力的部分。如下列公式:

(Q,K,V)=softmax(QKTdk),(3)(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}}), (3)

Q,K,VQ,K,V为输入单词向量矩阵,dkd_k是输入向量维度。核心是self-attention(自我注意力机制)

为了让模型能够专注在不同位置上,增加注意力单元的"representative subspace(代表子空间)",Transformer使用multi-head模式,如下公式:

MultiHead(Q,K,V)=Concat(head1,....,headh)Wo,(4)MultiHead(Q, K, V ) = Concat(head_1 , ...., head_h)W^o, (4)

headi=Attention(QWiQ,KWik,VWiV),(5)head_i = Attention (QW_i^Q , K W_i^k , V W_i^V), (5)

所謂的multi-head多頭模式就是將q, k, v分成多個,q_1,q_2,…和k_1,k_2,…,和v_1,v_2,…等,

为了解决深度学习中的降级问题,将残差网路和layer的归一化添加到Transformer编码器单元,如下公式:

Layer norm LN(xi)=α×xiμLσL2+ε,(6)LN(x_i)=\alpha \times \frac{x_i- \mu _{L}}{\sqrt{\sigma_L^2+\varepsilon}}, (6)

全連接網路 FFN=max(0,xW1+b1)W2+b2,(7)FFN=\max(0,xW_1+b_1)W_2+b_2, (7)

CRF layer

BERT layer考虑长期的上下文信息,没有考虑标签之间的依赖关系。采用CRF对标签序列建模,通过考虑标签之间的邻接关系来获得全局最佳的标签序列。

3.3 BERT-EntityNameEmbedding (BERT-ENE) model

如下图所示,特点有:

  1. 使用知识库内的实体名称和别名信息构建一个实体名称辞典。
  2. 使用BERT预训练模型和实体描述文本来选择[CLS]位置的向量输出作为实体名称的embedding。
  3. 通过辞典匹配获得短文本中的候选实体。
  4. 使用BERT-ENE模型过滤匹配结果。

[NLP] 实体链接论文阅读—Entity Linking for Chinese Short Texts Based on BERT and Entity Name Embeddings

Dictionary matching:使用构建的实体名称辞典,采用最大精准度匹配的思想来在文本中匹配实体。为了增进匹配精准度,在不匹配的名称词典中留下单一字符的实体名称,例如'诗'

Entity name embedding:实体名称embedding透过BERT模型得来,有下列特点:

  1. 每个实体文本描述都输入到BERT model,在位置[CLS]的输出向量被抽取来表达该实体的意义。我们因此得到每个实体的向量表示。
  2. 在一实体名称只对应到一个实体(一对一)的case中,实体对应的向量必须直接使用实体名称的嵌入,例如:'无尽武道':['10007]
  3. 在一个实体名称对应到多个实体(一对多)的case中,使用向量平均,例如:‘胜利’: [’10001’, ’19044’, ’37234’, ’38870’, ’40008’, ’85426’, ’86532’, ’ 140750’]

使用了这个方法,在本文的实验中,每个实体名称有768维度的embedding。

BERT-ENE model:输入有两个部分:短文本和实体名称embedding。像BERT一样,短文本输入也有三个部分:单词嵌入、位置嵌入和类型嵌入。短文本输入层是一个BERT layer和一个GRU layer。

GRU是RNN的变体,其计算过程如下:

zt=σ(Wi[ht1,xt]),(8)z_t=\sigma(W_i \ast [h_{t-1}, x_t]) , (8)

rt=σ(Wr[ht1,xt]),(9)r_t=\sigma(W_r \ast [h_{t-1}, x_t]) , (9)

ht~=tanh(Wc[rtht1,xt]),(10)\tilde{h_t}=\tanh (W_c\ast [r_t \cdot h_{t-1},x_t]), (10)

ht=(1zt)ct1+ztht~,(11)h_t=(1-z_t)\cdot c_{t-1}+z_t \cdot \tilde{h_t}, (11)

为了取得上下文信息完全的优点,有两个方式去实现GRU。BERT输出首先输入到GRU的前向网络和反向传播网络中。

  1. GRU前向网络结尾位置上匹配实体名称到对应的向量VendV_{end}
  2. GRU反向网路中对应到开始位置的向量VbeginV_{begin}被抽取

将这两个向量拼接成VconV_con,作为该实体名称的语义表示。为了学习全文信息,分别对前向和反向GRU的输出进行max pooling(最大池化)操作,以获得向量VmaxV_{max},来表示整个文本的语义。最后再把VmaxV_{max}VconV_{con}与相应的嵌入实体名称拼接在一起,透过CNN layer的全连接层,再经过sigmoid**函数,得到预测的概率。

BERT-ENE模型本质上是一个二分类模型,目的是过滤出匹配的实体。损失函数如下:

loss=i=1nyi^logyi+(1yi^log(1yi^)),(12)loss=-\sum_{i=1}^n \hat{y_i} \log{y_i}+(1-\hat{y_i}\log(1-\hat{y_i})), (12)

3.4 Result fustion 将结果联合起来

如同上述,在实体识别时使用两个模型:BERT-CRF和BERT-ENE模型。BERT-CRF的实体识别或许在匹配候选实体时会出现边界错误而匹配错误。BERT-ENE模型使用辞典匹配,每个BERT-ENE的结果因此可以找到知识库中的候选实体,避免了边界错误。BERT-ENE模型
在词典匹配时移除了单一字符的实体,有两个解决办法可以进行结合来得到更好的结果。这个联合规则就是:如果在同个位置上有两个结果的复本,选择BERT-ENE的结果,BERT-CRF的结果只在如果实体名称是单一字符时才采用。

3.5 Entity Disambiguation

  • 基于二分类的思想。
  • 训练过程中,匹配的实体作为正例,再在候选实体中选两个负例。
  • 将要消歧的实体的短文本和描述文本连接起来,作为BERT模型输入。
  • [CLS]位置输出的向量与候选实体的开始和结束位置的特征向量相连,透过全连接层和sigmoid**函数,获得候选实体的概率,选择概率最高的实体作为正确的实体。
  • BERT 二分类模型如下图所示:

[NLP] 实体链接论文阅读—Entity Linking for Chinese Short Texts Based on BERT and Entity Name Embeddings

如同在BERT,输入包含了单词嵌入、位置嵌入和类型嵌入。两个句子的二分类要求类型嵌入应有两个值,其中第一个句子的嵌入为0,第二个句子的嵌入为1。

二分类任务的损失函数:

loss=i=1nyi^logyi+(1yi^log(1yi^)),(13)loss=-\sum_{i=1}^n \hat{y_i} \log{y_i}+(1-\hat{y_i}\log(1-\hat{y_i})), (13)

4 实验

略。