DCsR:一种面向中文文本的集成式纠错框架*

曹军航,黄瑞章,白瑞娜,赵建辉

(1.公共大数据国家重点实验室,贵州 贵阳 550025;
2.贵州大学计算机科学与技术学院,贵州 贵阳 550025)

输入文本准确是大多数自然语言处理NLP(Natural Language Processing)任务的基本前提,也是提高上层应用性能的关键。若不对错误进行处理,将会在下游任务中不断扩大其影响。中文文本纠错技术旨在检测和纠正给定中文文本中的错误,已经广泛应用在许多重要的领域,例如搜索优化、机器翻译和语音识别等。在书写方面,错误的文字会影响读者阅读体验。做好文本内容的审核是新闻、出版行业亟待解决的问题,使用文本自动纠错技术可以极大地提高人工审核的效率。目前中文文本纠错技术能够处理的错误按类型主要分为错别字、语序不当、成分缺失或冗余等。但是,目前的纠错模型无法覆盖多种不同错误类型的修正,如何应对不同场景下的文本差异,仍然是一项很有挑战性的工作。

不同于英语,中文需要借助输入法、语音识别等方法进行输入,常常会在文本中出现音错、形错等类型的错误。中文用法博大精深,相同语义的话语通常有多种表达方式,同样地,对同一句话也有不同的修改方式。研究人员针对英语文本的语法纠错已经进行了长期的研究并取得了优秀的成果。针对中文文本纠错问题的解决方案已经从传统的基于规则、N-gram的方法演变到基于机器学习的方法。

在业界主流方案中,中文文本纠错文法根据研究步骤大体被分为序列到序列的一阶段方法和包含检错纠错的两阶段方法。序列到序列的一阶段方法的基本解决思路是将纠错任务视为从错误文本到正确文本的“翻译”问题,跳过错误检测使用生成式方法直接进行纠正,不用界定和纠正具体错误类型,但无法在大型数据集上构建深度双向模型或预训练,限制了浅层网络的表达能力和学习能力,性能往往难以满足实际需求。

近几年,随着BERT(Bidirectional Encoder Representation from Transformers)[1]、XLNET[2]和ELECTRA(Efciently Learning an Encoder that Classies Token Replacements Accurately)[3]等预训练模型在许多下游NLP任务中也取得了巨大成功。在错别字的纠正上,基于预训练模型BERT改进的模型如FASPell(Fast, Adaptable, Simple, Powerful Chinese spell checker)[4]和PLOME(Pre-trained masked Language mOdel with Misspelled knowledgE)[5]等也表现优异,但在对错误字符进行可靠更正的同时,这些模型会更正句子中的每个字符,而不管其正确性如何,这可能会改变正确的字符,产生过纠的问题,从而导致高误报率。

然而在许多真实应用场景下,文本中往往只存在一小部分错误字符,过纠导致的低性能和高误报率使得更多研究人员将注意力转到了第2种方法,即检错纠错两阶段方法。该类方法先使用错误检测模型检测出文本中存在的错误位置和错误类型,再通过语言模型对其进行纠正。由于中文文本纠错是一项较复杂的任务,现在的主流模型只能偏向性地解决好1种或2种错误类型。有研究人员针对不同种类的错误使用不同的独立纠错模型再进行集成。但是,在中文文本中,人们很多时候其实无法定义具体的错误类型。例如,在错误句子“冰箱里有无个冰淇淋”中,“无”字处被标记为错误字符,若判定为成分冗余类型的错误,将会进行删除操作;
若判定为错别字类型的错误,根据使用模型的不同可能会替换为“一”或者“五”,所以定义不同的错误类型后纠错或者采用不同的模型纠错可能会得到不一样的修正结果。因为纠错结果的唯一性,当有多种修正结果时,人们常用投票的方式来选取最终结果,但这极大地依赖于模型的选择,并且可能会出现修改结果各不相同时无法投票的问题。因此,如何降低从候选集合TOPK中挑选TOP1的出错概率,挑选最优的纠正结果,非常值得研究。

