命名实体识别(Namedentityrecognition,NER)旨在识别出文本语言中的不同实体并将实体进行精准归类,被广泛应用于事件抽取、关系抽取、问答系统等方面。自MUC-6[1]被首次提出后,命名实体识别经历了从基于规则词典[2]、机器学习到基于深度学习的发展,对基于规则词典方法而言,规则的制定一般基于句法和语法的模式,难以迁移到别的领域,传统机器学习方法与前者相比,虽然可移植灵活性大大提高,但是仍然需要人工参与特征提取,近年来,随着计算机领域技术水平的提高,基于深度学习的命名实体识别方法得到了广泛应用。
Liu等[3]提出将BiLSTM-CRF模型融合人工设计特征应用于命名实体识别,在CoNLL2003数据集上取得88.83%的F1值。万里等[4]利用基于字词联合训练的BiLSTM命名实体识别方法,在中文电子病历数据集上的准确率达到98.28%。Lin等[5]针对地铁车载设备非结构化故障数据,提出多头自注意力机制和CNN-BiLSTM-CRF的命名实体识别,取得了较好效果。Huang等[6]利用双向LSTM与条件随机场(CRF)相结合进行判决文件命名实体识别,F1值达70.49%。Zhang等[7]提出了一种新的嵌入方法,将字符粒度和词粒度融合到文本编码,总体F1值在MSRA数据集上达到90.87%。上述方法虽在自然语言处理领域取得了一定成效,但都未能考虑上下文语境,存在着语言模型无法处理多义词表示的问题。Google实验室综合了不同语言模型的特点,提出BERT预训练模型,采用双向Transformer编码器,在预测下一个字时参考前后双向信息,有效解决文本信息表示的一词多义问题,实现了语义关系的提取。
目前,针对镁合金铸造领域,并没有专门的铸造缺陷语料数据集,笔者构建了镁合金铸造缺陷数据集,在提出的BERT-BiLSTM-CRF模型上进行验证,与当前主流的几个命名实体识别模型进行对比,以验证文中模型的有效性。
图1BERT-BiLSTM-CRF模型结构Fig.1BERT-BiLSTM-CRFmodelstructure
图2BERT模型结构Fig.2BERTmodelstructure
图3LSTM单元结构Fig.3LSTMunitstructure
ft=σ(Wf[ht-1,xt]+bf)。
式中:σ——激活函数;
Wf——遗忘门的权重矩阵;
ht-1——上一时刻的隐藏状态;
bf——遗忘门的偏置向量。
式中:Wi——输入门的权重矩阵;
bi——输入门的偏置向量;
Wc——细胞状态的权重矩阵;
bc——细胞状态的偏置向量;
Ct——时刻的单元状态;
——当前时刻的细胞状态。
输出门根据单元状态确定最后数据集的输出值,计算公式分别为
ot=σ(Wo[ht-1,xt]+bo),
ht=ottanhCt,
式中:Wo——权重矩阵;
bo——偏置向量
由于LSTM从前向后编码,模型仅能获取文本单向的上下文信息,而BiLSTM包含前向LSTM和后向LSTM。它对镁合金铸造缺陷文本的每个字词序列采取前后双向LSTM,将同一时刻的LSTM进行融合,作为BiLSTM的输出,模型便可获取双向上下文信息。
条件随机场(CRF)是一种无向图模型,它的输入是BiLSTM层输出的镁合金铸造缺陷语料中每个文本标签的分数,若没有CRF层,BiLSTM模块将每个字对应标签的最大概率作为预测输出。字词标签关系可能出现错误,CRF层通过学习镁合金铸造缺陷数据集中的特征设置约束规则,对标签序列起到约束作用,避免出现“I-type”在“E-type”之后的情况。
假设P为从上层输入的发射概率矩阵,T为转移概率矩阵,对于观测序列X=(x1,x2,…,xn),得到对应预测序列Y=(y1,y2,…,yn)的标签分数公式为
式中:Pi,yi——第i个字被标记成第yi个标签的分数;
yi——第i个预测序列值;
Tyi,yi+1——标签yi到标签yi+1的转移分数。
CRF层计算标签序列的条件概率公式为
式中:——真实的标注序列;
Yx——所有可能的标注序列。
最终解码时利用维特比算法,公式为
由式(1)可以获得,全局最优序列。
根据实验要求,将自建镁合金铸造缺陷语料数据集划分为命名实体识别的训练集(train.txt)、验证集(dev.txt)和测试集(test.txt),三份数据集中文本数量之比大致为6:2:2。
表1标注实例Table1Exampleofannotation
实验采用准确率(P)、召回率(R)和调和平均数(F1)作为验证模型对铸造缺陷实体识别效果的评价指标。准确率(P)指模型正确识别出的铸造缺陷实体数占识别出的铸造缺陷实体数的比例;召回率(R)指模型正确识别出的铸造缺陷实体数占所有铸造缺陷实体数的比例;F1综合了准确率和召回率,其值越接近1表明模型效果越好,各个评价指标的计算公式为
P=(Tp)/(Tp+Fp),
R=(Tp)/(Tp+Fn),
F1=(2PR)/(P+R),
式中:Tp——正确识别出的铸造缺陷实体数;
Fp——错误识别出的铸造缺陷实体数;
Fn——未识别出的铸造缺陷实体数。
文中实验采用PaddlePaddle框架进行模型的搭建,Python版本为3.7.9,CPU为AMDRyzen75800H,GPU为NVIDIAGeForceRTX3060。
读取镁合金铸造缺陷数据集,生成词典,将训练集、测试集及验证集中的数据转换为相应的格式,输送给BERT-BiLSTM-CRF模型。训练过程中,BERT-BiLSTM-CRF模型loss不断减小,经过9个epoch训练,模型loss便趋于0且不变,表明已完成模型训练。将训练好的模型文件保存在model文件夹下,待对模型进行测试验证。
表2不同命名实体识别模型测试结果Table2Testresultsofdifferentnamedentityrecognitionmodels
图4镁合金铸造缺陷实体预测语料及结果Fig.4Predictioncorpusandresultsofmagnesiumalloycastingdefects