计算机系统应用  2021, Vol. 30 Issue (6): 262-270   PDF    
基于BSTTC模型的中文命名实体识别
申晖, 张英俊, 谢斌红, 赵红燕     
太原科技大学 计算机科学与技术学院, 太原030024
摘要:大多数中文命名实体识别模型中, 语言预处理只关注单个词和字符的向量表示, 忽略了它们之间的语义关系, 无法解决一词多义问题; Transformer特征抽取模型的并行计算和长距离建模优势提升了许多自然语言理解任务的效果, 但全连接结构使得计算复杂度为输入长度的平方, 导致其在中文命名实体识别的效果不佳. 针对这些问题, 提出一种基于BSTTC (BERT-Star-Transformer-TextCNN-CRF)模型的中文命名实体识别方法. 首先利用在大规模语料上预训练好的BERT模型根据其输入上下文动态生成字向量序列; 然后使用星型Transformer与TextCNN联合模型进一步提取句子特征; 最后将特征向量序列输入CRF模型得到最终预测结果. 在MSRA中文语料上的实验结果表明, 该模型的精确率、召回率和F1值与之前模型相比, 均有所提高. 与BERT-Transformer-CRF模型相比, 训练时间大约节省了65%.
关键词: BERT    星型Transformer    命名实体识别    TextCNN    条件随机场    
Chinese Named Entity Recognition Based on BSTTC Model
SHEN Hui, ZHANG Ying-Jun, XIE Bin-Hong, ZHAO Hong-Yan     
School of Computer Science and Technology, Taiyuan University of Science and Technology, Taiyuan 030024, China
Foundation item: Key Project of Research and Development Program of Shanxi Province (201703D111027); Research and Development Project of Key Program of Shanxi Province (201803D121048, 201803D121055)
Abstract: In most recognition models of Chinese named entities, language preprocessing only focuses on the vector representation of single words and characters and ignores the semantic relationship between them, hence failing to tackle polysemy. The transformer feature extraction model improves the understanding of natural language due to parallel computing and long-distance modeling, but its fully connected structure makes the computational complexity the square of the input length, which leads to poor recognition of Chinese named entities. A recognition method for Chinese named entities based on the BERT-Star-Transformer-TextCNN-CRF (BSTTC) model is proposed to solve these problems. First, the BERT model pre-trained on a large-scale corpus is used to dynamically generate the word vector sequence according to its input context. Then, the star Transformer-TextCNN model is adopted to further extract sentence features. Finally, the prediction result is received by inputting the feature vector sequence into the CRF model. The experimental results on the Chinese corpus from MSRA show that the accuracy, recall, and F1 value of this model are all higher than those of existing models. Moreover, its training time is 65% shorter than that of the BSTTC model.
Key words: BERT     Star-Transformer     named entity recognition     TextCNN     Conditional Random Fields (CRF)    

命名实体识别(Named Entity Recognition, NER), 又称作“专名识别”, 是自然语言处理中的一项基础任务[1-3], 应用范围非常广泛. 命名实体一般指的是文本中具有特定意义或者指代性强的实体, 通常包括人名、地名、机构名、日期时间和专有名词等.

早期, 基于词典和规则的方法是命名实体识别任务中的主流方法, 但这种方法只能够在特定的语料上获得较高的识别效果, 而且费时费力、可移植性差, 在面对众多领域的复杂文本时, 该方法不再适用. 随着机器学习在自然语言处理领域的兴起[4-6], 将该方法应用于NER任务中成为一种新趋势. 在这种趋势下, 如何更好的解决序列标注问题成为提升命名实体识别效果的关键. 然而这种方法对特征选取的要求较高, 不仅需要从文本中选择对该项任务有影响的各种特征加入到特征向量中, 而且需要依据特定命名实体识别所面临的主要困难和所表现出的特性, 选择能有效反映该类实体特性的特征集合, 导致其通用性不佳, 泛化能力差. 近年来,由于分布式表示学习技术的蓬勃发展, 各种词向量表示方法层出不穷, 基于深度神经网络方法在NER这种典型的序列化标注问题上取得了较大进展.

1 相关工作

随着深度学习的快速发展, 源于神经网络模型的深度学习技术在NER任务中的表现越来越突出, 这种不依赖人工特征的端到端方案逐渐占据主流. 该方法对于NER问题的解决大致分为3个阶段: 通过学习嵌入模型, 以向量形式表示文本信息; 将以向量表示的文本输入到神经网络编码, 对文本序列建模; 最后解码层进行解码得到全局最优标注序列. 目前, 常用的生成词向量工具有Mikolov等提出的Word2Vec模型[7]和Pennington等提出的Glove模型[8]. 但它们都无法解决多义词问题, 这两种模型对于不同语境下的词语产生的词向量是相同的, 这会对后续任务的结果产生影响. 谷歌于2018年提出了BERT (Bidirectional Encoder Represe-ntations from Transformers)模型[9], 该模型能够更深层次地提取文本的语义信息, 并且可以针对不同的上下文信息动态生成词向量, 并使NLP领域多个任务实验效果得到了大幅提升.