对于不同的纠错模型在不同错误类型上的纠错能力具有偏向性的问题,目前序列到序列的一阶段方法和检错纠错两阶段方法都无法同时解决过纠导致的高误报率和覆盖多种错误类型纠正的缺陷。而基于投票的集成方式总是出现挑选错误的问题且无法处理纠错结果各不相同时的情况。针对以上问题,本文提出了一个面向中文文本的集成式纠错框架——DCsR(Detector Correctors-Ranker),在纠错前无需界定错误类型,利用构建的候选排序算法从表现各异的纠错模型召回候选集中挑选最优修正结果。本文需要解决以下3个问题:

(1) 如何解决过度纠正导致的高误报率,即避免将正确的字符改错的情况。由于掩码语言模型MLM (Masked Language Model)的随机掩码[MASK]机制,在对错误字符更正的同时也可能更正句子中的正确字符,并且在真实场景中错误概率是较小的,过纠会降低模型性能,因此解决过纠问题是本文的目的之一。

(2) 如何覆盖多种错误类型的纠正,即对任意输入的错误句子都可以进行修正。在中文文本中错误类型多种多样,纠错的目的是将句子改为更合理的结果,而不是界定在错误类型的判断上。若在已知错误类型的假设下选择具体的纠错模型,则界定了其修改范围。本文将摈弃这个假设覆盖多种不同类型的纠正。

(3) 如何评估最优的修正方案,由于纠错结果的唯一性,即在没有界定具体错误类型的假设下进行纠正,通过模型自身输出的纠正方案需要建立可靠的评估策略,以挑选一个相对最优的结果。

对过纠导致的高误报率问题,DCsR框架使用两阶段的模式,将错误检测任务视为序列标注问题,具有所需数据量较少、训练难度较小等优点。在检测到错误位置时再进行纠正。而对于错误位置不考虑其错误类型,无论是针对错别字纠正还是语法问题纠正,在检测到错误字符的位置上,集成已有多种表现优异的纠错模型,构建具有公信力的候选排序算法,利用字符级别的一级排序和句子级别的二级排序控制最终的修正结果,得到最优选的方案。本文提出的DCsR框架适用性强,满足了中文文本错误自动检测并纠错的要求。在公开数据集SIGHAN15和CGED2020上进行测试,使用该框架得到的集成模型的效果取得了优于5个主流对比模型的结果,进一步提升了对中文文本纠错的能力。

目前,业界根据问题的解决步骤将中文文本纠错方法分为序列到序列的一阶段方法和检错纠错二阶段方法。序列到序列的一阶段方法,基本思路都是构建“错误-正确”文本对,将纠错任务视为从错误文本到正确文本的“翻译”问题。很多研究人员选择以Seq2Seq(Sequence to Sequence)模型框架为基础进行中文文本纠错,处理输入与输出不等长的序列情况,主要实现方法是基于注意力机制的编码器-解码器Encoder-Decoder模型。Fu等人[6]采用的基于注意力机制的Transformer和Zhou等人[7]采用的基于统计机器翻译和神经翻译结合的模型都在NLPCC2018的中文语法纠错比赛中取得了很好的成绩。王辰成等人[8]提出使用动态残差结构增强Transformer机器翻译模型捕获语义信息的能力,并通过腐化语料的方法进行数据增强。Ren等人[9]提出使用卷积神经网络机器翻译解决中文语法错误,由于卷积神经网络可以并行计算,其运行速度相比长短时记忆LSTM(Long Short-Time Memory)网络的提高了很多。但是,上述模型都存在所需数据量大、难以训练和性能差的问题,因此难以被实际应用。

