Zhang R, Pang C, Zhang C, et al. Correcting Chinese spelling errors with phonetic pre-training[C]//Findings of the Association for Computational Linguistics: ACL-IJCNLP 2021. 2021: 2250-2261.
摘要翻译
中文拼写纠正(CSC)是一项非常重要且具有挑战的任务。在本论文中,作者提出了一个新的端到端CSC模型,该模型利用强大的预训练和微调方法将音标特征整合到语言模型中。不同于训练语言模型中使用一个特定的token进行mask,作者将要被mask的词用音标特征和对应的同音词代替。更进一步的,提出了一个统一的框架,使用自适应权重的目标对错误检测和纠正进行联合训练。实验证明该模型是有效的。
模型浅析
一般情况下,中文拼写检查任务是将一个可能包含拼写错误的序列映射到另一个正确的序列,其中和都是中文字符。
该论文中提出的端到端CSC模型由检测和纠正两个模块组成。检测模块以为输入,预测每个字符拼写错误的概率。纠正模块将和其对应的拼音序列的嵌入表示作为输入预测正确的序列。我们使用拼写错误的概率作为权重,来融合和的嵌入表示。
和预训练和微调框架一致,作者首先预训练了一个语音的MLM模型,从简单的发音和拼音中学习预测字符。在微调阶段,联合优化检测和纠正模块。
这里我们主要关注CSC模型的各模块,以及整个模型是如何联合训练的。完整的模型图如下所示:
-
检测模块
其中是词的词嵌入,是一个预训练的编码器,是全连接层用于将句子表示映射为一个二值的序列,其中每一个元素为0和1。这里,作者使用来记录每各字符的错误率: 是错误检测模块的参数集合。
给定一个源序列,检测模块的目标是检测每个字符是否正确。对于该标记问题,作者使用一个简单的二分类任务进行对应。检测模块可以形式化为如下: -
纠正模块
在这部分中,使用由检测模型得出的拼写错误概率作为权重来平衡语义特征(word embedding)和语音特征(pinyin embedding)之间的重要程度。那么,由此对应两种特殊的情况,如果,代表着字符被检测为正确,那么该模型在中仅使用词嵌入;反之,仅使用拼音嵌入。
该模块的目标是依赖检测模块的输出来产生正确的字符。
该模块不仅使用了输入的词嵌入,并使用了拼音的嵌入表示来整合语音信息。具体来说,首先使用外部工具(PyPinyin)来生成拼音序列,并使其通过嵌入层得到拼音嵌入表示。将拼音的嵌入表示和词嵌入表示进行线性组合:
最后,纠正输出由一个全连接层预测:
注:嵌入层,编码器以及纠正网络的参数都由MLM-phonetics初始化。在预训练阶段,MLM-phonetics使用通常可能混淆的对应和对应的拼音中重建正确的字符,因此它可以通过融合嵌入进行转换。 -
联合微调
在该模型中主要包含两个目标,训练检测参数,通过调整实现检测模块和纠正模块的优化平衡。两个模块的损失函数如下:
(5)式的含义是给定当前句子,预测对每一个字符是否需要修正的概率,当预测的对的概率接近于1时,log1=0,不产生loss,反之,根据log(x)的图像,则会有很大的惩罚,这里使用负对数似然将原始的概率进行了转化。同理,在(6)式中,加入了检测模块得出的概率值,因为检测模块的任务定义是简单的二分类,所以的值在0.5-1之间。当该值在0.5附近时,定义为模棱两可的低置信值。此时对于真实标签预测的概率理论上在0-0.5之间,根据log(x)的图像,此时的惩罚值会较大。下面给出log(x)的函数图像便于理解: log(x)
特别的,纠正损失是一个负对数似然并且由检测结果进行权重化,且仅考虑检测结果中大于0.5的部分:
当检测模块给出了一个低置信预测,即接近0.5,则由语义和语音两个嵌入表示等比融合而成。实际上,我们希望检测模块可以提供一个明确的对错信息,这样可以主要由语义或语音其中之一决定。因此,我们将对检测模块的低置信预测进行惩罚:即,当检测模块的置信度较低时,降低,使得模型强制优化。当检测置信较高时,二者同时进行优化。总体的损失函数可以如下表示:
以概率的方式对纠正模块进行权重化,想法很新颖。同时利用了前一模块的输出结果,使得两个模块联合学习。真的强!
网友评论