在序列标注任务当中, 常用的编码方式有循环神经网络(Recurrent Neural Networks, RNN)、长短期记忆神经网络[10,11](Long Short-Term Memory, LSTM)和卷积神经网络[12,13](Convolutional Nerual Networks, CNN). CNN通过使用与字符向量维度相同的卷积核与字符向量组成的矩阵进行卷积得到其局部特征, 最后通过池化操作使得输出维度与输入维度保持一致. CNN的优点在于可以利用GPU并行性快速提取局部特征, 缺点是很难使提取的字符特征包含全局信息. RNN由于其具有良好的序列建模能力而常常被应用于命名实体识别任务中. 然而其缺点在于随着序列长度的增加, RNN会逐步丧失学习能力, 出现“梯度消失”现象. 针对该问题, 有学者提出RNN的变体网络—LSTM. 通过添加门控机制缓解了“梯度消失”问题. 但由于它的循环结构无法利用GPU并行性, 这限制了它的计算效率. 为了解决CNN存在的无法捕获全局信息与RNN运算效率低下的问题, 谷歌于2017年提出了具有更强大特征抽取能力的Transformer编码器模型, 并在多个NLP任务中取得了良好的结果. 但由于Transformer模型[14]的结构为全连接结构, 所以它的计算和内存开销是句子长度的平方倍, 参数量也较大, 需要较长的训练时间. 而在解码阶段, 常用的模型有Softmax、条件随机场(Conditional Random Field, CRF). 其中, 条件随机场模型是目前解决序列标注问题的最为经典的方法. 因为该模型充分考虑了标签与前后文标注的关系, 所以能够较好地解决标注偏置等问题.

由于LSTM在处理时间序列数据时可以很好地获取和保存序列的上下文信息, 目前LSTM-CRF已成为NER任务的基础网络架构之一, 许多研究人员尝试在其基础上添加各种相关特征来提高最终的识别效果. 例如Lample等[15]于2016年提出BiLSTM-CRF模型, 该模型使用双向LSTM提取字符特征, 并取得了当时最好的识别效果; Huang等[16]在BiLSTM-CRF基础上加入手工拼写特征; Ma等[17]在预训练好的词向量中融入了字符级CNN抽取的特征; 而Chiu等[18]还加入了多种预训练好的词典特征. 上述这些方法中使用的初始向量表示都是通过随机生成或Word2Vec预训练语言模型产生, 导致其识别效果并未达到最好. 也有基于CNN的命名实体识别方案, 例如Collobert等[19]提出了CNN-CRF网络结构; Santos等[20]又扩展了该网络结构, 在其基础上添加卷积层提取字符级特征; Strubell等[21]首次提出了空洞卷积网络(IDCNN)来提取特征, 扩大了感受野的同时减少了参数数量. 由于以上方法使用CNN为基本结构提取特征无法充分获取全局信息, 所以其识别效果还有待提高.

以上所述方法都存在共同的问题: 初始嵌入无法表示一词多义. 由于BERT可以充分表征不同语境中的句法与语义信息, 近几年, 开始有研究人员考虑使用BERT模型来生成初始嵌入, 例如: Straková等[22]将BERT模型应用在嵌套命名实体识别中, 提升了识别效果; 谢腾等[23]采用了BERT-BiLSTM-CRF模型进行中文命名实体识别, 在MSRA 数据集上达到了较高F1值94.65%; 李妮等[24]提出基于BERT-IDCNN-CRF的中文命名实体识别方法,该方法通过BERT预训练语言模型得到字的上下文表示, 再将字向量序列输入IDCNN-CRF模型中进行训练. 虽然这些方法使用了BERT模型得到文本向量表示, 但在特征抽取速度和效果上还需进一步提高.

近年来, 随着中文命名实体识别的效果不断提高, 将命名实体方法应用于某个特定领域成为了一个新的研究热点. 例如: 李丽双等[25]为了抽取出生物医学语料中的相关命名实体, 提出了CNN-BiLSTM-CRF网络模型, 并得到了较好的效果; 周晓磊等[26]针对财产纠纷审判案件文书提出SVM-BiLSTM-CRF模型, 首先利用SVM筛选出关键句子, 并将其以字符向量表示, 输入BiLSTM-CRF模型中抽取出动产、不动产、知识财产3类实体; 杨文明等[27]提出了IndRNN-CRF和IDCNN-BiLSTM-CRF模型, 并将其应用于医疗文本中的命名实体抽取任务中, 使得该模型在F1值和精确率上都优于经典的BiLSTM-CRF模型.

为了解决一词多义问题, 并且可以在提高特征抽取速度的同时保证模型的识别效果, 本文提出了一种基于BSTTC模型的中文命名实体识别方法, 使用BERT动态生成句子的表示矩阵, 将该矩阵输入联合模型中进一步抽取特征, 最后由CRF模型得到最佳预测序列. 实验结果表明, 模型在MSRA数据集上的F1值达到了95.69%. 与BERT-Transformer-CRF模型相比, 训练时间大约节省了65%的时间.

