王梦贤,何春辉
(1.湖南城市学院管理学院,益阳 413000;2.国防科技大学信息系统工程重点实验室,长沙 410073)
随着信息技术的快速发展,文本自动纠错技术无处不在,涉及聊天信息、社交动态、学术出版物、政策文件、通知公告以及文档编写等日常应用场景。经过分析发现,在这些场景中较常见的错误有字词拼写错误(例如谐音字)、少字多字、字词异位、标点符号使用不当、数字错误等几大类。在海量的文本中,若完全依靠人力来完成上述错误类型的自动纠正显然不太现实。因此,提出高效的文本自动纠错方法来辅助人工完成海量文本的自动纠错已经成为了一个极具挑战的难题。
国外虽然有学者针对文本纠错任务提出了一些先进的理论和方法[1],但是大部分都只适用于印欧语系的语种,对中文的适应性较差。现阶段大多数中文文本纠错方法仍然需要借助规则或者纠错策略,只有少数方法是借助语言模型来自动探测错误并纠正错误,但整体的纠错率不高。近年来,随着知识表示技术的发展,也有部分学者提出结合大规模预训练语言模型[2]来解决中文文本的自动纠错难题。这类方法在文本纠错任务上取得了一些成效,在精确率方面有较大提升,但召回率偏低。此外,发现基于Kenlm和混淆词表的中文纠错方法具有较高召回率,但精确率非常低。综上所述,如何同时提升纠错算法的精确率和召回率就显得非常重要。
根据上述分析可知,为了有效提升中文自动纠错方法的综合性能,本文首次尝试通过融合预训练语言模型MacBERT和词表+Kenlm统计语言模型后提出了一种具有层次化结构的中文纠错方法。
早期的中文纠错方法主要是围绕文本自动校对[3]应用场景来展开,这类方法需要依赖人工制定的规则库来完成查错和纠错。随着统计学习的兴起,陈翔等[4]提出了一种规则和统计方法相结合的自动纠错技术,用来解决数字化系统的自动纠错难题并取得了一定的效果。石敏等[5]针对中文同音字错误类型提出了一种基于决策列表的中文纠错方法,借助构建的混淆集在同音字纠错任务上达到了较好的效果。此外,杨苏稳等[6]提出了一种结合模糊匹配和最小编辑距离来解决搜索引擎中查询语句的智能纠错方法,有效提升了用户的搜索体验。近年来,随着深度学习技术的发展,有学者提出结合知识库或知识表示技术来解决中文纠错难题,也取得了一系列的研究成果。王琼等[7]针对铁路车务系统语音识别后的文本易出现散串和同音字错误的情况,提出了一种基于领域知识库的查错算法,有效地提升了文本错误检测率。张佳宁等[8]利用word2vec词嵌入技术结合深度语言模型以及混淆集技术对语音识别后的文本进行自动纠错,也取得良好的效果。叶俊民等[9]提出了一种层次化修正框架,用于解决中文纠错任务,它在不同层次上分别结合预训练语言模型[10]和语义表示技术来探测并修正错误。王辰成等[11]和孙邱杰等[12]分别基于Transformer增强框架和BRAT噪声器对中文语法纠错进行了探索,有效地提升了中文语法的纠错性能。
受上述启发,在纠错领域中文语料上实现迁移学习后得到MacBERT[13]语言模型,并结合人工构造的词表+Kenlm[14]语言模型提出了一种中文纠错方法。
为解决现有基于BERT语言模型的文本纠错方法纠错性能偏低的问题,本文提出了融合MacBERT和词表+Kenlm的中文纠错方法。模型的整体流程及示例说明如图1所示。由图1可知,它是一个包含多级结构的一体化模型。根据输入的原始序列,首先会调用轻量级的MacBERT一级纠错模型完成错误探测和修正建议。然后结合一个判别模块,当发现MacBERT模型的纠错结果为空时,说明MacBERT模型没有从原始输入序列中探测到错误信息。
图1 融合MacBERT和Kenlm的中文纠错方法整体流程及示例说明图
有两种可能会导致这个结果:第一,原始输入序列中确实没有错误信息;第二,原始输入序列中存在错误,但是由于MacBERT模型的纠错性能有限,无法探测真实存在的错误。第一种属于正常情况,不会影响模型纠错性能。但第二种情况会直接对模型的纠错性能产生影响。为了避免这种情况的发生,提出新增一个基于词表+Kenlm统计语言模型相结合的二级纠错模型来完成二次纠错,它可以在一定程度上弥补MacBERT模型自身的不足。MacBERT一级纠错模型和词表+Kenlm二级纠错模型的相关概述请见2.1和2.2小节。
MacBERT[13]模型是在Google开源的Chinese BERT-base模型的基础上结合公开的大规模中文纠错语料进行微调后得到的一个轻量级模型。根据中文纠错任务的要求,额外追加了一个全连接层作为错误检测层,整个纠错模型是通过利用错误检测层和错误纠正层的Loss加权得到最终Loss值。相关计算公式如下:
其中,Lossdet是错误检测的损失函数,Losscor是错误纠正的损失函数,Loss是综合损失函数,ω是一个权重系数。除此之外,MacBERT采用了全词掩蔽和N-Gram掩蔽策略来选择候选序列进行掩蔽,从1-Gram到4-Gram字符序列的掩蔽比例分别调整为40%、30%、20%、10%。考虑到原始BERT模型使用[MASK]进行掩蔽,但它在微调阶段并不会出现这个标识,这会造成预训练任务与下游微调任务不一致。因此,MacBERT采用近义词替换来完成全词的掩蔽操作,当遇到某个词语不存在近义词的时候,通过随机词语替换策略完成掩蔽操作。MacBERT使用句子顺序预测(SOP)任务替换BERT原始的下一句预测(NSP)任务,并通过切换两个连续句子的原始顺序来创建负样本。MacBERT模型的示例流程如图2所示。
图2 微调后的MacBERT模型示例流程图
词表+Kenlm纠错模型共分为两步:第一步是错误检测;第二步是错误纠正。错误检测部分先通过中文分词器进行分词,若句子中含有错别字,分词后提取出不在常用词典中的疑似错词,并联合人工整理的混淆词典构建一个候选错词集合。在错误纠正部分,首先会依次遍历候选错词集合,同时使用音似字典和形似字典依次替换候选错误集合中的候选错词,然后通过Kenlm统计语言模型依次计算替换后的句子似然概率,并把似然概率超过原句且达到最大时所对应的替换词语作为纠正词返回,从而完成整个错误检测和错误纠正的流程。该方法最大优点是可以通过扩展混淆词典、音似字典、形似字典、常用词典来快速提升模型的纠错性能。
为了验证方法的有效性,选取中文纠错领域标准的公开数据集SIGHAN Bake-off 2015[15]作为实验评测数据集,它总共包含了1100个通过领域专家标注过的错误-正确中文句子对以及相应的错误位置和错误字词信息。实验部分采用中文纠错领域经典的查准率P、查全率R以及F1值三个评测指标来完成模型的性能评测。需要注意的是,相关指标皆采用强匹配准则来计算,即模型纠正结果与专家给出的正确句子必须完全一致,判定为纠正成功,否则就判定为纠正失败。三个指标可根据表1所示的混淆矩阵来计算。
表1 混淆矩阵的结构
为了全方位验证方法的性能,实验在同一个评测数据集上选取了五个不同的先进基线模型加入到对比实验组,相关实验结果如表2所示。
表2 不同模型在评测数据集上的纠错实验结果单位:%
根据表2的纠错实验结果可知,从单模型的角度来看,基于BERT模型完成迁移学习后得到的MacBERT模型相对其它基线模型来说不仅速度快,而且性能更高。查准率、查全率以及F1值分别达到了77.9%、66.4%和71.7%,这充分揭示了迁移学习技术所带来的优势。此外,本文所提方法在融合MacBERT+词表+Kenlm语言模型后整体性能大大提升。尤其是查全率和F1值相对于单独的MacBERT模型而言提升了3.6个百分点,准确率和召回率也有提升,这主要得益于同时发挥了MacBert和词表+Kenlm语言模型的优势。从实验结果来看MacBERT模型大概只能纠正85%左右的错误句子,而剩余15%的错误句子是通过词表+Kenlm语言模型来完成纠正。上述结果可以充分说明本方法具有更优的综合纠错性能。
针对中文智能纠错领域现有方法存在整体纠错性能偏低的问题,提出了一种融合MacBERT和词表+Kenlm的一体化中文纠错方法。实验结果表明,所提方法可以提升模型的整体纠错性能,尤其是结合可扩展的词表+Kenlm后能有效提升纠错模型的召回率和F1值,这为解决中文纠错难题提供了新的理论和方向。