华文语法纠错使命旨在对文本中生存的拼写、语法等差错举行自动检测和改正,是自然语言处理领域一项重要的使命。同时该使命在公文、新闻和教育等领域都有着落地的应用价值。但由于华文具有的文法和句法规则比较复杂,鉴于深度学习的华文文本纠错在实际落地的场景中仍然具有推理速度慢、纠错准确率低和假阳性高等缺点,因此华文文本纠错使命还具有非常大的研究空间。悲观数据在CCL2022汉语学习者文本纠错评测竞争的赛道一华文拼写检查(Chinese Spelling Check)使命中取得了冠军,赛道二华文语法纠错(Chinese Grammatical Error Diagnosis)使命中获得了亚军。本文鉴于赛道二华文语法纠错使命的内容,对竞争过程中采用的一些方法举行分享,并介绍竞争采用的技术方案在悲观智能校正系统中的应用和落地。赛道一华文拼写检查的冠军方案会在后续的文章分享。
本次华文语法纠错使命是对给定的句子输出可能包含的差错位置、差错类型和修正答案,而最终的评测指标是假阳性、侦测层、识别层、定位层和修正层这五个维度指标的综合结果。而且本次评测使命使用的数据是汉语学习者的写作内容,与母语写作者相比汉语学习者的数据本身就具有句子流畅度欠佳、差错复杂度较高等情况。因此,本次评测的难度在于对于汉语学习者的书写内容既要保证检错和纠错的准确率和召回率,还要保证正确句子不能举行修改操纵以降低模型的假阳性。本文主要从数据和模型两方面来分享本次竞争中采用的模型和策略。
数据分析
本次评测中,官方提供了CGED的历年竞争数据(41,239条)和Lang8数据(1212,457条)供模型训练,同时提供了3767条评测数据用以验证模型的效果和性能。为了解数据的差错分布以及数据的质量,我们首先对评测数据举行了分析。CGED-21验证集中的差错分布情况如图1所示,由此可以看出数据集中占绝大多数的均为用词差错,其次为缺失差错,而乱序差错的占比最少。
图1 验证集差错占比统计图
同时在数据测验的过程中还发现了CGED和Lang8数据集中生存的一些数据问题。
具体问题如下所示:
源句子与目标句子完全不相关;
目标句子是对源句子的批注;
源句子中生存差错编写距离较大的情况;
数据集中末尾处生存多字的缺失差错
对此,我们也摘录了数据集中生存的一些问题的样例数据;由样例数据可知,不管采用哪种模型,数据中包含的这些差错均会导致模型产生一些差错的特征映射,从而影响模型的性能。因此在构建语法纠错模型之前首先需要对数据举行清洗,去除质量较差的句子。在本次竞争中,数据预处理是利用编写距离、字数差异和改正字数等多个维度的评估来实现的。
表1 数据中的差错样例数据
纠错策略
本次评测使命中的语法差错可以分为拼写差错、语法差错和符号差错。其中拼写差错包括形似音近差错,而语法差错则主要包括用词差错、缺失、乱序和冗余。这些差错类型具有差异性和多样性,利用单个模型难以覆盖所有的差错类型;因此,竞争中采用串行的多阶段华文语法纠错方法来解决华文文本中生存的各种差错。
01拼写纠错模型
对于拼写纠错使命,我们是从数据和模型两个维度来举行解决的。数据方面,首先收集了分歧来源的殽杂集词典并对其举行整合和扩充,然后鉴于殽杂集和微信新闻语料生成了包含分歧差错模式的大规模语料来对模型举行训练。模型方面是利用MDCSpell[2]来实现拼写纠错使命。进一步地,我们发现检错和纠错模块可以直接使用BERT输出的语义特征信息,而不需要舍弃CLS和SEP。而且这样还能保证两个模块的输出维度相同更方便特征信息的融合。图2 拼写纠错模型结构图
此外,拼写纠错模型的定位是解决数据中生存的形似音近问题,而且整个流程还后接了语法纠错模型,所以拼写纠错模型只需要保证纠错的准确率高而误召回低。因此在推理阶段,拼写纠错模型还利用阈值对模型的输出举行判别以确定是否接受当前的纠错结果。
02语法纠错模型
拼写纠错模型只能解决数据中生存的形似音近差错,因此我们鉴于序列到编写的Seq2Edit模型来完成剩余的差错类型的改正。Seq2Edit是目前最优的语法纠错模型,它通过预训练模型获得输入句子的语义特征编码,然后通过全连接层预测句子中对应的每个句子的编写标签,该模型对应的解码空间为插入、删除、替换、保持和移动五种编写操纵。而且该模型还通过多使命的方式引入了检错模块,以便利用检错的输出信息增强模型的纠错效果。该语法纠错的模型结构和解码流程如下图所示:
图3 语法纠错流程图
原始Seq2Edit模型是通过删除和插入两种操纵来解决句子中的乱序差错,但是由于模型的训练和推理阶段生存暴露偏差,故对于连续字符的缺失差错,模型可能因缺少上下文特征信息即使通过多个轮次也无法举行改正。例如下表中的乱序差错,当对一侧举行删除操纵之后,而缺少了大量的上下文信息故模型无法对另一侧的插入操纵举行补齐。而且模型将乱序差错看作冗余和缺失两种差错的集合也会导致模型对删除操纵的置信度偏高。但是通过引入移动编写操纵的方法能够较好地解决乱序的问题。
表2 原始Seq2Edit模型对乱序差错的纠错能力
在推理阶段,为了在输出的标签空间中搜索出一条最优的解码路径,我们利用局部路径解码方法对局部的移动编写操纵确定一条和为0的相对路径,并通过自适应阈值的方法对分歧编写操纵、分歧的词性和词频确定分歧的修改接受阈值,由此提高模型的改正准确率并解决模型的过度改正等问题。
03模型集成
分歧的模型学习到的语义特征信息生存一些差异,因此将多个差异较大而性能略差的模型正确的组合能够极大地提升模型的性能。本次评测中,我们对分歧预训练模型训练的纠错模型举行加权集成以提升模型的准确率。此次参与模型集成的有Bert、MacBert和StructBert这3个预训练模型训练的6个Seq2Edit模型。
04数据增强榜单
在实验分析的过程中,我们发现模型对多字词的缺失和句子分歧位置的差错的纠错能力分歧,并且当前的数据集未能覆盖绝大多数的差错,因此生存OOV的问题。所以我们利用数据生成的策略来解决因OOV导致的模型无法对差错举行改正的问题。本次竞争中,拼写纠错和语法纠错两个使命都用到了数据增强技术,且均使用微信公众号语料作为种子数据。对于数据增强,我们鉴于字和词两个维度举行数据扩充,并维护了生僻词表、词频表、键盘布局相邻表、形近殽杂集和音近殽杂集以保证生成的句子符合华文的语用频率和分布规律。
数据增强的流程如下所述:
(1)数据预处理:对句子举行预处理并掩码掉非华文字符、人名和地名等字符位置;
(2)采样设错位置:确定对句子举行设错操纵的字符位置;
(3)采样设错类型:确定当前字符位置的设错类型;
(4)采样设错操纵:针对步骤(3)中的设错类型确定设错的操纵,一般来说分歧的设错类型对应的设错操纵也不尽相同,冗余操纵的设错操纵包括重复当前字词、随机插入和按键盘布局相邻表等方式插入;用词差错的替换策略包括形似殽杂集、音似殽杂集和随机替换
针对拼写纠错使命形似字差错:音似字差错:词近似差错的比例为0.4:0.4:0.2;而语法纠错的比例是乱序差错:缺失差错:冗余差错:用词差错分别0.05:0.1:0.15:07
05其他策略
狐疑度策略:狐疑度可以用来评估句子的流畅程度,因此竞争中还通过狐疑度对多个模型的输出举行评估并选择狐疑度最低的纠错句子作为最优解。
成语纠错:华文中的成语俗语是约定俗成的,因此我们维护了成语俗语规则表,利用规则匹配到疑似成语差错,并对修改前后的句子举行狐疑度计算以确定是否接受对句子差错的修改。
实验结果
在本次竞争的过程中,我们首先对比了鉴于Seq2Seq的模型和鉴于Seq2Edit模型的基准模型效果,然后选择了Seq2Edit模型作为本次竞争的基本框架。由该赛道的评测指标可知,本次竞争不仅考察模型的纠错能力,还考察模型正确区分句子对错的能力;因此我们训练了分歧性能的多个模型并通过模型集成和狐疑度来选择最优结果;分歧模型的模型效果对比如下表所示。由表中数据可知,鉴于Seq2Seq的模型的检错能力较好,但同时模型引入了较高的误召回,从而使得假阳性的指标偏高;而鉴于Seq2Edit的方法更能够权衡精确率和召回率,使得模型在评测数据上取得更好的结果。同时通过对比可知,利用拼写纠错模型预先改正用词差错,然后再对其他差错举行纠错,能够提升模型的效果。
表3 分歧模型的效果对比
技术落地方案
悲观智能校正系统依托于自然语言处理和光学字符识别等技术,实现了分歧格式的输入文本的自动校正。该系统涵盖了内容纠错、格式纠错和行文规则纠错等针对分歧应用场景下的纠错模块,其中内容纠错模块包括拼写纠错、语法纠错、领导人纠错、符号纠错和敏感词检测等多种校正模块。目前悲观智能校正系统已支持公文领域、金融领域和通用领域的文本校正使命,并且可针对分歧领域的校正需求为客户提供定制化的解决方案。悲观智能校正系统的如图4所示,其核心模块主要是文档解析和智能纠错。其中智能纠错模块鉴于预训练模型、序列标注、语言模型和知识蒸馏等技术不断提升华文文本纠错的精度和速度。同时悲观智能校正系统也在不断探索新的技术以更好地实现领域迁移和无痛解锁更多的应用场景。
图4 悲观智能校正系统
总结展望
对比本次竞争和实际纠错工作中的技术落地点可知华文语法纠错的相关研究距离工程落地还有一定的差距。
工程应用中的一些难点在于:
模型复杂度较高,推理速度慢
真实的纠错数据较为稀缺,尤其是母语者的差错数据
纠错模型容易出现过度改正的情况,即模型的假阳性偏高
现有的模型往往无法覆盖常识、知识型的差错
参考:1. http://cuge.baai.ac.cn/#/ccl_yaclc2. Chenxi Zhu, Ziqiang Ying, Boyu Zhang, and Feng Mao. 2022. MDCSpell: A Multi-task Detector-Corrector Framework for Chinese Spelling Correction. In Findings of the Association for Computational Linguistics: ACL 2022, pages 1244–1253, Dublin, Ireland. Association for Computational Linguistics.