2 BSTTC模型

模型主要由3个模块构成, 分别是语言表示模块、特征抽取与融合模块以及标签解码模块, 其整体结构如图1所示. 模型首先利用BERT预训练语言模型将标注语料动态表示为含有上下文语义信息的字符向量序列; 然后将其分别输入具有轻量结构的星型Transformer模型与TextCNN模型中进一步提取局部特征与全局特征; 接着将两种特征进行融合得到新的向量序列; 最后将经过特征融合后的向量输入CRF层进行解码, 得到每个字符的标签类别.

图 1 BSTTC模型结构

与现有的中文命名实体识别方法相比, 本文提出的方法优势在于: ① 利用BERT预训练语言模型动态得到了含有丰富语义信息的句子表示, 解决了一词多义的问题; ② 使用了星型Transformer模型和TextCNN分别提取局部特征和全局特征, 将其进行融合, 使得每一个字符向量既具有句子表示又具有字符级表示; ③ 星型Transformer模型在Transformer模型的基础上优化了网络结构, 大大减少了参数数量, 缩短了训练时间, 同时提高了F1值.

2.1 BERT预训练语言模型

词嵌入技术是为了将自然语言中的词映射到一个低维度稠密的连续向量空间中, 使得语义相似的词可以共享上下文信息, 从而提升泛化能力. 但是传统的词嵌入学到的是一个词的固定语义, 无法解决一词多义问题. 针对该问题, 本文采用了谷歌发布的中文BERT预训练语言模型.

BERT预训练语言模型采用双向Transformer作为特征抽取器, 完全基于多头自注意力机制对一段文本进行建模, 可以无损失捕获更长的上下文信息, 提高了特征抽取能力. 同时, 使用“Masked语言模型”无监督预测任务捕捉词级别表示, 充分利用词左右上下文信息获得更好的词分布式表示. 该任务使用随机遮挡方法为BERT模型赋予了一定的文本纠错能力, 而且缓解了finetune时候与预训练时输入不匹配的问题(预训练时输入句子当中有mask, 而finetune时的输入是完整的句子, 即为输入不匹配问题).

在中文命名实体识别任务中, BERT的输入为单个句子. 句子中每个字符对应3个向量, 其中, Token Embeddings为字符向量, 用于下游的分类任务; Segment Embeddings为分段向量, 在句子对任务中用于区分不同句子; Position Embeddings为位置向量, 用于得到每个字符在序列中的相对位置信息.

通过使用BERT预训练语言模型, 最终得到一个由字符嵌入序列组成的句子矩阵 ${{E}} \in {{{R}}^{n \times d}}$ , 矩阵中的一行代表一个字符向量. 所以, 一个由n个字符组成的句子 $X{\rm{ = }}\left\{ {{x_1},{x_2}, \cdot \cdot \cdot ,{x_n}} \right\}$ 可以被表示为: ${{E}} = \left[ {{{{e}}_1},{{{e}}_2}, \cdots ,{{{e}}_n}} \right]$ , 其中 ${{{e}}_m}$ 是第 $m$ 个字符嵌入.

2.2 星型Transformer模型

Transformer模型由于其独特的结构组合, 在自然语言处理任务中表现出了良好的特征抽取能力. 但由于Transformer模型的结构为全连接结构, 如图2所示, 所以它的计算和内存开销是句子长度的平方倍, 参数量较大, 导致模型的训练需要较长时间. 针对该问题, 本文提出使用Transformer模型的变体—星型Transformer模型提取句子特征, 该模型具有轻量级的结构, 核心思想是通过将完全连接的拓扑结构变换成星形结构来稀疏架构. 模型结构[28]图3所示.

图 2 Transformer模型结构

图3星型Transformer模型中, 包含两种结点: 一个中心结点和n个卫星结点. 每个卫星结点之间以及卫星结点与中心结点之间都存在信息的传递. 其中, 卫星结点之间的连接使得每个卫星节点从其相邻结点收集信息; 卫星结点与中心结点的连接可以使得每两个非相邻的卫星节点可以通过中心结点进行信息传递.

图 3 星型Transformer模型结构

与Transformer中的建模机制相同, 星型Transformer中每个结点的状态同样基于多头自注意力机制进行更新, 其中, 自注意力机制过程如式(1)所示.

${\mathop{Attention}\nolimits} ({{Q}},{{K}},{{V}}) = {\mathop{ Softmax}\nolimits} \left( {\frac{{{{Q}}{{{K}}^{\rm{T}}}}}{{\sqrt {{d_k}} }}} \right){{V}}$ (1)