检错纠错二阶段方法将任务划分为检测和纠正2个阶段,使用多个步骤多个模型,每个模型解决具体的特定问题,然后通过流水线的方式串联。Zhang等人[10]改进了原有BERT直接获取每个字的候选集的方法,提出了一个包含检测网络和纠错网络的中文纠错模型SM-BERT (Soft-Masked BERT)。其中,检测网络是基于Bi-GRU构建的一个二分类模型,用于预测文本出错的概率;
纠错网络则是利用BERT生成候选集合并打分。Li等人[11]提出了一个拼写纠错框架DCSpell(Detector-Correctorframework Chinese Spell checker),其中检测器和校正器都是基于Transformer的网络,充分利用了预训练模型的能力,在其后的处理过程使用了自制的混淆集来影响召回。但它们都只适用于针对错别字输入与输出等长序列的纠正,无法涵盖所有错误类型的纠错。

另外,在检测和纠正方面分别还有许多单独的研究。其中,在错误检测研究方面,中文语法错误诊断CGED (Chinese Grammatical Error Diagnosis)竞赛中哈工大讯飞联合实验室HFL(Joint Laboratory of HIT and iFLYTEK Research)的Fu等人[12]对神经网络序列标注模型BiLSTM-CRF(Bidirectional Long Short-Time Memory-Conditional Random Field)进行改进,将汉语句子内部的统计特征融入底层输入,采用模型内部融合的技术,将多个Bi-LSTM模型的输出加权融合,再经过CRF层计算最终结果,使用如模板匹配、重复项处理的外部融合机制发挥不同模型的优势,在CGED2018中取得了第1名。2020年,Wang等人[13]将残差网络与ELECTRA结合训练,再使用80个模型集成,将位置级别上的评价指标F1分数提高到了0.404 1。在错误纠正研究方面,常见的中文文本自动校对工具通常仅能处理错别字词问题,即中文拼写检查CSC(Chinese Spell Check),目前性能较好的模型大多是基于BERT等掩码语言的模型。但是,仅依靠BERT直接预测概率最大的候选结果随机性较强,而真实错误往往都是音近或形近错别字。2019年,Hong等人[4]提出FASPell,一种使用BERT作为去噪自编码器DAE (Denoising AutoEncoder)、置信度相似性解码器CSD (Confidence-Similarity Decoder)作为解码器的无监督训练方式的模型,其候选字符是根据周围语境即时生成的,避免了困惑集所带来的不灵活性。2020年,Cheng等人[14]提出了SpellGCN(Chinese Spelling check via Graph Convolutional Network)模型,使用图卷积对音近形近字进行图嵌入编码,将语音和形状的相似性信息整合到了语义空间中,进一步约束了输出的范围,使得误报率较低。2021年,Liu等人[5]提出了一种具有误拼知识的预训练掩码语言模型PLOME,提出了基于混淆集的掩码策略,以每个字符的笔画和语音作为输入,使预先训练的带有错误拼写知识的掩码语言模型能够模拟任意字符之间的相似性。Wang等人[15]针对BERT进行MLM任务存在未考虑前后字符依赖关系的问题,提出了一种动态连接网络DCN(Dynamic Connected Network)以构建模型输出部分相邻字符之间的相关性。Guo等人[16]在BERT模型的基础上提出了一种全局注意力解码器,能够使模型学习到输入句子中正确字符和错误字符候选集之间的关联关系,减轻局部错误的上下文影响。但是,中文文本纠错是一项较复杂的任务,原始的BERT模型只能处理错别字这种输入和输出等长的情况,而在文本纠错中还存在成分缺失或冗余等输入和输出长度不相等的情况,针对不同种类或者同一种类的错误使用不同的纠错策略能够综合多种方法的优点,扬长避短。在2020年的CGED竞赛中,Wang等人[13]就提出了ResBERT(a combining ResNet and BERT model)模型,在BERT模型中融入残差网络,增强输出层中每个输入字的信息,使模型可以更好地检测语法错误位置。在修正任务中,针对缺失错误,首先预测缺失位置缺失的字数,然后再使用BERT语言模型生成修正候选结果,最后通过比较多个候选修正句子的困惑度来确定缺失修正结果。针对用词不当错误,使用RoBERTa(Robustly optimized BERT pretraining approach)模型选取候选字,然后再综合考虑字音、字形相似度以及语言模型打分来选出最终的修正结果。

