耿志超,颜 航,邱锡鹏,印张悦
(复旦大学 计算机学院,上海 200433)
命名实体识别(Named Entity Recognition, NER)是自然语言处理(Natural Language Processing, NLP)中的一项基础任务,对下游任务具有重要意义[1]。随着近年来深度学习与预训练模型的发展,NER任务的性能得到了极大的提高[2-3]。然而,由于中文文本具有一词多义、无显式词边界的特点,中文NER仍然面临许多挑战。
近年来,基于词典的方法在中文NER领域占主导地位[4-7]。引入外部词典可以帮助模型在推理时解决未登录词(Out Of Vocabulary)问题,对外部词典的合理使用是中文NER取得高准确率的必要条件。这些方法首先将输入的句子与词典项匹配,然后通过修改模型结构将词典的边界信息和语义信息纳入模型。然而,基于词典的方法仍有缺点。首先,现有的方法使用基于统计的分词工具自动生成词典,加工过程的错误传播导致词典的质量较低。词典中包含大量非实体词与错误边界词,如“的”“20场”“布拉斯加(5”;甚至包含由于错误分词导致的无语言学意义字符串,如“﹁是”“率90%”。这些都为下游模型的推理过程带来大量噪声。其次,现有的方法无法兼顾词典的语义知识与动态更新。过去工作的一个分支[5-6]将词典匹配项的词嵌入融入模型,但更新词典需要重新训练模型。另一个分支仅利用词典项的边界信息[7],但却抛弃了词嵌入中的语义信息。
与需要加工处理、具有显式边界的词典相比,更多的知识是以未处理的普通文本形式存储的,更容易被获取。例如,可以通过搜索引擎获得各个领域的文本形式信息,公司维护的商业数据库也包含大量文本对象。一种自然的思路是采用检索技术[8-9],从庞大的文本资源中提取可用的知识。检索到的知识可以帮助消除输入文本中的歧义,从而提高性能。此外,端到端地使用文本知识可以减少中间过程的错误传播,如分词错误导致的噪声。然而,NER领域现有的检索增强方法[10]遍历输入样本的子句作为关键词,通过在线搜索引擎中进行检索,但多次的网络通信降低了任务效率。此外,现有的预训练模型足够强大,可以对输入样本中的绝大部分做出正确推理。对于模型可以正确处理的简单片段,为它们检索知识是没有价值的。
因此,减少检索次数、检索更有价值的知识,对于提高中文NER检索增强模型的效率和效果至关重要。为此,本文调查了模型推理错误的分布,统计数据表明,模型的推理错误大部分分布于模型的不确定片段中,模型的不确定片段构成了性能瓶颈。因此,本文提出基于不确定片段的检索增强命名实体识别框架,提取模型的实体级不确定片段并进行检索。具体地,本框架首先使用基础NER模型进行推理,利用蒙特卡洛丢弃法[11](Monte-Carlo Dropout)或K-最优标签序列定位输入样本的不确定片段。然后,通过将不确定片段作为关键词进行检索,本框架可以高效获取所需知识。最后,输入的样本和知识文本被送入知识融合模型以做出最终推理。本文在4个基准公开中文NER数据集中使用不同知识库进行实验以评估本框架的有效性。
综上所述,本文的主要贡献如下:
(1) 本文发现,不确定片段是目前NER模型的性能瓶颈,且K-最优标签序列之间的差异是定位它们的良好指标;
(2) 本文提出只对不确定片段进行检索,这不仅减少了检索次数,而且令检索目标更加精确;
(3) 实验结果表明,本框架在所有数据集上性能都明显优于基线NER模型,平均提高1.21%的F值,本框架的表现也优于现有的词典NER方法,是当前最佳结果(于MSRA数据集达到96.85%F值,于Ontonotes数据集达到83.78%F值)。
随着深度学习技术的发展,神经网络已经成为NER任务的主导性解决方案[12-13]。近年来,基于词典的方法在中文NER领域得到广泛应用。Yang和Zhang[4]提出基于词典的长短时记忆网络(Long Short Term Memory Network, LSTM),将词典边界信息编码于网络中。Li[5]等人提出了基于词格的Transformer网络FLAT,将词典项的边界信息通过首尾词嵌入编码,在不丢失信息的前提下转为一维扁平信息,进而利用Transformer模型将其与原序列信息融合。Liu[6]等人利用BERT适配器(BERT Adapter)[14]从BERT[3]模型底层引入词典信息,从而令词典信息与原输入序列充分交互。这两类方法在词典更新时需要重新训练模型。Wang[7]等人提出了适配动态更新词典的模型DyLex,该模型丢弃词典项的词嵌入,仅保留边界信息,并使用降噪层筛选所有匹配的词典项。该方法丢弃了词典项嵌入中的语义信息。
真实世界的信息与知识在持续更新,然而神经网络中的模型参数是固定的,并且它们的容量有限。利用检索方法增强神经网络是解决上述难题的一种途径。该方法在外部知识库中进行检索,利用外部知识增强模型性能。该方法已经在若干NLP任务中得到应用,如语言模型[15-16]、机器翻译[17]、自动问答[18-19]。在NER领域,Wang[10]等人提出利用搜索引擎增强NER模型。该方法使用遍历策略,将输入文本根据标点符号切分为子句,并将每个子句作为关键词进行检索,从而获取与输入文本相关的上下文。此外,他们采用知识蒸馏[20]技术将与训练集相关的外部上下文知识融入模型。该方法检索次数多,网络吞吐代价高,且检索精度较低,无法筛选最重要的知识。
模型对推理的置信程度并非等价于归一化指数函数(Softmax)输出数值的大小[11]。贝叶斯模型给出了计算模型不确定度的数学框架,但是该框架计算复杂度极高。为了在较低计算复杂度下获取模型不确定度,Gal和Ghahramani[11]提出了蒙特卡洛丢弃法,一种高斯过程的贝叶斯近似推理。该方法在模型推理过程中保持随机丢弃单元(Dropout)激活,通过多轮推理结果的差异来估计模型不确定度。不确定度估计在主动学习(Active Learning)领域应用广泛[22-23]。模型不确定的样本被视作含有更多信息,在扩充训练集时会被优先标注。在序列标注领域,Gui[24]等人采用蒙特卡洛丢弃法获取草拟标签与字符级别不确定标签,然后使用双流注意力机制来建模草拟标签间的长程依赖并修改不确定字符标签。该方法没有引入外部信息,模型很难修改推理错误的不确定字符,性能提升有限。
本节将介绍本框架对序列标注范式NER模型的不确定片段的采样方法,以及对中文NER样本不确定片段重要程度的调研。
2.1.1 蒙特卡洛丢弃法
蒙特卡洛丢弃法是估计神经网络不确定度的一种通用方法。在序列标注任务中,使用蒙特卡洛丢弃法可以获取每个字符位置的不确定度。然而对于NER任务,相较于不确定字符,实体级的不确定片段更有利于后续的精确检索。具体地,给定输入样本,首先使模型正常推理获取初步结果,然后将随机丢弃单元激活,利用蒙特卡洛丢弃法获取K个候选标签序列。此时可忽略字符级的不确定度信息,转而将初步结果序列与候选标签序列中的标签解码,获取模型在每个序列中推理得到的实体。本框架将不同序列实体集合之间的差集视作不确定实体,通过合并所有交叉、相邻的不确定实体就可以获取不确定片段。表1展示了一则获取不确定片段的例子,表格顶部为输入样本,中部包含了初步结果序列与候选标签序列,底部通过嵌套括号符号展示了不确定实体与不确定文本片段。不确定片段由不确定实体构成,长度、信息量均为实体级别。
表1 一则获取输入样本不确定片段的示例
2.1.2K-最优标签序列
蒙特卡洛丢弃法需要模型进行多次推理,会消耗较多计算资源。因此,本文提出了对序列标注范式NER进行不确定度采样的另一种可选方法。给定输入序列的标签概率分布,使用常见的维特比解码算法可以解码出概率分数最高的标签序列。通过微调维特比解码算法的迭代流程[25],可以获取概率分数为前K高的K个标签序列。NER领域对K-最优标签序列研究较少,过去有工作对K个标签序列重新进行排序以获取精度最高的序列[26]。本文发现K-最优标签序列亦可指示模型不确定度。将分数最高的序列用作初步结果,将其他序列用作候选序列,即可按上一节所述获取不确定文本片段。此外,本文观察到,当模型对推理结果置信程度很高时,K-最优标签序列之间的差异极小,例如,将一个单个的“O”标签修改为“S”类型标签。因为当没有其他潜在不确定实体时,修改单个标签的改动最少,对标签序列的总分数影响最小。因此,为了最小化检索次数,考虑到绝大多数中文实体的长度超过一个字符,本框架过滤掉与初步结果序列相差单个标签的候选标签序列。
为了证实不确定片段与模型推理错误分布之间的相关性并探究不确定片段的数量性质,本文在4个公开的基准中文NER数据集中使用BERT模型进行调研实验(1)详细实验设置见第4节。在使用训练集微调BERT模型后,本文使用蒙特卡洛丢弃法为测试集中的每个样本生成初步结果序列与8个候选标签序列,结果如表2所示。其中,F值代表BERT模型在每个数据集中正常预测的F值得分;F值理论上限代表修改正确所有不确定片段后模型的F值得分;不确定标签准确率与确定标签准确率分别代表模型在不确定片段与置信片段的标签级推理准确率;不确定片段平均数代表每个测试样本平均拥有的不确定片段数量;不确定片段平均长度代表每个数据集中所有不确定片段的平均字符数。
表2 不确定片段采样调研结果
从表2可见,不确定片段的数量与模型在数据集中的性能呈负相关。整体而言,不确定片段平均数较少,且平均长度很短,证明模型对大部分样本置信度较高,仅对少部分短片段不确定程度高。相较于遍历子句进行检索,只对不确定片段进行检索可大幅减少检索数量,提高检索精度。此外,不确定片段虽然占比少,却分布了大量推理错误。F值理论上限与实际F值的差异、不确定标签准确率与确定标签准确率间的差异,说明了不确定片段是难度最高的部分。不确定片段在占比少的情况下错误率高,构成了模型的性能瓶颈。因此,通过对不确定片段进行检索,可以高效获取模型最需要的外部知识。
通过将不确定片段作为关键词进行检索,可以有效获取外部文本知识以辅助模型推理。实际应用中存在多种检索方式,最通用的检索资源是搜索引擎,搜索引擎在几乎所有领域均可有效获取文本知识。对于延迟要求高或成本要求高的使用场景,可以使用离线检索方式。在收集领域文本知识库如百科、知识图谱、数据库文本项后,可在文本知识库中使用离散检索算法或稠密向量检索算法进行索引。对于知识分布集中的场景,可以利用搜索引擎获取足量相关文本构建本地知识库。在实际推理时可在本地知识库中进行离线检索。
本节将展示本框架的整体架构与训练流程。如图1所示,本框架使用两阶段流水线对不确定片段进行推理。在第一阶段,本框架使用基础NER模型推理得到初步结果与不确定片段。在使用不确定片段检索得到外部知识后,本框架在第二阶段使用知识融合模型结合外部知识与初步结果进行推理。两阶段的模型参数互相独立。
图1 本框架整体架构
在第一阶段,本框架使用基础NER模型获取初步结果并采样不确定片段。基础NER模型可以是任何序列标注范式的NER模型,如添加线性分类层的BERT。正式地,给定输入样本X=(c1,c2,…,cn),使用基础NER模型对其正常推理得到初步结果Lp。然后,通过蒙特卡洛丢弃法或K-最优标签序列,可以利用基础NER模型得到若干候选序列Lc,进一步如2.1节所述得到不确定片段U=(ci,ci+1,…,ci+o)。如果所有候选序列均与初步结果一致,即模型对输入样本置信,则初步结果Lp可作为最终结果。反之,可以利用U作为关键词进行检索,得到外部知识文本K=(k1,k2,…,km)。如果在一个输入样本中存在多个不确定片段,本框架分别为其检索知识并在第二阶段分别为不确定片段进行推理。
由于本框架中基础NER模型与知识融合模型的参数互相独立,两阶段的模型训练也可以独立进行。基础NER模型的训练流程与常规方法相同,本节将专注于知识融合模型的训练。
3.3.1 训练数据获取
为了减小模型训练与推理间的差距,在训练知识融合模型前需要对训练集中每个样本的不确定片段进行采样。使用在全部训练数据中微调的基础NER模型存在标签泄露问题,无法反映真实困难样本。因此,本框架基于K-折交叉验证的思路,将训练集的数据均分为K份,通过独立的K步为整个训练集采样不确定片段。具体地,每一步中选取1份数据作为采样目标,其余K-1份数据作为训练数据。可使用K-1份训练数据训练基础NER模型,对采样目标生成候选标签序列并获取不确定片段。此外,可以利用模型训练中的不同检查点(Checkpoint)生成多样化的不确定文本片段。给定输入样本,依次加载模型的全部检查点并获取对应不确定片段,若该不确定片段与已有片段均无显著重叠,则将其加入知识融合模型的训练流程。
3.3.2 损失函数计算
对知识融合模型最直观的优化方式是使用交叉熵损失函数,并且忽略外部知识文本片段的损失值。更进一步地,知识融合模型应该学习如何推理不确定片段,而非其他置信的简单片段,尤其在给定初步结果的情况下。因此,本框架为交叉熵损失函数引入字符级别加权平均,减小置信片段每个字符的损失权重。计算损失函数L如式(3)、式(4)所示。
其中,λi是第i位置的权重系数,lossi是第i位置的交叉熵损失值,α是取值属于[0,1]的超参数。当α取值为1时等价于普通的交叉熵损失函数。通过减小置信片段的损失值权重,模型可以专注于对高难度不确定片段的优化。
本文在公开基准数据集中进行综合分析实验以验证本框架的有效性。本文使用{B,I,E,S,O}标签集合,并使用标准F1值作为评估标准。所有实验均使用GeForce RTX 3090型号显卡进行运算。
本文在4个公开的基准中文NER数据集中进行实验,包括MSRA数据集[27],Ontonotes 4.0数据集[28],Resume数据集[4]和Weibo数据集[29]。MSRA数据集与Ontonotes数据集均取自新闻领域语料,通过标注得到;Weibo为网络博客语料标注得到;Resume为简历语料标注得到。本文采取与先前工作相同的训练集、验证集、测试集划分[5]。数据集统计信息如表3所示。
表3 数据集统计信息
4.2.1 模型设置
在本框架的第一阶段,本文使用添加线性分类层的BERT-base(2)https://huggingface.co/hfl/chinese-bert-wwm作为基础NER模型。为获取合法标签序列,本文使用维特比解码并限制非法标签转移。在第一阶段训练完毕后,本框架固定基础NER模型,进行第二阶段的训练。在本框架的第二阶段,本文使用BERT-base初始化知识融合模型,并随机初始化该模型中的标签词嵌入。
4.2.2 参数设置
所有实验中,本模型均使用AdamW优化器[30],使用比例为0.1的线性预热(Warm-up)学习率,所有输入文本被截断为最长128字符,批大小(Batchsize)设置为32。第一阶段,基础NER模型在所有训练数据中迭代20轮次(Epoch),学习率设置为2e-5。第二阶段,模型的迭代轮次为10,其余超参数采用随机搜索策略选取最优组合。学习率的搜索范围是{2e-5,3e-5},权重因子α的搜索范围是{0.1,1}。其余超参数均与BERT-base模型相同。本文在每个轮次的迭代后于验证集中评估模型性能。本文通过模型在验证集中的指标选取最优检查点,并汇报该检查点在测试集中的性能指标。
4.2.3 不确定片段采样
本文使用蒙特卡洛丢弃法与K-最优标签序列进行不确定片段采样。在默认实验设定中,针对蒙特卡洛丢弃法,本文生成8组候选序列;针对K-最优标签序列,本文选取分数前3候选序列,即两组候选序列。本文预先训练基础NER模型,并对所有实验数据集进行不确定片段采样,后续第二阶段针对知识融合模型的实验组均使用相同不确定片段。
4.2.4 检索设置
考虑到搜索引擎的通用性,本文在所有数据集的主实验及消融实验中均使用百度搜索引擎(3)www.baidu.com作为外部知识库。本文将属于百科类别的检索结果项设为最高优先级,其余类别检索结果项的优先级顺序不做改变。每项检索结果项的标题全部保留,内容截断至50字符。所有检索结果项按优先级顺序首尾相连接。在本框架的第二阶段,外部知识文本截断至最长400字符。
本文选取近年中文NER领域性能最佳的方法进行对比,实验结果与对比结果如表4所示。表中所示数值均为使用实体的准确率与召回率进行计算的标准F值百分点。在表格顶部本文展示无须使用词典的NER算法,包括BiLSTM+CRF[31]、TENER[32]与ERNIE[33]。在表格的第二部分展示了近年使用词典的性能最佳NER算法,包含LatticeLSTM[4]、PLTE[34]、结合BERT模型的FLAT[5]算法、结合BERT模型的Soft-Lexicon[35]算法、LEBERT[6]、结合BERT模型的DyLex[7]算法。表格底部展示了本框架在第一阶段基于BERT的基础NER模型性能与第二阶段算法性能,其中二阶段+蒙特卡洛代表本框架使用蒙特卡洛丢弃法作为不确定片段采样方式;二阶段+K-最优代表使用K-最优标签序列作为不确定片段采样方式。本文使用的BERT模型与对比算法使用的BERT模型参数量大小相同。由于提出检索基线算法的工作[10]未在中文NER数据集中进行实验,本文复现该算法并于消融实验与之进行对比。
表4 框架整体性能 (单位: %)
结果显示,相较于基于BERT的基础NER模型,结合蒙特卡洛丢弃法与K-最优标签序列的第二阶段将F值分别提升1.05与1.21个百分点。基于词典的算法普遍优于不使用词典的基线算法,然而,本框架仍大幅优于基于词典的算法,证明没有词汇边界信息的通用文本信息对模型推理具有很大帮助。在这些数据集当中,本框架在MSRA与 Ontonotes 中带来的性能提升最为突出,本文分析认为新闻领域数据集中的实体更容易在搜索引擎中检索到相关信息,与常识相符。与表2中F值理论上限相比,Weibo数据集中的性能提升相对较小,分析发现Weibo数据集中实存在大量无规则网络昵称,难以在搜索引擎中检索到相关信息。从实验结果可以分析得到,本框架对模型性能的提升直接与被检索到知识本身的质量,以及与不确定片段的相关程度。
本文进行消融实验以验证框架中各个组件的有效性与贡献度。消融实验的设定如下:
(1)消融检索: 在第一阶段对不确定片段采样后不进行检索,直接将第一阶段的初步结果与原输入序列送入知识融合模型,在没有外部知识的情况下做推理。
(2)消融不确定片段: 不再使用两阶段模型进行不确定片段采样。参照Wang等人的算法[10],利用输入文本的子句作为检索的关键词,将检索项拼接在句子后利用单个模型做推理。
(3)消融标签词嵌入: 不再使用标签词嵌入,即不将基础NER模型的初步结果送入知识融合模型。
(4)消融加权交叉熵: 二阶段优化知识融合模型计算损失值时不再使用加权交叉熵,等价于将权重恒设置为1。
消融实验结果如表5所示。本框架的两阶段的架构可以被视为一种特殊的模型集成方式,可以在没有外部知识的情况下小幅提高性能。消融不确定片段采样后, 通过子句查询检索得到的外部上下文的贡献有限。通过结合不确定片段采样和检索方法,本框架可以在最大程度上提升性能。此外,标签词嵌入与加权交叉熵损失对知识融合模型的训练也具有贡献。
表5 消融实验结果 (单位: %)
为了验证本框架的泛化能力,本文使用简单的检索算法,结合多种外部知识库与检索框架pyserini(4)https://github.com/castorini/pyserini进行实验。
(1)SE离线库: 将训练数据中的不确定成分在搜索引擎中进行检索,并将所有检索项保存至本地数据库。在测试时,使用BM25算法在本地数据库中进行离线检索。知识文本总量为46.6MB,检索延迟约为1~5ms。
(2)词典: 使用不确定片段与词典进行匹配,将所有匹配到的词典项作为外部文本知识。本文所用词典与4.3节中所引用对比实验的词典相同。词典文本总量为8.36MB,匹配延迟小于1ms。
(3)知识图谱: 本文使用思知(5)www.ownthink.com/knowledge.html知识图谱,其中包含1.4亿条关系三元组。本文将所有包含同一对象的三元组拼接,成为该对象的描述文档,并使用BM25算法检索相匹配的文档。知识图谱三元组数量较大,文本总量达到6.29GB,检索延迟为10ms级别。
(4)中文维基: 本文下载了开源的中文维基百科(6)dumps.wikimedia.org/zhwiki/,在简单的预处理后提取其中包含的所有文章。在应用本框架时,本文使用BM25算法从文章中检索匹配项。中文维基的文本总量为2.45GB,检索延迟为10ms级别。相较于基于算法生成的知识图谱,中文维基文本量较少,但质量更高。
在这些外部知识库中,SE离线库的知识广度最受限,词典包含的信息量最少。知识库泛化能力实验结果如表6所示,本框架可使用于多种类型的文本知识库。可以发现,本框架的性能与知识的质量、信息量直接相关。即使将词典项直接与输入拼接,性能仍优于过去基于词典的NER算法,证明了针对不确定片段进行知识增强的重要性。即使使用简单的BM25算法,当使用如中文维基等高质量知识库时,模型性能提升仍然显著。
表6 知识库泛化能力实验结果 (单位: %)
蒙特卡洛丢弃法与K-最优标签序列在F值得分方面性能相当。为了在更多维度上进行比较,本文提出两个新指标来衡量。
(1)采样接收率: 使用蒙特卡洛丢弃法时,大部分候选序列均会雷同;而K-最优标签序列产生的候选序列大部分因与初步结果相差过小而被过滤掉。采样接收率即为经过去重、过滤后得到保留的候选序列比例。采样接收率反映了采样方法的召回能力。
(2)有效样本率: 去重后,F值得分高于初步结果序列的候选标签序列所占比例。有效样本率反映了采样结果的噪声大小。
对比结果如表7所示。结果表明,K-最优标签序列采样法召回能力更强,也产生更多噪声。从计算复杂度的角度考虑,采样K遍的蒙特卡洛采样法在第一阶段将模型的计算复杂度提高K倍,K-最优标签序列采样法不影响第一阶段的计算复杂度;然而K-最优标签序列采样法采样得到更多的不确定片段,意味着更多的检索次数与二阶段模型推理。最佳方案的选择应结合数据集不确定片段的数量分布与具体检索方式进行判断。以本文实验设置为例,在不考虑检索延迟的情况下,蒙特卡洛采样法与K-最优标签序列采样法在4个数据集中分别将模型的计算复杂度平均提高了824%与108%,当使用高延迟的线上搜索引擎时,蒙特卡洛法综合性能更优;当使用离线知识库时则K-最优标签序列法性能更优。在实际应用中,可以根据使用场景调整超参数K折中性能与计算复杂度。
表7 不确定片段采样方法对比实验结果
本文于MSRA测试集对不确定片段采样方法的超参进行分析调查,包含蒙特卡洛丢弃法中前向传播产生的候选序列数、随机丢弃单元的丢弃概率,以及K-最优标签序列中选取的候选序列数。结果如表8所示。过低的采样能力无法有效提取不确定片段,而过强的采样能力会导致大量噪声,两者均对性能产生负面影响。采样能力对性能的影响呈先升后降趋势,存在局部最优参数。
表8 不确定片段采样方法超参分析结果
为了更直观地展现检索过程为模型预测过程带来的增益,本文给出对某一真实输入样例,本框架使用不同知识库时的输入知识案例分析。结果如表9所示。可以看出,对于文本片段“总后嫩江基地”,“总后”并非常用词语,基线模型无法区分该片段整体是否作为实体。使用该片段作为关键词, 可以在多个知识库中检索到“总后勤部嫩江基地”及相关信息,这些可以帮助模型更好地理解文本,从而做出正确判断。
表9 案例分析
本文提出了基于不确定片段的检索增强命名实体识别框架。该框架利用蒙特卡洛丢弃法或K-最优标签序列提取输入样本中的不确定片段,并据此于外部文本知识库中进行检索。最终,本框架利用外部知识辅助推理。结果表明,本框架显著提升模型性能。现有的NLP技术无法在神经模型中动态地维护所有需要的知识,于外部知识库利用检索方法可以解决这个问题,而本文基于不确定片段的检索范式使检索方法更加有效、高效。未来工作中,我们将把基于不确定片段的检索范式推广到更多的NLP任务和应用中。