-
由于知识图谱技术在多个领域表现出了强大的态势感知和关系表征的能力,各领域构建知识图谱的需求愈发强烈,而作为构建知识图谱的关键技术之一的命名实体识别(named entities recognition,NER),已经成为自然语言处理领域的热点研究方向。
传统的NER模型将NER视为序列标注任务,注重对文本数据中特定实体的提取,有 CNN-based[1]、RNN[2]以及BiLSTM-CRF[3]等对序列文本处理效果不错的NER模型,但它们由于模型能力的限制,无法很好地完成特定领域内专业性强的实体抽取任务。
随着计算机性能的提高,研究人员提出了基于预训练的模型方法,即使用高性能计算机通过构筑千万级语料的预训练任务,对单词或字符向量进行预先训练,以提高模型的起点,如wor2vec[4]和Glove[5],但它们是静态的词袋模型,不能很好地从文本序列中捕获上下文背景信息。而文献[6]采用BERT作为预训练模型,在NER任务中取得了较好的效果。而谷歌公司面向所有NLP工作者开源了多个预先训练好的BERT模型,针对不同的任务特点,微调BERT的模型参数就可以达到很好的效果,这极大地促进了NLP领域的发展。
虽然目前在通用知识领域,各类模型在NER任务中已经取得了极高的成效,但对于一些专业知识要求高的特定领域,如医疗、金融、军事、民用航空等,由于传统模型不能很好地利用行业内已有的数据集作为先验知识,导致领域知识图谱的构建总需要从头开始训练模型,造成了大量的资源浪费。
针对特定领域知识图谱构建的问题,本文以医疗领域中文NER为主要场景,提出了一种基于BERT的外部知识图谱融合嵌入的NER模型(BERT-FKG),通过将领域内已有的知识图谱进行融合嵌入,结合BERT预训练模型的强大文本处理能力,实现对外部先验知识的充分学习,减少模型领域化的训练耗费,实现对领域文本中实体的准确识别。
-
模型的整个结构如图2所示,主要包括知识融合、知识嵌入、混合编码以及最后的BERT层训练4个部分。知识融合主要是将外部知识库中领域的多个外部知识图谱,通过预训练好的BERT模型计算知识相似度进行融合,从而进一步领域化先验知识,支撑对输入句子更丰富的知识嵌入;知识嵌入部分主要负责生成句子树,构造出下一步BERT模型所需的输入;混合编码是根据BERT模型的输入结构,构造出相应的输入序列,核心工作是生成遮蔽矩阵;BERT层则是采用Google预训练好的BERT-Chinese模型并且通过训练语料进行下游NER任务微调参数,通过最小化预测标签的交叉熵,实现对模型参数的调优,最终在开发集和测试集上评估模型的实体抽取性能。
-
外部知识图融合,即将多个知识图谱通过融合手段转化为单个知识图,使相似实体间能够形成联系,从而在知识嵌入时可以让句子获得来自相似实体的更多知识。知识图融合流程如图3所示。
首先将所有的领域知识图汇集到一个字典中,假设字典中有着大量的语义上非常相似的实体,如“帕金森综合征、帕金森病、震颤麻痹,老年痴呆、阿尔茨海默病等”。本文通过将图的信息按三元组分段输入到模型中的BERT层训练获得词向量,再将对应词向量保存到字典中,然后转化为聚类任务,通过计算实体之间的语义相似度作为判定实体间相似度的依据,最后根据设定的阈值将超出阈值的实体归为同一实体,使两个实体的属性共享,达到知识图谱融合的目的。
由于要计算实体间的语义相似度,而BERT模型生成的句子嵌入向量中的每个词语都包含了丰富的上下文和训练语料中的背景语义,并且已经有研究人员在研究文本相似和同义词匹配的任务中通过BERT模型生成的句嵌入向量取得了不错的效果。同时,为了保证本文模型的尽量简化,也采用BERT模型获取词向量。
BERT词向量的生成过程如图4所示,首先对模型中的BERT模块进行词向量训练,虽然Google预训练好的BERT-Chinese模型已经有了基于维基百科知识的词向量信息,但对于特定领域的专业词汇词向量仍需要通过领域文本来进行训练获得。当文本分词后转化为BERT嵌入输入到BERT模型中进行词向量计算。受文献[6]启发,取最后4层的隐藏层拼接求和来获得输入句子的句向量,再按字分为单独的字向量,最后根据词的位置和跨度信息组合成相应的词向量,如图5所示。
对每个词向量进行归一化处理,将其置于同一个向量空间中进行比较。由于每个词的词向量都包含着各自的语义背景,因此词向量间的近似程度可以用两个词的夹角
$\theta $ 来表示,通过计算夹角余弦的值来获取词语之间的相似程度,最终根据设定的阈值对满足条件的相似实体进行属性共享,实现相似知识的融合。实体余弦相似度的计算公式为:$$ \mathrm{cos}(\theta )=\frac{{{\boldsymbol{W}}}_{j}{{\boldsymbol{W}}}_{k}}{\left|{{\boldsymbol{W}}}_{j}\right| \left|{{\boldsymbol{W}}}_{k}\right|}=\frac{{\displaystyle \sum _{i=1}^{n}({x}_{i} {y}_{i})}}{\sqrt{{\displaystyle \sum _{i=1}^{n}{({x}_{i})}^{2}}} \sqrt{{\displaystyle \sum _{i=1}^{n}{({y}_{i})}^{2}}}} $$ $$ {{\boldsymbol{W}}_j} = ({x_1},{x_2},\cdots,{x_n}),{{\boldsymbol{W}}_k} = ({y_1},{y_2},\cdots,{y_n}) $$ (1) 式中,
$\theta $ 是向量${{\boldsymbol{W}}_j}$ 、${{\boldsymbol{W}}_k}$ 的夹角;${{\boldsymbol{W}}_j}$ 、${{\boldsymbol{W}}_k}$ 分别为两个实体的词向量。 -
在外部知识如图融合后,就需要对句子进行知识嵌入。具体地说,给定一个文本,经过分词器分词后获得句子
$s = [{w_0},{w_1},{w_2},\cdots,{w_n}]$ 和一个融合知识图K,经过知识层输出一个句子树$ t = \{ {w_0},{w_1},\cdots, {w_i}[({r_{{i_0}}},{w_{{i_0}}}),\cdots,({r_{{i_k}}},{w_{{i_k}}})],\cdots,{w_n}\} $ 。这个过程可以分为知识查询和知识链接两个步骤。在知识查询中,句子$ s $ 中的所有实体名称被依次选中,从融合知识图K中检索它们相对应的三元组关键词。获取到关键词后可以构建出对应的候选链接三元组集$ E = [({w_i},{r_{{i_0}}},{w_{{i_0}}}),\cdots,({w_k},{r_{{i_k}}},{w_{{i_k}}})] $ 。知识链接过程需要通过知识融合生成的词典进行关键词匹配,对匹配到的关键词进行实体链接。知识链接过程将$E$ 中的三元组链接到它们相应的位置,将外部三元组知识注入到句子$ s $ 中,并生成一个句子树$t$ 。句子中每个有知识注入的实体作为根节点且被嵌入的三元组实体不能再作为根节点扩展其他的分支,而其他词作为叶子结点,注入知识的实体间关系作为它们的边。具体结构可写作:$$ \begin{gathered} {{\rm{s}}_{{\rm{tree}}}} = \{ {w_1},{w_2}[({r_{21}},{e_{21}}),({r_{22}},{e_{22}})], \\ \cdots,{w_i}[({r_{i1}},{e_{i2}}),\cdots,({r_{im}},{e_{im}})],\cdots,{w_n}\} \\ \end{gathered} $$ 如:2型糖尿病,旧称非胰岛素依赖型糖尿病,是一种慢性代谢疾病,多在35~40岁之后发病。常见症状有烦渴、频尿、不明原因的体重减轻,常通过注射胰岛素治疗。转化为句子树之后变为:{2型糖尿病[(类型,疾病),(简称,糖尿病)(治疗手段,注射胰岛素)],······。常,见,症,状,有,烦渴[(类型,症状)]、频尿[(类型,症状)]、不,明,原,因,的,体重减轻[(类型,症状)],常通过注射胰岛素[(类型,治疗手段),(主治,糖尿病)],治,疗。}这样就使得输入的句子获得了除本身语义以外的知识,丰富了输入的信息,使得BERT模型能够学习到更多的知识。
-
混合编码的功能是将知识嵌入部分生成的句子树转换成模型可计算的嵌入表示,为了使该嵌入表示可以输入到BERT模型中,本文采用与K-BERT[15]相同的句子树嵌入方法,可公式化为:
$$ {\rm{Model}}\_{\rm{Emb}} = {\rm{TreeToEmb}}({s_{{\rm{tree}}}}) $$ (2) 其主要将句子树转化为BERT可计算的输入结构,分3个部分:token嵌入、位置嵌入和段落嵌入,由于嵌入层的输入是句子树,而不是BERT传统的标记序列。因此,为了将句子树转化为序列,并且保留句子的结构信息,位置嵌入采用软位置编码,并以此构建注意力遮蔽矩阵来防止BERT模型因嵌入的知识而产生错误的注意力。
如图6所示,句子树转BERT嵌入编码时,在token嵌入部分,为了能输入BERT模型,句子按顺序生成输入序列,在分支结点部分分支上的知识按分支顺序依次排列在结点内容之后,但句子树无法保证原本的语义结构,因此在位置嵌入部分还需要引入软位置嵌入。软位置嵌入如图6的句子树编号所示,每一段分支接续结点的编号继续编号,这样可以保证每一段分支的语义信息不丢失,但这样的位置编码直接输入到BERT模型中会造成模型内部的混乱,Transformer层的多头注意力机制会出现剧烈的抖动计算,而注意力遮蔽矩阵的引入则很好地解决了这个问题。
如图6的遮蔽矩阵所示,注意力遮蔽矩阵根据句子树的位置编码生成,使得每一段token的嵌入只受到来自句子树中同一分支的上下文影响,而屏蔽了不同分支之间的知识。遮蔽矩阵的生成公式为:
$$ {M}_{ij}=\left\{ {\begin{array}{*{20}{l}} 0&当{w}_{i}和{w}_{j}处在同一分支上时\\ -\infty &当{w}_{i}和{w}_{j}处在不同分支上时 \end{array}} \right.$$ (3) 式中,i和j是
$ {w_i} $ 和${w_j}$ 在句子的硬位置编码结果;${M_{ij}}$ 是遮蔽矩阵的元素。 -
在对包含外部知识的句子进行嵌入编码并生成注意力遮蔽矩阵后,将其输入到进行NER的BERT模型中。而如3.4节所述,若不对BERT的Transformer层的注意力加以控制将会造成模型训练的混乱,因此参考KBERT[15]对BERT-Chinese模型的Transformer的注意力计算模块,嵌入注意力遮蔽矩阵,具体公式为:
$$ {\rm{Attention}}({{\boldsymbol{Q}}'},{{\boldsymbol{K}}'},{{\boldsymbol{V}}'}) = {\rm{Soft}}{\rm{\max}} (\frac{{{{\boldsymbol{Q}}'}{{\boldsymbol{K}}'}^{\rm{T}} + {\boldsymbol{M}}}}{{\sqrt {{d_k}} }}){{\boldsymbol{V}}'} $$ (4) 式中,
$ {{\boldsymbol{Q}}'},{{\boldsymbol{K}}'},{{\boldsymbol{V}}'} $ 是自注意力计算中的Query、Key、Value参数;M是注意力遮蔽矩阵;$ \sqrt {{d_k}} $ 是比例因子,用以抵消计算中的点积大幅增长的影响。添加注意力遮蔽矩阵后,如式(3)所示,如果两个token属于句子树的同一分支,则$M_{ij} = 0$ ,即注意力计算的结果不受影响。而当两个token不属于同一分支,对应注意力遮蔽矩阵中的值为负无穷,这使得通过函数获得的注意值接近0,这样就避免了不同分支间产生的错误的注意力。模型总体的损失函数为:
$$ L = - \sum\limits_{i = 1}^N {\sum\limits_{j = 1}^N {{y_{ij}}\log p({{\hat y}_{ij}})} } $$ (5) 式中,N表示句子的长度;
${y_{ij}}$ 是实际识别标签的概率分布;$ {\hat y_{ij}} $ 是模型输出的识别标签的概率分布。 -
本节采用Msra-NER和Medical-NER两个数据集来评估模型在开放域和医疗领域NER的效果。MSRA-NER是微软发布的NER数据集。这个任务是识别文本中的实体名称,包括人名、地名、机构名等。而Medical-NER是CCKS 201716中发布的临床命名实体识别(CNER)任务,目标是从电子病历中提取与医疗相关的实体名称。在外部知识库方面,选择CN-Dbpedia、中文词语语义图谱HowNet、疾病百科图谱Medical。
CN-DBpedia是复旦大学知识工作实验室开发的大规模开放域百科KG,覆盖数千万实体、数亿关系。本文所使用的是精炼版的CN-DBpedia,即去除了实体名称长度小于2或包含特殊字符的三元组,总共包含517万个三元组。
HowNet是一个大规模的汉语词汇和概念的语言知识库,其中每个汉语词汇都用语义类型注释。与K-BERT一样,把{word, contain, sememes}作为知识三元组,为句子中的中文分词补充语义知识。本文使用的是精炼的HowNet,共包含52576个三元组。
Medical-NER是由文献[15]提供的疾病知识图谱,包括了疾病名称、症状以及医疗部位等信息,共13864条三元组。
本文的基线模型选择了基于单知识图嵌入的K-BERT和中文预训练模型BERT-Chinese,并且在模型设置上采用transformer层L=12、多头注意力为12、嵌入向量的隐藏维数H=768。
-
通过召回率、准确率、F1评分对命名实体标注进行评价。
召回率(R)表示正确抽取的实体在实际实体中的比例:
$$ R = \frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FN}}}} $$ 式中,TP为 true positive,即实体标签预测结果与实际实体一致的样本;FN为 false negative,即未预测出的实体标签的样本。
准确率(P)表示正确抽取的实体在所有抽取实体中的比例:
$$ P = \frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FP}}}} $$ 式中,FP为 false positive,即错误预测的实体标签样本。
F1分数(F1)是一种综合衡量命名实体识别结果召回率和准确性的指标:
$$ F1 = \frac{{2RP}}{{R + P}} $$ -
分别在开放域数据集Msra和特定医疗领域数据集上通过与基线模型K-BERT和BERT在两个数据集上NER任务的性能比较,评估了本文知识融合模块对开放域中文NER以及中文医疗NER的改进效果,最后通过比较模型间的收敛速度评估知识融合加速模型训练的效果。上述两个数据集都分为3个部分:训练、开发和测试。使用训练部分来微调模型,然后在开发和测试部分评估其性能。实验结果如表1和表2所示。
表 1 模型在MSRA数据集的NER实验结果
模型 知识图谱 Msra-Ner 开发集 测试集 P R F1 P R F1 BERT-Chinese (With out knowledge) 0.938 0.950 0.945 0.936 0.943 0.936 K-BERT HowNet 0.958 0.954 0.958 0.951 0.956 0.945 Cn-Dbpedia 0.961 0.960 0.963 0.953 0.956 0.957 (本文)BERT-FKG Cn-Dbpedia + HowNet(with knowledge fusion) 0.971 0.965 0.968 0.958 0.961 0.963 表 2 模型在中文医疗数据集的NER实验结果
模型 知识图谱 Medical-Ner 开发集 测试集 P R F1 P R F1 BERT-Chinese (With out knowledge) 0.919 0.931 0.925 0.919 0.931 0.925 K-BERT Cn-Dbpedia 0.937 0.941 0.939 0.939 0.938 0.938 Medical 0.939 0.942 0.941 0.940 0.944 0.942 (本文)BERT-FKG Cn-Dbpedia + Medical(with knowledge fusion) 0.945 0.947 0.945 0.950 0.947 0.950 从表1的实验结果可以看到知识图谱的嵌入能够有效提升BERT模型的中文NER性能,而本文模型在融合了HowNet和Cn-Dbpedia的知识后,在MSRA数据集上的NER性能相较于K-BERT取得了一定的提升,证明了两个知识图谱之间的相似实体的属性共享能够为句子提供更丰富的语义嵌入,从而使得BERT模型中的注意力能够学习到更多的语义知识,提高对文本的理解能力。
在特定医疗领域数据集的实验结果如表2所示,从结果上可以看出知识融合在特定领域的中文NER取得了更明显的性能提升,融合了Cn-Dbpedia和Medical两个知识图谱中的相似实体的多知识嵌入相比于单个知识图谱的嵌入为句子中的医疗实体提供了更多的医疗语义知识,既能嵌入疾病的类型、别名信息还能嵌入疾病的治疗方式、易感人群等背景信息,在进行医疗命名实体识别时,能够使BERT模型更有效地识别医疗实体边界。
如图7所示,在医疗领域做中文NER时,多知识图的融合可以在一定程度上加速模型的收敛,并且在相同的训练步数下取得更高的精度,证明了多知识图的嵌入在进行知识抽取任务时能够为模型提供先验知识,使得模型能够更快地完成对已有知识的吸纳,进而减少重复提取已有知识的耗费。
A Chinese NER Model Based on BERT with Multi Knowledge Graph Fusion and Embedding
-
摘要: 针对目前特定领域知识图谱构建效率低、领域已有知识图谱利用率不足、传统模型提取领域语义专业性强实体困难的问题,提出了基于BERT多知识图融合嵌入的中文NER模型(BERT-FKG),实现了对多个知识图通过融合语义进行实体间属性共享,丰富了句子嵌入的知识。该模型在开放域和医疗领域的中文NER任务中,表现出了更好的性能。实验结果表明,多个领域知识图通过计算语义相似度进行相似实体的属性共享,能够使模型吸纳更多的领域知识,提高在NER任务中的准确率。Abstract: Aiming at the problems of low efficiency in the construction of knowledge graph in specific fields, insufficient utilization of existing knowledge graph in the field, and difficulty in extracting domain semantic professional entities from traditional models, a Chinese named entity recognition (NER) model based on Bert (bidirectional encoder representations from transformers) multi knowledge graph fusion and embedding (BERT-FKG) is proposed in this paper. It realizes the attribute sharing among entities through semantic fusion for multiple knowledge graphs and enriches the knowledge of sentence embedding. The proposed model shows better performance in Chinese NER tasks in open domain and medical field. The experimental results show that multiple domain knowledge graphs share the attributes of similar entities by calculating semantic similarity, which can make the model absorb more domain knowledge and improve the accuracy in NER tasks.
-
表 1 模型在MSRA数据集的NER实验结果
模型 知识图谱 Msra-Ner 开发集 测试集 P R F1 P R F1 BERT-Chinese (With out knowledge) 0.938 0.950 0.945 0.936 0.943 0.936 K-BERT HowNet 0.958 0.954 0.958 0.951 0.956 0.945 Cn-Dbpedia 0.961 0.960 0.963 0.953 0.956 0.957 (本文)BERT-FKG Cn-Dbpedia + HowNet(with knowledge fusion) 0.971 0.965 0.968 0.958 0.961 0.963 表 2 模型在中文医疗数据集的NER实验结果
模型 知识图谱 Medical-Ner 开发集 测试集 P R F1 P R F1 BERT-Chinese (With out knowledge) 0.919 0.931 0.925 0.919 0.931 0.925 K-BERT Cn-Dbpedia 0.937 0.941 0.939 0.939 0.938 0.938 Medical 0.939 0.942 0.941 0.940 0.944 0.942 (本文)BERT-FKG Cn-Dbpedia + Medical(with knowledge fusion) 0.945 0.947 0.945 0.950 0.947 0.950 -
[1] STRUBELL E, VERGA P, BELANGER D, et al. Fast and accurate entity recognition with iterated dilated convolutions[EB/OL]. [2021-10-11]. https://arxiv.org/pdf/1702.02098.pdf. [2] 孙悦清. 基于循环神经网络RNN的领域命名实体识别方法研究[D]. 武汉: 武汉理工大学, 2018. SUN Y Q. Research on domain named entity recognition method based on RNN of recurrent neural network[D]. Wuhan: Wuhan University of Technology, 2018. [3] LIU Z, YANG M, WANG X, et al. Entity recognition from clinical texts via recurrent neural network[J]. BMC Medical Informatics and Decision Making, 2017, 17(2): 53-61. [4] MIKOLOV T, CHEN K, CORRADO G, et al. Efficient estimation of word representations in vector space[EB/OL]. [2021-10-19]. https://arxiv.org/pdf/1301.3781.pdf. [5] PENNINGTON J, SOCHER R, MANNING C D. Glove: Global vectors for word representation[C]//Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP). Stroudsburg: ACL, 2014: 1532-1543. [6] DEVLIN J, CHANG M W, LEE K, et al. BERT: Pre-Training of deep bidirectional transformers for language understanding[EB/OL]. [2021-11-11]. https://arxiv.org/pdf/1810.04805.pdf. [7] ZHANG Y, YANG J. Chinese NER using lattice LSTM[EB/OL]. [2021-11-15]. https://arxiv.org/pdf/1805.02023.pdf. [8] LI X, YAN H, QIU X, et al. FLAT: Chinese NER using flat-lattice transformer[EB/OL]. [2021-11-20]. https://www.xueshufan.com/publication/3019125528. [9] ZHU W, CHEUNG D. LEX-BERT: Enhancing bert based ner with lexicons[EB/OL]. [2021-11-26]. https://www.xueshufan.com/publication/3118353673. [10] SUN Y, WANG S, LI Y, et al. ERNIE: Enhanced representation through knowledge integration[EB/OL]. [2021-11-30]. https://www.xueshufan.com/publication/2938830017. [11] SUN Y, WANG S, LI Y, et al. ERNIE 2.0: A continual pre-training framework for language understanding[C]//Proceedings of the AAAI Conference on Artificial Intelligence. [S.l.]: AAAI, 2020, 34(5): 8968-8975. [12] YAMADA I, ASAI A, SHINDO H, et al. LUKE: Deep contextualized entity representations with entity-aware self-attention[EB/OL]. [2021-12-11]. https://www.xueshufan.com/publication/3090325631. [13] BOSSELUT A, RASHKIN H, SAP M, et al. COMET: Commonsense transformers for automatic knowledge graph construction[EB/OL]. [2021-12-18]. https://www.xueshufan.com/publication/2999524812. [14] RADFORD A, NARASIMHAN K, SALIMANS T, et al. Improving language understanding by generative pre-training[EB/OL]. [2021-12-21]. https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf. [15] LIU W, ZHOU P, ZHAO Z, et al. K-BERT: Enabling language representation with knowledge graph[C]//Proceedings of the AAAI Conference on Artificial Intelligence. [S.l.]: AAAI, 2020, 34(3): 2901-2908. [16] WANG X, GAO T, ZHU Z, et al. KEPLER: A unified model for knowledge embedding and pre-trained language representation[J]. Transactions of the Association for Computational Linguistics, 2021, 9: 176-194. doi: 10.1162/tacl_a_00360 [17] SCHARFFE F, LIU Y, ZHOU C. Rdf-AI: An architecture for rdf datasets matching, fusion and interlink[C]//IJCAI 2009 Workshop on Identity, Reference, and Knowledge Representation (IR-KR). Pasadena: [s.n.], 2009: 23. [18] NGOMO A C N, AUER S. Limes-A time-efficient approach for large-scale link discovery on the web of data[EB/OL]. [2021-12-25]. https://www.ijcai.org/Proceedings/11/Papers/385.pdf. [19] PERSHINA M, YAKOUT M, CHAKRABARTI K. Holistic entity matching across knowledge graphs[C]//2015 IEEE International Conference on Big Data. [S.l.]: IEEE, 2015: 1585-1590. [20] BORDES A, USUNIER N, GARCIA-DURAN A, et al. Translating embeddings for modeling multi-relational data[J]. Advances in Neural Information Processing Systems, 2013, 26: 288-297. [21] ZHANG Y, LIU L, FU S, et al. Entity alignment across knowledge graphs based on representative relations selection[C]//2018 5th International Conference on Systems and Informatics. [S.l.]: IEEE, 2018: 1056-1061.