综上所述,以机器翻译为代表的一阶段生成式方法,存在着所需数据量大、难以训练和性能差的缺点,无法满足实际应用的需求。对于检错纠错两阶段流水线的方法,目前无论是检错阶段提出的模型还是针对各种错误类型的纠错模型都具有各自的优点,但现有的端到端模型解决方案都只是在错别字上表现较为优异,且对于不同类型的纠错研究大都通过集成的方式,建立在已知错误类型的前提假设上,从而使用对应的模型进行纠正。但是,错误的类型本身就是通过概括自定义的,后续使用何种纠正模型极大地依赖于检测模型输出的错误类型。本文则提出不考虑其错误类型,均按模型的方法进行修改,最终统一通过一个多策略、可拓展的候选排序模块评价修正结果的合理性。

本文提出的面向中文文本的集成式纠错框架DCsR如图1所示。该框架由错误检测器D和纠错集成器C2部分组成。给定一个包括n个字符的句子X={x0,x1,…,xn},错误检测器D预测出句子中错误出现的位置,将检测到的字符标记为1,并且输出序列Y={y0,y1,…,yn}。纠错集成器C根据自定义添加纠错器C0,C1,…,Ci,这些纠错器将Y和X作为输入,分别对错误字符进行纠正,每个纠错器输出预测概率最大的修正结果进行召回候选,最后对召回的候选结果进行排序,得到最终修正序列Z={z0,z1,…,zm},其中可能存在m≠n。

Figure 1 Schematic diagram of Chinese text integrated error correction framework DCsR图1 中文文本集成式纠错框架DCsR示意图

3.1 错误检测器

DCsR框架中的错误检测器D用于检测输入句子中是否有错误字符并标记其位置。对于原始输入X,错误检测器D将输出一个标记序列:

(1)

正确字符的位置用0标记,错误字符的位置则用1标记。

错误检测器可以基于预训练语言模型构建。近几年,基于Transformer 结构的BERT类的MLM预训练方法在下游自然语言处理任务上获得了出色的结果,但它们需要大量的计算。Clark等人[3]基于对抗网络提出了一种新的预训练方法RTD(Replaced Token Detection)。与MLM任务不同,RTD的预训练任务是区分输入的词是否被替换的二分类任务。利用生成器对句子中的单词进行替换,然后判别器判断句子中哪些单词被替换过,如图2所示。这种训练方式使模型对错别字、突兀性语义非常敏感,适合用于文本错误检测任务。中文句子首先经过ELECTRA特征提取层,提取文本的语义和基本的文本错误特征并用全连接层对其降维。本文实验拟采用HFL基于官方ELECTRA训练代码以及大规模的中文数据进行训练的中文ELECTRA预训练模型来标记错误位置,并将错误字词替换为对应数量的[MASK]掩码标记,即序列Y由Y0和X生成,如式(2)和式(3)所示:

Figure 2 Training process of ELECTRA pre-training language model 图2 ELECTRA预训练语言模型训练过程

Y={y0,y1,…,yn}

(2)

(3)

其中,[MASK]是一种特殊的token标签,xq代表原字符。

3.2 纠错集成器

DCsR中的纠错集成器C即由不同的纠错器C0,C1,…,Ci对错误检测器D检测出错误位置的字符分别进行纠正后,再利用一个候选排序器R来评价所有候选集合,最终挑选出最优的修正结果。目前中文文本错误类型主要分为错别字、语序不当、成分缺失或冗余4种类型。大多数模型将错误检测视作序列标注任务,不仅需要标注错误位置,也需要标注其错误类型,但本文认为对应不同错误类型的修改策略可能会有所不同。

