当前位置: 首页 > article >正文

Correcting Chinese Spelling Errors with Phonetic Pre-training(ACL2021)

Correcting Chinese Spelling Errors with Phonetic Pre-training(ACL2021)

一.概述

作者认为中文拼写纠错(CSC)现有的方法要么只使用预训练的语言模型,要么将语音信息作为外部知识。在本文中,我们提出了一种新的端到端CSC模型,利用强大的预训练和微调方法,将语音特征集成到语言模型中。在训练语言模型中,我们用语音特征和与之相似的单词代替了传统的用特殊标记来屏蔽单词的方法。我们进一步提出了一种自适应加权目标,在统一的框架下联合训练错误检测和纠错。

方法首先修改预训练的掩码语言模型(masked language model)的学习任务。我们不是用不加区分的符号“[MASK]”替换字符,而是用拼音或发音相似的字符来屏蔽字符。这使得语言模型能够探索汉字和拼音之间的相似性。然后,我们使用带两个网络的模型对纠错数据进行微调,一个检测网络预测每个单词拼写错误的概率,一个纠错网络通过融合单词嵌入(word embedding)和拼音嵌入(pinyin embedding)的概率作为输入来生成纠正结果。我们在统一的框架下联合优化检测和校正网络。

本文主要贡献如下:

1.提出了一种新的端到端CSC模型,该模型将语音特征纳入语言表示。该模型对共享空间中的汉字和拼音符号进行编码。

2.语音信息的整合极大地促进了CSC。在基准SIGHAN数据集上的实验结果表明,我们的方法显著优于以前最先进的方法。

二.方法概述

本文提出的端到端CSC模型由2个组件组成,检测与校正。检测模块将xw作为输入,然后预测每个字符拼写出错的概率。校正模块联合xw的嵌入embedding和其相应的拼音序列xp作为输入,然后预测正确的序列。文中提出用拼音出错的概率作为权重去融合xw和xp的嵌入embedding。

我们首先通过学习从发音相似的字符和拼音中预测字符来预训练一个掩码语言模型,MLM-phonetics。然后在微调中,我们联合优化检测和校正模块。

1.模型架构

在这里插入图片描述
在这里插入图片描述

3.预训练MLM-phonetics
预训练MLM-phonetics语言模型:集成语音特征;解决在CSC结构中的使用标准mask语言模型的问题。标准mask语言模型任务的输入与预训练的分布相同,而CSC的输入句子与预训练样本不同,存在一定的误差。为了充分利用预训练技术,我们对预训练任务进行了修改。在预训练一个标准的掩码语言模型(MLM-base),通过预测训练模型15%随机选择的字符,这些字符分别以80%、10%和10%的采样率被[MASK] token、随机字符和它们自己替换。 为了避免输入歧义和整合语音特征,我们提出了两种预训练替代方案:混淆汉字(confused-Hanzi)和噪声拼音(noisy-pinyin)。以下进行说明:

在这里插入图片描述

A.[MASK]替换 B.随机汉字替换 C.保持不变 D.混淆汉字(confused-Hanzi)替换 E.噪声拼音(noisy-pinyin)替换 以上,前3个是标准预训练mask语言模型的替换,后2个是本文提出的替换,用于建模字符和拼音token的相似性。在MLM-phonetics的预训练中,我们的数据生成器在训练样本中随机选择20%的token位置。如果选择了第i个token,我们根据经验将其替换为(1)40%的[MASK] token,(2)30%为该token的噪音拼音(noisy-pinyin),以及(3)30%的时间来自其混淆集的混淆汉字(confused-Hanzi)。然后训练MLM-phonetics从替换的句子中预测原始句子。 提出的两个预训练任务可以消除预训练和微调CSC模型之间的输入分歧。混淆汉字替换模拟了检测模块的输入,两种替换共同促进了预训练模型适应融合嵌入(见以上em融合公式)。

4.本方法的新颖性
首先,我们的模型结合了拼音和汉字的嵌入,防止了信息的丢失,更像是人工纠错的过程,用问题词的发音来预测纠错。 其次,我们通过提出新的预训练任务来共享预训练编码器的检测和校正。 第三,提出了一种自适应加权策略,用于联合训练错误检测和纠错。该策略鼓励模型产生清晰的检测结果,使得融合嵌入要么以语义特征为主,要么以语音特征为主,这更接近于预训练任务。


http://www.kler.cn/news/317070.html

相关文章:

  • Python Web 面试题
  • Spring Boot自定义配置项
  • [leetcode刷题]面试经典150题之6轮转数字(简单)
  • k8s上安装prometheus
  • 字母与符号检测系统源码分享
  • ubuntu、linux安装redis(使用tar包的方式)
  • 前端——实现时钟 附带小例子
  • 数据结构:线性表
  • 2024从传统到智能,AI做PPT软件的崛起之路
  • 【文心智能体】 旅游手绘手帐 开发分享 零代码 手绘风景 记录行程和心情 旅游攻略
  • 鹏哥C语言49---第5次作业:选择语句 if 和 switch
  • 脚本注入网页:XSS
  • springboot中的异步任务
  • Matplotlib-数据可视化详解
  • 瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商
  • git show 命令
  • Unity中Rigidbody 刚体组件和Rigidbody类是什么?
  • 【flex-shrink】计算 flex弹性盒子的子元素的宽度大小
  • 【27】C++项目练习
  • 循环中用sleep
  • linux atomic 原子变量操作
  • 【Python报错已解决】AttributeError: ‘WindowsPath‘ object has no attribute ‘rstrip‘
  • 生成式AI:ChatGPT及其在各行业的应用前景
  • git学习报告
  • 深入探索迭代器模式的原理与应用
  • 从零开始写一个建立FAT32文件系统程序
  • MFC - 复杂控件_2
  • 【安装教程】Windows环境下Apache Jena Fuseki的安装与配置
  • qt-C++笔记之作用等同的宏和关键字
  • 模拟电路工程师面试题