NLP 论文领读|中文拼写纠错:怎样改善模型对 multi-typo 的纠正效果?
欢迎来到「澜舟论文领读」专栏!快乐研究,当然从研读 paper 开始——澜舟科技团队注重欢乐的前沿技术探索,希望通过全新专栏和大家共同探索人工智能奥秘、交流 NLP「黑科技」,踩在「巨人」肩上触碰星辰!
本期分享者:甘子发
澜舟科技算法实习生 ,郑州大学自然语言处理实验室(ZZUNLP)二年级硕士生。目前正在进行文本纠错方向的研究 E-mail: zfganlp@foxmail.com
写在前面
自然语言文本中经常会出现一些拼写错误(typo),在中文文本里即所谓的错别字,中文拼写纠错(Chinese Spelling Correction,CSC) 可以对中文文本中的 typo 进行检测和纠正。拼写纠错在诸多 NLP 任务和应用中都有重要作用,如 OCR、语音识别和搜索引擎等。在 NLP 任务和日常工作生活场景中,中文文本中的 typo 主要是拼音和字形相似导致的,示例如表 1 所示。
Copy Block 则是用来输出一个 copy probability,计算过程如下:
然后以 copy probability 为权重,将 copy distribution 和 generative distribution 相加作为最后输出,这样相当于给输入的 token 额外加上了一个偏重,让模型更加倾向于保留原来的 token:
\\mathbf{p}=\\omega \\times \\mathbf{p}_{\\mathbf{c}}+(1-\\omega) \\times \\mathbf{p}_{\\mathbf{g}} (4)
2. Noise Modeling Module
针对 Contextual Typo Disturbance 问题,CRASpell 提出了 Noise Modeling Module,其思想是训练模型在原始上下文和有噪声的上下文中输出相似的概率分布。
Noise Modeling Module 的结构也是 Transformer Encoder 加 Generative Block,不同的是其前面还有一个 Noisy Block,其通过替换的方式在 typo 的上下文中插入噪声,而噪声上下文的质量又受到两个因素的影响:
a. 插入噪声的位置
作者根据表 3 的实验结果,决定在 typo 周围d_{t} 个字符内选择, $d_{t}=5$ 时如图 2 所示,如果句子中没有错误或者选择的位置正好是一处 typo,则不插入噪声。
这里我们可以看到,Noise Modeling Module 只在训练时被用到,而插入噪声的位置没有计算在 loss 内,这样做是为了不改变训练过程中数据里 typo 的数量,让插入的噪声只起到改变上下文信息的作用。
实验设置和结果
数据集方面,论文中的训练集包括 10K 人工标注的 SIGHAN 数据 3-5,加上 271K 的自动生成的数据 6,测试集使用的是 SIGHAN15 的测试集,另外作者还抽取了 SIGHAN15 测试集中所有的 multi-typo 数据以及相同数量的 negative(不含 typo)数据,组成了 multi-typo 测试集,如表 4 所示。指标采用了 character-level 的 precision、recall 和 F1 分数,即预测对一个 typo 标签算一个正确的预测结果,这样更能体现论文提出的方法对 multi-typo 的提升效果。
基线模型:
- SoftMask:提出 soft-masking 策略提升 BERT 的错误检测性能;
- SpellGCN:将 GCN 与 BERT 结合对字符间的关系进行建模;
- Tail2Tail:基于 BERT 的模型,但把解码器换成了 CRF;
- cBERT:论文作者发表于 2021 年的工作,用 CSC 数据进行预训练的 BERT,论文提出的 CRASpell 模型也用 cBERT 进行初始化;
- PLOME:与 cBERT 相同,但另外融合了从拼音和笔画获取的发音和字形特征;
- cBERTCopy:将 copy mechanism 应用在 cBERT 上;
- cBERTNoise:将 Noise Modeling Module 应用在 cBERT 上;
- cBERTRdrop:基于 cBERT 实现的 Rdrop 方法 7。
1. Main Results
我们可以从表 5 中看到,Noise Modeling Module 和 copy mechanism 都能提升模型性能,使用了 Noise Modeling Module 的 cBERTNoise 和 CRASpell 在 multi-typo 测试集上均取得了优于其他方法的结果(Correction-level 的 Precision 高于 Detection-level,是因为其分母是在 ground-truth 范围内的预测标签的数量,而不是所有预测标签的数量),而另外还使用了 copy mechanism 的 CRASpell 则在两个测试集都取得了最好结果。作者也从 SIGHAN14 的测试集中筛选出了一个 multi-typo 测试集,结果如表 6 所示。
表6
2. Effects of Different Replaced Positions
论文中对比了 Noisy Block 在输入句子中选择插入噪声位置的两种方式:
- 在整个句子中随机选择
- 在 typo 附近选择
结果如表 7 所示,作者还在测试集的数据中插入噪声,测试噪声与 typo 的距离对结果的影响,结果如图 3 所示,两组实验的结果都表明距离 typo 较近的噪声对模型的性能影响较大。
3. Effects of Different Replaced Characters & the Copy Block
表 8 展示了插入噪声的两种方法:随机从词典中选取和从 confusion set 中选取的结果,可以看出 confusion set 的效果更好,因为从 confusion set 中选取的近音、近形字更接近实际场景下的 typo。Copy Block 被用来减少 BERT 模型对有效字符的修改,从表 9 可以看出其对 BERT 模型性能的提升,cBERT 因为在 CSC 数据上预训练过,所以 Copy Block 对其提升幅度较小。
4. Comparison of Different Methods for Multi-typo Texts
作者为了展示 Noise Modeling Module 对模型的提升,另外实现了两种基于 cBERT 的方法:
- MultiRound:用 cBERT 对输入进行多轮预测,直至不再修改;
- NoiseTrain:用 Noise Block 生成的数据训练 cBERT,插入噪声的位置也参与 loss 计算。
结果如表 10 所示,可以看出 NoiseTrain 提升效果最差,作者猜测是因为插入的噪声使训练数据中 typo 数量增加,且质量偏低,从而导致模型在 single-typo 和 zero-typo 的数据上的效果变差,而 Noise Modeling Module 中插入的噪声只作为上下文,不参与 loss 计算,作者认为这是导致结果差别巨大的关键所在。
总结
针对之前 CSC 模型的两个限制:Contextual Typo Disturbance 和 Overcorrection,这篇论文提出了一种新的拼写纠错模型。针对第一个问题,论文提出了 Noise Modeling Module,在训练过程中生成含噪声的上下文,该方法有效地提升了模型在 multi-typo 文本上的纠错效果。针对 Overcorrection 问题,论文将 Copy Block 与 CSC 模型结合,训练模型在原字符有效的情况下尽量不进行修改。最终,该方法也是在 SIGHAN15 任务上取得了新的 SOTA。
参考文献
1 Gu J, Lu Z, Li H, et al. Incorporating Copying Mechanism in Sequence-to-Sequence LearningC//Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2016: 1631-1640.
2 Zeng X, Zeng D, He S, et al. Extracting relational facts by an end-to-end neural model with copy mechanismC//Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2018: 506-514.
3 Wu S H, Liu C L, Lee L H. Chinese Spelling Check Evaluation at SIGHAN Bake-off 2013C//SIGHAN@ IJCNLP. 2013: 35-42.
4 Yu L C, Lee L H, Tseng Y H, et al. Overview of SIGHAN 2014 bake-off for Chinese spelling checkC//Proceedings of The Third CIPS-SIGHAN Joint Conference on Chinese Language Processing. 2014: 126-132.
5 Tseng Y H, Lee L H, Chang L P, et al. Introduction to SIGHAN 2015 bake-off for Chinese spelling checkC//Proceedings of the Eighth SIGHAN Workshop on Chinese Language Processing. 2015: 32-37.
6 Wang D, Song Y, Li J, et al. A hybrid approach to automatic corpus generation for Chinese spelling checkC//Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing. 2018: 2517-2527.
7 Wu L, Li J, Wang Y, et al. R-drop: regularized dropout for neural networksJ. Advances in Neural Information Processing Systems, 2021, 34.