DCsR框架不需要基于已知错误字符类型进行纠错,只需判断该位置是否有错,即只存在2种情况,用户根据实际场景自定义添加不同的纠错器C0,C1,…,Ci,分别对错误位置的字符进行修改操作。例如在新闻媒体行业,发布文稿中可能存在更多的由输入法带来的错字词类型的错误,少量的错误是成分缺失、冗余或语序紊乱等错误,则可自定义配备较多的错别字纠错器搭配少量的冗余、删除或语序错误的纠错器。如图1所示,其中纠错器C0,C1,C2是更偏向于错别字纠正的模型,模型判断是否修改错误位置的字符,若需修改则执行替换(replace)操作并给出替换建议;
纠错器C3是专门针对成分冗余类型的错误,这种纠错器的操作就很简单,直接执行删除(delete)操作;
纠错器C4是专门偏向于针对成分缺失或语序错误类型的纠正模型,则通过判定后对错误位置前后执行添加(add)字符操作,或者对错误位置执行改写、更换顺序(order)等操作。最后所有纠错器模型输出的结果均放到候选集合中。为了后续候选排序模块的决策,将输出结果规范为四元组的形式,如式(4)所示:

(start,end,opt,correct)

(4)

其中,start和end分别表示错误的开始和结束位置;
opt表示建议的操作,包含以下4种:替换replace,删除delete,填补add,改写order;correct则表示具体的修改建议。如图1中的示例,“冰箱里有无个冰淇淋”这句话,使用不同的纠错器模型Ci则有不同的修改策略,其中(4,4,replace,一)即表示从0开始,将字符位置的[4,4]闭区间内的字符“无”据纠错器C0判断需要进行替换操作,建议替换为字符“一”。

因此对于错误检测器识别出的错误位置q,使用i个纠错器C0,C1,…,Ci分别预测第q个位置上被[MASK]字符的修改结果,如式(5)所示:

(5)

纠错器的选择可以根据用户不同场景自定义添加或者删除。譬如在新闻领域,出错概率很小且基本是输入法带来的拼音或五笔错误,则可以使用掩码语言模型,因其模型和特点非常适合用于错别字词类错误的纠正;
在CSC任务上表现优异的FASPell[4]、PLOME[5]和SM-BERT[10]等模型,还可添加根据规则匹配的模型或者N-gram语言模型等。又譬如在外国人书写中文的考试审核场景下,出现得更多的是语法类错误,则考虑添加更多的生成类模型。以Seq2Seq模型框架为基础,比如动态残差结构增强Transformer机器翻译模型[8]、BART序列生成模型[17]等,生成类模型在解决成分缺失方面比掩码语言模型更有优势,因为其在纠正成分缺失和语序错误时,不需要给出缺少的字数,如果给与模型提示信息,还可以显著提高模型的纠错准确率和召回率。

由图1示例,若根据其中某一个单一模型的判定,将会依赖于所选的纠错器得到不同的结果。若根据简单的投票策略判断,由于纠错器C0和C2的输出结果相同,最终会挑选出票数最高的(4,4,replace,一),句子将会修改为“冰箱里有一个冰淇淋”。当然这样纠正也是合理的,但从原句出发分析,用户极大概率是由于输入同音错误的字,因此将“无”替换为“五”才是最优的选择,则出现了挑选非最优的情况。因此,由于纠错的正确结果具有唯一性,且各模型可能在不同问题上的表现均有差异,为了获得更好的性能,而非依赖单一模型的判定或者是只通过集成投票的策略选出最终结果,如何判定哪个纠错器的输出才是最优的修正结果是本文下一步重点讨论的问题。

本文构建了一个多策略、可拓展的候选排序算法进行可靠的评估决策。根据候选排序的难易程度将候选排序器分为一级排序和二级排序,如图3所示。

Figure 3 Flowchart of candidate sorting algorithm 图3 候选排序的算法流程图

3.2.1 一级排序

