Paper:https://aclanthology.org/2021.acl-long.464.pdf
Code:无
复旦+平安
动机
据统计,大多数中文拼写错误都属于字音或者字形错误。然后,之前的方法很少利用汉字的字音和字形知识,或者严重依赖外部资源来模拟它们的相似性。
为了利用汉字的字音和字形,本文提出了端到端的训练模型 PHMOSpell。
- 从多模态中获取汉字的字音和字形知识,并将其应用于 CSC
- 使用一种自适应的门控机制,以端到端的方式有效地将多模态信息整合到预训练语言模型中
方法
PHMOSpell 包含三个特征模块和一个自适应来融合多种特征的的门控机制,如下图所示。
给定一个句子,首先提取每个字符的字音特征、字形特征和上下文相关的语义特征。然后通过自适应门控模块整合三个特征。最后,把每个字符的集成表示输入到全连接层中来计算整个词汇表的概率,选择概率最高的字符作为最终的纠正结果。
拼音特征提取
本文使用一个 TTS 模型 Tacotron2 来生成字音表示,第一, CSC 可以从字符之间的真实发音相似性中受益。第二,在本文中,利用循环序列到序列梅尔谱图预测网络 Tacotron2 来帮助对语音表示进行建模,它的位置敏感注意力可以在字符序列和声学序列之间创建有效的时间对齐。
在使用 Tacotron2 来训练 TTS 系统时,首先将字符转换为拼音序列作为音素形式,然后使用编码器进行编码,并使用隐藏表示预测对应的梅尔谱图。使用拼音转录和梅尔谱图共同作为输入来帮助对拼音表示进行建模。然后提取编码器的拼音嵌入层作为本文的拼音特征提取器,为 CSC 生成语音表示。
给定一个中文句子,首先使用 pypinyin 库将其转换为拼音序列,然后使用拼音特征提取器获取拼音序列。
字形特征提取器
数据使用 8106 个中文字形图像,模型使用在 ImageNet 上预训练的 VGG19,对 VGG19 进行微调,使得模型可以从字形图像中学习到字形的特征,之后丢掉最后的分类层,使用 VGG19 的最大池化层的输出作为字形特征。
给定一个中文句子,使用字形特征提取器从 8106 个图像中检索每个字符对应的图像,然后生成每个字符的字形特征。
语义特征提取器
使用预训练模型 BERT 作为语义提取器。
给定一个中文句子,使用语义提取器输出的每个字符的隐藏状态作为语义特征。
自适应门控机制
之前的大多数方法只是使用加法或拼接来融合不同的特征,然而,这些融合策略忽略了特征之间的关系。为了解决这个问题,本文提出了自适应门控机制,可以精细控制特征的融合。
字形特征和字音特征分别经过一个 MLP 和 ReLU 激活函数,然后和语义特征做逐元素相乘得到一个结果:
本文采用所提出的门控机制来控制拼音和字形特征中的信息与语义特征融合多少,并输入到下一个分类器模块。
其中系数
λ
p
+
λ
q
=
1
\lambda_p + \lambda_q = 1
λp+λq=1。最后把字音和字形的联合表示与语义特征相结合。
训练的时候,将最终的表示通过全连接层+softmax做最终分类。
推理
在推理时,为每个字符的校正选择模型给出概率最高的候选者。至于检测任务,通过检查所选候选者是否与输入字符不同来完成。
实验
数据集:SIGHAN 2013、SIGHAN 2014、SIGHAN 2015、基于 OCR 和基于 ASR 的方法自动生成的 271K 训练样本
方法比较
消融研究
PMOSpell (w/ AS) 表示用聚合策略替换自适应门控模块以进行特征融合。
PMOSpell (w/o PE) 表示没有拼音特征提取器的模型。
PMOSpell (w/o GE) 表示没有字形特征提取器的模型。
PMOSpell (w/o PGA) 表示没有拼音、字形特征提取器和自适应门控的模型,普通的 BERT 实现。
λ
\lambda
λ 参数的影响
拼音特征维度的影响
特征可视化
字音特征可视化:发音相似的距离更近,说明模型已经学习到了拼音特征和现实的声学特征之间的对齐。
字形特征可视化:字形相似的距离更近,说明模型学习到了字形的特征
讨论
badcase
- 连续错误:句子中的几个连续字符是错误的。例如句子:”他们有时候,有一点捞到…“ 模型找不到这种错误。
- 诗歌错误:例如句子:”…天将降大任于斯人也,必先苦其心智,劳其筋骨… " 此处的 “心智” 应该是 “心志”,但由于 “心智” 和 “心志” 都是合理的,模型也找不到这种错误