在自注意力机制中, 每个初始字符嵌入向量乘以3个不同的权值矩阵 ${w}_{q} {\text{、}} {w}_{k} {\text{、}} {w}_{\boldsymbol{v}}$ , 从而得到3个维度相同的向量, 分别为Query向量(Q)、Key向量(K)和Value向量(V). ${{Q}}{{{K}}^{\rm{T}}}$ 计算出每个字向量之间的紧密程度得分, 然后除以一个惩罚因子 $\sqrt {{d_k}} $ , 使得QK的内积保持在一个合理范围内. 接着使用Softmax对其进行归一化处理得到Attention值, 并与Value向量相乘, 最后输出所有字符向量的带权和, 使得每个新的字符向量都包含了其余每个字符的信息.

由于事物具有多面性, 而自注意力机制只能关注到单方面的信息, 为使模型能够同时关注到来自不同位置与不同子空间的信息, 星型Transformer同样采用了“多头”模式, 既将每个头得到的信息进行拼接, 将拼接后得到的矩阵转换为一个新的向量, 如式(2)、式(3)所示.

${{Multihead}} = {concat} {\rm{(}}hea{d_1}, \cdot \cdot \cdot ,hea{d_n}{\rm{)}} \cdot W$ (2)
$hea{d_i} = Attention \left( {QW_q^i,KW_k^i,VW_v^i} \right)$ (3)
2.2.1 卫星结点的更新

当使用星型Transformer编码长度为 $n$ 的文本序列时, 设它的初始嵌入矩阵为: ${{E}} \in {{{R}}^{n \times d}}$ , 所有卫星结点与中心结点更新一次为一步更新. 假设在t步更新后, 中心节点的状态为 ${{{s}}^t} \in {{{R}}^{1 \times d}}$ , 所有 $n$ 个卫星节点的状态为(字符维度设为d维) ${{{H}}^t} = \left[ {{{h}}_1^t, \cdots ,{{h}}_n^t} \right]$ , ${{{H}}^t} \in {{{R}}^{n \times d}}$ .

初始化 ${{{H}}^0} = {{E}}$ , ${{{s}}^0} = {average} ({{E}})$ .

在第t步更新时, 每个卫星节点与其上下文做多头注意力, 其上下文信息包括序列中的相邻节点 ${{h}}_{i - 1}^{t - 1}$ ${{h}}_{i + 1}^{t - 1}$ 、中心节点 ${{{s}}^{t - 1}}$ 、该结点先前状态 ${{h}}_i^{t - 1}$ 与其对应的字符嵌入, 更新过程如式(4)、式(5)所示:

${C}_i^t = \left[ {{{{e}}_i};{{{s}}^{t - 1}};{{h}}_{i - 1}^{t - 1};{{h}}_i^{t - 1};{{h}}_{i + 1}^{t - 1}} \right]$ (4)
${{h}}_i^t = {\mathop{MultiAtt}\nolimits} \left( {{{C}}_i^t,{{h}}_i^{t - 1}} \right)$ (5)

在信息交换之后, 对每个卫星结点进行层归一化操作, 如式(6)所示:

${{h}}_i^t = {\mathop{ LayerNorm}\nolimits} \left( {{\mathop{ ReLU}\nolimits} \left( {{{h}}_i^t} \right)} \right),\;\;i \in \left[ {1,n} \right]$ (6)
2.2.2 中心结点的更新

在第t步更新时, 所有卫星结点更新之后, 中心结点与所有更新后的卫星节点 ${{{H}}^t}$ 及其先前状态 ${{{s}}^{t - 1}}$ 做多头注意力, 然后进行层归一化操作, 更新过程如式(7)–式(9)所示:

${{C}}_i^t = \left[ {{{{H}}^t};{{{s}}^{t - 1}}} \right]$ (7)
${{{s}}^t} = {\mathop{ MultiAtt}\nolimits} \left( {{{C}}_i^t,{{{s}}^{t - 1}}} \right)$ (8)
${{s}}_{}^t = {\mathop{ LayerNorm}\nolimits} \left( {{\mathop{ ReLU}\nolimits} \left( {{{s}}_{}^t} \right)} \right)$ (9)

最终, 通过多步更新卫星和中心结点, 星型Transformer模型最终得到新的句子矩阵: ${{H}} = \left[ {{{{h}}_1},{{{h}}_2}, \cdots ,{{{h}}_n}} \right]$ , ${{H}} \in {{{R}}^{n \times d}}$ . 其整体更新过程如算法1所示.

算法1. 星型Transformer整体更新算法

输入: $\scriptstyle{{E}} = \left[ {{{{e}}_1},{{{e}}_2}, \cdots ,{{{e}}_n}} \right]$

输出: $\scriptstyle{{H}} = \left[ {{{{h}}_1},{{{h}}_2}, \cdots ,{{{h}}_n}} \right]$

1. //初始化

2. $\scriptstyle{{h}}_1^0, \cdots ,{{h}}_n^0 \leftarrow {{{e}}_1}, \cdots,{{{e}}_n}$

3. $\scriptstyle{{\mathbf{s}}^0} \leftarrow average{\rm{(}}{{\mathbf{e}}_1}, \cdot \cdot \cdot ,{{\mathbf{e}}_n}{\rm{)}}$

4. for t 1 to T do

5. //更新全部卫星结点

6. for i 1 to n do

