参与任务
中文拼写检查任务是中文自然语言处理中非常具有代表性和挑战性的任务,其本质是找出文本段落中的错别字。这项任务在各种领域,如公文,新闻、财报中都有很好的落地应用价值。而其任务的困难程度也赋予了它非常大的研究空间。达观数据在CCL2022汉语学习者文本纠错评测比赛的赛道一中文拼写检查(Chinese Spelling Check)任务中取得了全国冠军,赛道二中文语法纠错(Chinese Grammatical Error Diagnosis)任务中获得了亚军。本文基于赛道一中文拼写检查任务的内容,对比赛过程中采用的一些方法进行分享,并介绍比赛采用的技术方案在达观智能校对系统中的应用和落地。赛道二中文语法纠错的获奖方案已经分享在达观数据官方公众号中。
本次中文拼写检查的任务是检测并纠正中文文本中的拼写错误(Spelling Errors)。拼写任务包括:音近,形近,音形兼近。特点是错误内容与被替换内容长度相同,这也意味着输入语句与输出语句的长度相同。
图1 音近字错误示例
在上述图1描述的案例中,输入句中的“干”是一处近音字的错误使用,应被替换为正确的“赶”,从而得到输出句子。
图2多字错误示例
这种任务在实际应用中会遇到一些困难。1. OOV(out of vocabulary)的问题会严重影响模型效果。首先,模型不可能纠错出没有在训练中见过的表达方式;其次,模型会由于在训练中没有见过相关实体而将他们错纠。2. 如上图2所示,当一个句子存在多处错误(糊涂两个字都错了),纠错时会受到上下文的影响,也就是受到其他错误的影响导致难以纠错成功。
纠错系统
如图3所示,纠错系统顾名思义是以一个系统流程的方式进行纠错任务。我们的系统为串联式,共有五个步骤。首先,我们对基础模 型进行预训练和微调,然后进行多轮纠错式推理,第三步是使用训练好的困惑度模型进行误召回检查,第四步则是使用实体纠错方法对于相关实体再次审核,最后使用精度很高但召回较低的Ngram语言模型进行再一次的补充。详细内容的介绍将会在该模块下逐一展开。
图3 拼写纠错方案流程图
拼音编码基础模型
图4 拼音编码模型结构
不同于常规的BERT模型,这次工作中,我们加强了模型对属于文本拼音的识别,这样可以针对性地面对近音字问题。如图4所示,除了常规的Embedding Layer,也就是字符的编码外,我们还加入了拼音输入。我们借鉴了DCN (Wang et al., 2021)中采用的编码方法,每一个拼音组合首先会被编码成一个独一无二的整数,输入模型中。而后,将拼音经过Convolutional layer后的矩阵与文本经过Embedding Layer之后的矩阵相加,再输入到Attention中,以此强化拼音编码在模型中的权重。不同于DCN中只在Embedding阶段将拼音编码与字符编码相组合,我们借鉴了DeBE