一级排序,即基于简单且能快速判断的字符级别特征对召回候选集中的修正结果进行评估并排序,其目的是过滤明显错误的候选,选出最有可能的TOPK结果,其中K(K≤i)为给定值。如图4所示,一级排序构造多策略的字符级别特征,通过从历史经验或实际场景自定义特征重要程度进行综合性打分。

Figure 4 First order sorting strategy图4 一级排序策略

first_score(s) =

(6)

TOPK=sort(first_score(s))={s0,s1,…,sK}

(7)

3.2.2 二级排序

二级排序即进一步使用更精细化的句子级别特征对一级排序召回的K个候选结果进行评估并排序,其目的是挑选出最可靠的候选。因为这个步骤会利用除了字符以外的辅助特征,使用复杂模型计算其替换概率,将引入较大的时间损耗,所以候选排序算法的逻辑是在一级排序后根据需要判断是否继续进行二级排序。同一级排序采用多策略的方式进行综合性打分,如图5所示。

Figure 5 Secondary sorting strategy图5 二级排序方案

(8)

排序后将筛选出分数最高的候选作为最终的修正结果TOP1。

TOP1=zq=max(sort(score(s)))

(9)

最终输出修正序列Z={z0,z1,…,zm}。

4.1 数据集

为验证DCsR框架对中文文本纠错的解决能力,本节分别在错别字数据集上横向对比5个典型的单纠错模型和使用DCsR框架的集成模型的性能,在混合多种错误的数据集上纵向测试集成式纠错框架的有效性。

(1)错别字数据集。

对应错别字词类错误有专门的公开任务和数据集SIGHAN,本文合并SIGHAN13~15SIGHAN训练集、SIGHAN13测试集和SIGHAN 14测试集来进行训练,使用SIGHAN15的测试集进行测试。测试集共有1 100个句子,仅包含错别字词错误。

(2)混合错误数据集。

本文使用2016年至2020年中文语法错误检测公开任务提供的CGED数据集和2013年至2015年的中文拼写检查公开任务提供的SIGHAN Bakeoff数据集进行合并训练。即对于成分缺失、冗余、语序错误和错别字词同在的复杂文本错误,最终使用CGED2020测试集检验模型联合使用的性能。

4.2 评价指标

本文分别采用句子级的准确性(Acc)、精确性(Precision)、召回率(Recall)和F1值指标来评估检测和纠正任务的性能,其计算方法分别如式(10)~式(13)所示:

(10)

(11)

(12)

(13)

其中,tp表示将正类样本预测为正类的数量,tn将负类样本预测为负类的数量,fp表示将负类样本预测为正类的数量,fn表示将正类样本预测为负类的数量。

4.3 实验参数设置

(1)错误检测器D。

本文实验基于ELECTRA序列模型进行检测,模型的实验参数如表1所示,其中,隐藏层维度为768,ELECTRA预训练模型的Transformer结构为12层,多头注意力机制的头数为12,每批次大小为240,优化器采用的是Adam,丢弃率为0.15,最大迭代次数为20,学习率为10-5,同时使用早停法缓解过拟合。

Table 1 Training parameters of ELECTRA model 表1 ELECTRA模型训练参数

(2)纠错器C。

为了使模型适用于纠错任务,本文实验基于BERT和BART模型进行微调,因此根据各自任务的特点使用了不同训练参数,分别如表2和表3所示。

Table 2 Training parameters of BERT model 表2 BERT模型训练参数

Table 3 Training parameters of BART model 表3 BART模型训练参数

BART序列生成模型微调设置为:基于复旦大学提供的BART中文预训练模型“fnlp/bart-large-chinese”,BART序列生成模型微调,训练时批次大小均为72,最大输入长度为100,最大输出长度为116。BART的学习率为0.000 02,权值衰减值为0.01,共训练100轮。

BERT掩码语言模型的设置为:基于Hugging Face提供的中文BERT预训练模型“bert-base-chinese”。BERT掩码语言模型的微调训练使用批次大小为72,BERT Encoder和全连接分类层的学习率都是0.000 01,输入输出长度最大值均为128。训练中固定了随机种子为8,当连续4轮训练结束后模型在验证集上的准确率没有提升就会提前停止训练。