7. $\scriptstyle{{C}}_i^t = \left[ {{{{e}}_i};{{{s}}^{t - 1}};{{h}}_{i - 1}^{t - 1};{{h}}_i^{t - 1};{{h}}_{i + 1}^{t - 1}} \right]$

8. $\scriptstyle{{h}}_i^t = {MultiAtt} ({{C}}_i^t,{{h}}_i^{t - 1})$

9. $\scriptstyle{{h}}_i^t = {LayerNorm} {{(}}{ReLU} {{(}}{{h}}_i^t{\rm{))}},i \in \left[ {1,n} \right]$

10. //更新中心结点

11. $\scriptstyle{{C}}_i^t = [{{{H}}^t};{{{s}}^{t - 1}}]$

12. $\scriptstyle{{{s}}^t} = {MultiAtt} ({{C}}_i^t,{{{s}}^{t - 1}})$

13. $\scriptstyle{{s}}_{}^t = {LayerNorm} {{(}}{ReLU} {\rm{(}}{{s}}_{}^t{\rm{))}}$

14.//输出由卫星结点状态组成的句子矩阵: $\scriptstyle{{H}} = \left[ {{{{h}}_1},{{{h}}_2}, \cdots ,{{{h}}_n}} \right]$

2.3 TextCNN模型

由于星型Transformer模型改变了Transformer模型中的全连接结构, 使得信息传递过程局限于邻近结点, 无法像全连接结构一样充分提取句子的全局信息. 鉴于卷积操作可以充分利用GPU并行性, 基于该问题, 本文提出使用TextCNN模型[29]提取句子特征, 得到含有全局信息的句子向量.

该模型结构如图4所示, 图中文本矩阵由BERT预训练语言模型产生的字符嵌入向量组成, 卷积层的过滤器大小分别为3、4、5、6. 在卷积层使用不同的卷积核由上往下滑动与矩阵做卷积操作, 卷积核的宽度和字符向量的维度一致, 每个卷积核获得一列feature map. 卷积过程如式(10)、式(11)所示:

${c_i} = {f} ({{w}} \cdot {{{e}}_{i:i + h - 1}} + b)$ (10)
${{c}} = \left[ {{c_1},{c_2}, \cdots,{c_{n - h + 1}}} \right]$ (11)

其中, ${{{e}}_{i:i + h - 1}} \in {{{R}}^{h \times d}}$ 表示由字符嵌入序列 ${{{e}}_i},{{{e}}_{i + 1}}, \cdots,{{{e}}_{i + h - 1}}$ 组成的矩阵, ${{w}} \in {{{R}}^{h \times d}}$ 是卷积核, f是非线性函数, b是偏置, c为卷积核w获得的feature map.

图 4 TextCNN模型

每个feature map通过max-pooling都会得到一个特征值, 这个操作也使得TextCNN能处理不同长度的文本. 连接每个特征值形成一个一维向量作为含有Dropout层的全连接层的输入, 经过激活函数输出. 并在全连接层上添加L2正则化参数. 最后将全连接层的输出使用Softmax函数, 获取文本分到不同类别的概率. 本文中旨在使用TextCNN模型得到该句子的全局特征, 所以丢掉最后一层. 最终该模型的输出为一维句子向量: ${{v}} \in {{{R}}^{1 \times d}}$ .

在中文命名实体识别任务中, 字符的标签判别过程不仅要考虑该字符周围的信息, 即局部特征, 句子中包含的全局信息也有助于最终的标签预测, 所以, 融合局部特征和全局特征是有必要的. 目前, 常用的特征融合策略有两种: concat和add. 由于concat是通过将向量拼接来融合信息, 维度增加, 最终导致计算量的增加, 所以, 本文采用了add融合策略得到最终的文本表示矩阵, 即: 将TextCNN与Star-Transformer模型的输出进行融合: ${{H'}} = \left[ {\left( {{{{h}}_1} + {{v}}} \right), \cdots,\left( {{{{h}}_n} + {{v}}} \right)} \right]$ , ${{H'}} \in {{{R}}^{n \times d}}$ .

2.4 CRF模型

命名实体识别本质上是一种多分类问题, 所以在解码阶段Softmax分类器是一种常用的方法. 但由于该方法只是单纯的分类, 没有考虑到标签之间含有依存关系. 因此, 本文使用条件随机场模型(CRF). CRF是给定一组输入序列条件下另一组输出序列的条件概率分布模型, 在自然语言处理中得到了广泛应用.

在CRF中, 每个句子 $ X=\left\{x_{1}, x_{2}, \cdots, x_{n}\right\}$ 都有一个待选标签序列集合YX , 通过计算集合中每个标签序列 $ Y=\left\{y_{1}, y_{2}, \cdots, y_{n}\right\}$ 的得分来决定最终的标注序列, 计算得分过程如式(12)所示.

$ {score}(x, y)=\sum_{i=1}^{n} {P}_{i, y_{i}}+\sum_{i=1}^{n+1} {A}_{y_{i-1}, y_{i}} $ (12)