(3)候选排序器R。

一级排序使用混淆集字典筛选、频次值和编辑距离3种特征进行排序;
二级排序使用句子通顺度和分词变化2种特征进行进一步约束排序。这里权重都设为1,即:h1=h2=h3=w1=w2=1。其中,混淆集的生成方式为自制,通过收集和设置相似拼音,利用pypinyin库生成常用字范围内字对字的混淆集,再利用Wang等人[19]开源的字音字形混淆集进行补充,具体做法如下:针对形近混淆集的生成,将字转化为图片,模糊图片的其中一部分,利用光学字符识别进行扫描选出识别错误的字符作为原字的形近字加入混淆集。针对音近混淆集的生成,收集普通话演讲语料,用自动语音识别技术进行语音识别,对比识别结果,将不一样的识别结果作为原字的音近字加入混淆集。

本文使用的混淆集转换为字对字形式后,共计约58万对。

4.4 对比实验结果及分析

为了证明DCsR框架的有效性,本文横向对比5个典型的单纠错模型BERT-FT、FASPell、二元语言模型(Bigram)、SM-BERT、DCN和使用框架的集成式模型DCsR(BERT-FT+FASPell+Bigram+SM-BERT+DCN,表4中简称DCsR)的性能。

Table 4 Model comparison experiments on SIGHAN15 dataset表4 错别字数据集SIGHAN15上的模型对比实验

(1)BERT-FT[1]:使用BERT预训练模型进行微调。输入错误的句子,并添加Softmax层以更正句子中的每个字符。

(2)FASPell[4]:使用BERT预训练模型作为DAE生成候选,并使用CSD过滤候选。

(3)Bigram[19]:使用Kenlm和Jieba工具包实现,Jieba用于将文本分割成短语,Kenlm用于训练拼写检查的Bigram语言模型。

(4)SM-BERT[10]:将中文纠错分成错误检测和错误纠正2部分,检测器使用Bi-GRU,校正器使用BERT,并通过Soft-Masking技术将两者进行融合。

(5)DCN[15]:使用端到端的动态连接网络,考虑上下文、当前位置的候选字符以及下一个位置。对每个字符,生成一系列的候选字符集,对相邻的2个字符的所有候选字符,生成全连接图。

表4总结了在错别字数据集SIGHAN15上使用DCsR框架集成的模型与基线模型的对比结果。可以看出,单纠错模型中DCN模型性能最高,但使用DCsR框架进行集成后的模型在错误纠正方面的评价指标F1值又进一步提升了3.93%,在错误纠正的能力评测上也取得了最高的性能,说明了纠错集成框架的有效性。虽然DCsR框架实验使用的错误检测器ELECTRA在错误检测方面未超过表现优异的DCN模型,但本文主要是提供了一个有效解决目前纠错能力缺陷的框架,该框架可以灵活使用,通过替换使用更高性能错误检测模型来提高错误检测的召回率,或者添加其它表现更优异的纠错模型用于覆盖更多的纠错结果,性能将会进一步提高。

4.5 消融实验结果及分析

为了验证DCsR框架中纠错集成器的结构有效性以及排序算法的合理性,考虑在多种不同类型错误的场景下,使用5个基线模型Bigram、FASPell 、BERT 、BART 和Delete分别进行纠错,再使用DCsR框架进行集成得到集成式模型DCsR(Bigram+FASPell+BERT+BART+Delete)来进行对比。其中,Delete表示判断成分冗余进行删除操作的纠错器,若错误位置为单字符,直接对错误位置进行删除操作;
若为连续错误,则进行分词,依次对其中的每个词进行删除操作以得到多种结果候选。为使表达简洁,用ensemble表示以上5个基线模型的融合,对比直接投票结果与依次加入一级排序策略和二级排序策略的结果变化。