其中, ${P} \in R^{n \times k}$ 是一个得分矩阵, k为所有标签数量, ${P}_{i, j}$ 表示句子中第i个字符对应第j个标签的分数; ${A} \in $ $ R^{(k+2) \times(k+2)}$ 是一个包含了句子开始与结束标签的转移矩阵, ${A}_{i, j}$ 则表示标签i到标签j的转移分数.

最后将每个标签序列的分数进行归一化得到概率, 其中概率最大的标签序列即为该句子的最终标注序列, 归一化过程如式(13)所示.

$ {P}(y \mid x)=\frac{\exp ({score}(x, y))}{\displaystyle\sum_{y^{\prime} \in Y_{X}} \exp \left({score}\left(x, y^{\prime}\right)\right)} $ (13)
3 实验及结果分析 3.1 实验环境

本文所做实验均在Ubuntu操作系统上进行; 处理器为i7-6700HQ@2.60 GHz; 内存大小16 GB; 显存大小为10 GB; 使用深度学习框架PyTorch 1.2.0构建所有神经网络模型进行训练和测试; 使用Python 3.6编程语言进行代码编写.

3.2 实验数据

本文采用微软亚洲研究院公开的MSRA数据集进行实验. 该数据集中含有训练集与测试集, 包含的实体类型有人名、机构名、地名. 其中, 训练集和测试集分别由46400个句子和4400个句子组成. 数据集中各类实体统计如表1所示.

表 1 数据集实体个数

3.3 标注策略与评价指标

在命名实体识别任务中, 有BOI、BOIE、BOIES三种标注方法. 本文采用了BOI标注策略, 其中实体中第一个字符用“B”代表, “O”表示该字符为非实体, 实体中第一个字符以外的字符用“I”表示. 所以, 将实体边界与实体类型结合可以得到7种待预测标签: “O”, “B-PER”, “B-LOC”, “B-ORG”, “I-PER”, “I-LOC”和“I-ORG”.

在命名实体识别任务中, 精确率P、召回率RF1值是常用的3种评价指标. 每种评价指标的具体计算过程如公式14所示. 其中, ${T_P}$ 为预测出是实体并预测正确的个数, ${F_P}$ 为预测出为实体但预测错误的个数, ${F_N}$ 为是实体但预测为非实体的个数.

$\left\{\begin{split} &P = \frac{{{T_P}}}{{{T_P} + {F_P}}} \times 100{\text{%}}\\ &R = \frac{{{T_P}}}{{{T_P} + {F_N}}} \times 100{\text{%}} \\ &F1 = \frac{{2PR}}{{P + R}} \times 100{\text{%}} \end{split}\right. $ (14)
3.4 参数设置

本实验使用BERT-Base预训练语言模型作为向量表示层, 该模型共有12层, 在多头注意力中头数为12, 隐层输出为768维, 参数大小为110 MB. 星型Transformer模型的层数分别设为1、2、3、4层, TextCNN中采用单通道方式, 由于数据集中实体最大长度为6, 所以卷积核设置四种不同的尺寸, 宽度与字符向量维度一致, 高度分别为3、4、5、6. 具体网络训练参数设置如表2所示.

3.5 实验过程及结果分析

在实验中, 首先验证了星型Transformer模型层数对F1值的影响. 随着训练迭代次数增加, BSTTC模型的F1值变化如图5所示, 其中, 每条折线代表了不同星型结构层数时模型的F1值变化. Star-Transformer-1表示星型结构的层数为1层, 其他模型以此类推. 实验中其余超参数不变, 只改变星型结构层数. 实验表明, 效果最好的是Star-Transformer-3模型, 并在第16个epoch时F1值达到最大95.69%.

表 2 参数配置

图 5 星型结构模型不同层数的F1值

表3中分别列出了取得最大F1值时数据集中每种实体识别的准确率、召回率和F1值. 与人名和地名实体相比, 机构类实体的识别效果较差, 原因可能在于大部分机构名中都嵌套有地名, 这对于最终的预测造成了较大的干扰, 导致预测效果不佳.

表 3 BSTTC不同类型命名实体识别结果(%)

为了验证星型Transformer模型轻量结构的优越性, 还在该语料上与BERT-Transformer-CRF模型进行了对比, 对比结果如图6所示. 可以看出, BSTTC模型的收敛速度更快, 在训练初期, 就能够达到一个较高的F1值, 并且持续提升, 最后保持在一个相当高的水平上. 而BERT-Transformer-CRF模型在多次迭代更新后才会上升到一个较高水平, 但还是无法超过 BSTTC模型.

图 6 实验结果对比

表4中分别列出了BERT-Transformer-CRF和BSTTC模型迭代训练的累计时间及其对应的F1值. 可以看到, BERT-Transformer-CRF模型在第18个epoch时得到最优F1值94.85%, 而BSTTC模型在第16个epoch时就达到最大F1值95.69%, 此时它们的训练时间分别为19238 s与54725 s, 与BERT-Transformer-CRF模型相比, BSTTC的训练时间大约节省了65%.

表 4 迭代训练累计时间

此外, 为了验证模型的有效性, 本文还在该语料上与以下模型进行了对比:

1) Radical-BiLSTM-CRF模型, 由Dong等[30]提出. 该模型将字的嵌入和笔画表示的连接输入到BiLSTM-CRF中进行训练.