实验中模型的性能以TOP1准确率和TOP3准确率来衡量。TOP1准确率是考量模型只返回1个结果时的准确率,当返回结果与答案一致时认为模型输出结果正确;
TOP3准确率是考量模型返回概率排序前3的结果中包含答案,就认为模型输出的结果正确。实验结果如表5所示。

Table 5 Ablation experiments on CGED2020 dataset表5 混合错误数据集上的消融实验

由表5可以看出,单模型的表现效果不一,但集成后TOP1准确率大大提升,并且随着DCsR排序策略的增加,TOP1准确率均依次上升,证明了纠错集成器的有效性。还可以看出,在集成投票策略后,TOP3准确率达到了74.9%,而TOP1准确率只达到了66.3%,即最优修正结果就在概率排序前3的结果中,但由于纠错结果具有唯一性,DCsR的候选排序策略又进一步降低了从TOPK中挑选TOP1出错的概率。

表6展示了多种模型对2个具体示例的修正结果,一个是错别字类型的错误,一个是语法类型的错误,而各模型的表现均不一,证明了模型在解决问题时的偏向性缺陷,因此利用DCsR框架集成纠错模型的输出结果才更合理、更优选。

Table 6 Examples of modified results for various models表6 多种模型的修正结果示例

针对现有中文文本纠错主流方案中不同的模型只能解决部分错误类型的纠正缺陷,且仅仅依赖单一模型进行纠正或是通过简单集成投票的方式得到的最终修正结果都缺乏可靠性,从而导致总是出现从候选集中挑选非最优修正结果的问题,本文提出了面向中文文本的集成式纠错框架DCsR。该框架由错误检测器和纠错集成器2部分组成,解决了过度纠正导致的高误报率,且不需要在已知错误类型的前提假设上进行对应纠错,而是通过领域特性自定义配比多种表现优异的纠错模型进行集成,可覆盖多种错误类型的纠正,也可在突出问题上重点覆盖。其中集成策略通过构建一个多策略、可拓展的候选排序算法进行更可靠的修正。并且根据排序效率区分了利用字符级别的一级排序和句子级别的二级排序策略。在错别字错误公开数据集SIGHAN15上与现在的主流纠错模型进行对比测试,实验表明使用DCsR框架进行纠错的F1性能指标比表现最优的单模型纠错提升了3.93%,纠错性能得到了进一步提高。在混合错误公开数据集CGED2020上的消融实验也表明了DCsR框架结构的有效性。

由于中文语义表达方式具有多样性,本文提出的框架仍然存在很多不足,相比于端到端的方法来说,DCsR框架比较依赖错误检测器的召回率。本文提出的框架主要是解决目前纠错模型普遍存在缺陷和限制,在下一步的工作计划中,拟尝试使用表现更优异的检测模型进行实验,考虑再把在未知错误类型下进行修正的结果反向传输到检测模型的训练过程中,共同训练网络参数,利用其优化检测效果。此外,在纠错集成器部分,尝试进一步优化多纠错模型集成的效率问题,设计更好的解决方案,使其能够得到广泛应用。

猜你喜欢错别字字符排序排序不等式中学生数理化·七年级数学人教版(2022年11期)2022-02-14诗嘲错别字学生天地(2020年34期)2020-06-09恐怖排序科普童话·学霸日记(2020年1期)2020-05-08错别字的自述作文小学中年级(2020年2期)2020-04-26字符代表几小学生学习指导(低年级)(2019年12期)2019-12-04一种USB接口字符液晶控制器设计电子制作(2019年19期)2019-11-23HBM电子称与西门子S7-200系列PLC自由口通讯数字通信世界(2019年3期)2019-04-19节日排序小天使·一年级语数英综合(2019年2期)2019-01-10消失的殖民村庄和神秘字符少儿美术(快乐历史地理)(2018年7期)2018-11-16高考作文常见错别字大全课堂内外·创新作文高中版(2016年7期)2016-08-19

推荐访问:纠错 中文 框架