2) Lattice-LSTM-CRF模型, 由Zhang等[31]提出, 该模型在嵌入层利用注意力机制融合了字符与词粒度特征, 其中单词选取原则为该字符居于单词末位.

3) DEM-attention模型, 由Zhang等[32]提出, 该模型同样利用注意力机制在嵌入层中动态结合了字符和单词粒度的特征, 只是单词选取原则稍有不同, 该字符在句子中对应的所有单词都包含在内, 然后将其输入BiLSTM-CRF中进行训练.

4) BERT-BiLSTM-CRF模型, 该模型采用预训练好的BERT模型产生字向量, 输入BiLSTM-CRF模型中进行训练.

5) CAN模型, 由Zhu等[33]提出, 该模型将预训练好的词向量输入CNN和GRU网络从相邻字符和句子上下文中捕获信息, 并使用了CRF进行标签预测.

6) BERT-Transformer-CRF模型, 该模型类似于BERT-BiLSTM-CRF模型, 将BiLSTM层替换为 Transformer层.

7) BERT-Star-Transformer-CRF模型, 该模型类似于BERT-BiLSTM-CRF模型, 将BiLSTM层替换为Star-Transformer层.

表5中分别列出了每种模型的精确率、召回率和F1值实验结果.

表 5 与其它模型对比结果(%)

从对比结果可以看出, 与其它模型相比, BSTTC模型在精确率、召回率和F1值3方面均有提高.

1)将模型4与模型1、模型2、模型3、模型5作对比, 可以发现模型4的F1值最高, 说明BERT抽取的特征比单独训练笔画特征和字词融合特征更丰富, BERT字向量更好的结合了上下文, 可以更好的表示字的语义信息.

2)将模型6与模型4做对比, 可以发现与BiLSTM相比, Transformer模型的特征抽取能力更强, 可以得到具有更丰富语义信息的字符特征.

3)将模型6、模型7对比, 可以发现在召回率和F1值上都有一定程度的提高, 在精确率上有所下降, 说明星型Transformer模型在简化结构的同时保留了绝大部分捕获长期依赖的能力.

4)将模型7、模型8做对比, 加入TextCNN模型后, 精确率、召回率和F1值都有所提高, 且都高于BERT-Transformer-CRF模型, 充分表明了与Transformer模型捕获的特征相比, TextCNN捕获的全局特征与星型Transformer模型融合后的特征更加丰富, 更有助于标签的判别.

4 结束语

针对传统词向量表示方法无法表征字多义性, 以及Transformer特征抽取模型参数量大, 训练时间长, 无法充分提取全局信息的问题, 提出了基于特征融合的BSTTC模型. 该模型摒弃了传统语言模型的缺点, 使用BERT动态生成含有丰富语义特征与语法结构特征的字符向量, 然后通过星型Transformer与 TextCNN联合模型进一步提取特征, 在减少训练时间的同时保证了特征抽取能力. 结果表明, 与以往模型相比, 本文的BSTTC模型在MSRA数据集上取得了最好的效果. 下一步将考虑引入外部信息, 提升复杂嵌套实体的识别效果.

参考文献
[1]
张晓艳, 王挺, 陈火旺. 命名实体识别研究. 计算机科学, 2005, 32(4): 44-48. DOI:10.3969/j.issn.1002-137X.2005.04.014
[2]
张涛, 贾真, 李天瑞, 等. 基于知识库的开放领域问答系统. 智能系统学报, 2018, 13(4): 557-563.
[3]
庞亮, 兰艳艳, 徐君, 等. 深度文本匹配综述. 计算机学报, 2017, 40(4): 985-1003.
[4]
曲春燕. 中文电子病历命名实体识别研究[硕士学位论文]. 哈尔滨: 哈尔滨工业大学, 2015.
[5]
王鹏远, 姬东鸿. 基于多标签CRF的疾病名称抽取. 计算机应用研究, 2017, 34(1): 118-122. DOI:10.3969/j.issn.1001-3695.2017.01.025
[6]
李业刚, 黄河燕, 鉴萍. 引入混合特征的最大名词短语双向标注融合算法. 自动化学报, 2015, 41(7): 1274-1282.
[7]
Ma L, Zhang YQ. Using Word2Vec to process big text data. Proceedings of 2015 IEEE International Conference on Big Data. Santa Clara, CA, USA. 2015. 2895–2897.
[8]
Sharma Y, Agrawal G, Jain P, et al. Vector representation of words for sentiment analysis using GloVe. Proceedings of 2017 International Conference on Intelligent Communication and Computational Techniques. Jaipur, India. 2017. 279–284.
[9]
Devlin J, Chang MW, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding. Proceedings of 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Minneapolis, MN, USA. 2019. 4171–4186.
[10]
Peng NY, Dredze M. Improving named entity recognition for chinese social media with word segmentation representation learning. arXiv: 1603.00786, 2016.
[11]
He HF, Sun X. A unified model for cross-domain and semi-supervised named entity recognition in chinese social media. Proceedings of the 31st AAAI Conference on Artificial Intelligence. San Francisco, CA, USA. 2017. 3216–3222.
[12]
Chen H, Lin ZJ, Ding GG, et al. GRN: Gated relation network to enhance convolutional neural network for named entity recognition. Proceedings of the 33rd AAAI Conference on Artificial Intelligence. Honolulu, HI, USA. 2019. 6236−6243.
[13]
Gehring J, Auli M, Grangier D, et al. Convolutional sequence to sequence learning. Proceedings of the 34th International Conference on Machine Learning. Sydney, Australia. 2017. 1243–1252.
[14]
Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need. Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach, NY, USA. 2017. 6000–6010.
[15]
Lample G, Ballesteros M, Subraman S, et al. Neural architectures for named entity recognition. Proceedings of 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. San Diego, CA, USA. 2016. 260–270.
[16]
Huang ZH, Xu W, Yu K. Bidirectional LSTM-CRF models for sequence tagging. arXiv: 1508.01991, 2015.
[17]
Ma XZ, Hovy E. End-to-end sequence labeling via bi-directional LSTM-CNNs-CRF. Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics. Berlin, Germany. 2016. 1064–1074.
[18]
Chiu JPC, Nichols E. Named entity recognition with bidirectional LSTM-CNNs. Transactions of the Association for Computational Linguistics, 2016, 4: 357-370. DOI:10.1162/tacl_a_00104
[19]
Collobert R, Weston J, Bottou L, et al. Natural language processing (almost) from scratch. The Journal of Machine Learning Research, 2011, 12: 2493-2537.
[20]
dos Santos C, Guimarães V. Boosting named entity recognition with neural character embeddings. Proceedings of the 5th Named Entity Workshop. Beijing, China. 2015. 25–33.
[21]
Strubell E, Verga P, Belanger D, et al. Fast and accurate entity recognition with iterated dilated convolutions. Proceedings of 2017 Conference on Empirical Methods in Natural Language Processing. Copenhagen, Denmark. 2017. 2670–2680.
[22]
Straková J, Straka M, Hajič J. Neural architectures for nested NER through linearization. Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics. Florence, Italy. 2019. 5326–5331.
[23]
谢腾, 杨俊安, 刘辉. 基于BERT-BiLSTM-CRF模型的中文实体识别. 计算机系统应用, 2020, 29(7): 48-55. DOI:10.15888/j.cnki.csa.007525
[24]
李妮, 关焕梅, 杨飘, 等. 基于BERT-IDCNN-CRF的中文命名实体识别方法. 山东大学学报(理学版), 2020, 55(1): 102-109.
[25]
李丽双, 郭元凯. 基于CNN-BLSTM-CRF模型的生物医学命名实体识别. 中文信息学报, 2018, 32(1): 116-122. DOI:10.3969/j.issn.1003-0077.2018.01.015
[26]
周晓磊, 赵薛蛟, 刘堂亮, 等. 基于SVM-BiLSTM-CRF模型的财产纠纷命名实体识别方法. 计算机系统应用, 2019, 28(1): 245-250. DOI:10.15888/j.cnki.csa.006703
[27]
杨文明, 褚伟杰. 在线医疗问答文本的命名实体识别. 计算机系统应用, 2019, 28(2): 8-14. DOI:10.15888/j.cnki.csa.006760
[28]
Guo QP, Qiu XP, Liu PF, et al. Star-transformer. Proceedings of 2019 Conference of the North American Chapter of the Association for Computational Linguistics. Minneapolis, MN, USA. 2019. 1315–1325.
[29]
Kim Y. Convolutional neural networks for sentence classification. Proceedings of 2014 Conference on Empirical Methods in Natural Language Processing. Doha, Qatar. 2014. 1746–1751.
[30]
Dong CH, Zhang JJ, Zong CQ, et al. Character-based LSTM-CRF with radical-level features for Chinese named entity recognition. Proceedings of the 5th CCF Conference on Natural Language Processing and Chinese Computing, NLPCC 2016, and 24th International Conference on Computer Processing of Oriental Languages. Kunming, China. 2016. 239–250.
[31]
Zhang Y, Yang J. Chinese NER using lattice LSTM. Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics. Melbourne, Australia. 2018. 1554–1564.
[32]
Zhang NX, Li F, Xu GL, et al. Chinese NER using dynamic meta-embeddings. IEEE Access, 2019, 7: 64450-64459. DOI:10.1109/ACCESS.2019.2916816
[33]
Zhu YY, Wang GX. CAN-NER: Convolutional attention network for Chinese named entity recognition. Proceedings of 2019 Conference of the North American Chapter of the Association for Computational Linguistics. Minneapolis, MN, USA. 2019. 3384–3393.