SIGIR 2021 DCSpell一个代价比较小的预训练文本纠错的模型

2023-10-29

文本纠错概述

文本纠错任务,指的是识别输入文本中出现的拼写错别字及其位置信息,并给出正确的修改建议的任务。文本纠错是自然语言处理领域一项非常重要的任务,在搜索引擎、语音识别、教育等领域有广泛的应用,能够显著地提高各种场景下语义的准确性。比如在搜索引擎场景下,用户经常在搜索时输入错误,利用文本纠错纠正搜索query并提示给用户,可以帮助用户得到更符合要求的搜索结果。对于自动语音识别(Automatic Speech Recognition, ASR)的场景,通过将文本纠错嵌入到对话系统中,可以自动修正语音转文本过程中的错别字。利用ASR模型的结果,针对模型特点训练出的文本纠错模型,可以显著提高语音识别的准确率,提升智能音箱的产品体验。文本纠错可以检测出学生作文中的错别字、标点误用,可以应用于对作文的预批改,减轻语文老师批改作文的工作量。文本纠错还可以辅助出版社进行文本校对工作,辅助光学文字识别(Optical Character Recognition, OCR)纠错,音似、形似错别字的纠正,可用于中文拼音、笔画输入法的错误纠正。

在这里插入图片描述

模型结构

中文错别字的通常是由于发音相同或者相似(比如警踢-警惕)或者字形相近(但护-袒护),也有字音和字形都相似的情况(逆竟-逆境)。由于中文词与词之间没有明确的边界,相比于英文文本纠错,中文纠错更加依赖于上下文的信息。
传统的中文文本纠错方法包括基于错别字词典、语言模型(比如n-gram)等,这种算法多是分成错误检测和错误纠正两阶段,比如Pycorrector。早期的机器学习算法包括基于RNN序列、机器翻译和CNN的算法,比如百度的文本纠错模型。
谷歌推出BERT之后,基于BERT和Transformer的纠错算法去的了很好的效果,比如Soft-Masked BERT,FASpell等。

在这里插入图片描述

当前的模型均是在Bert-base的基础上,通过引入更多的语言学特征提升性能,其中一方面是增加检错能力,另一方面是引入字音、形约束,这两点的目的均在于Bert-base纠错时仅从预训练的语料规律出发,容易在SIGHAN测试集上产生过纠行为,会造成比较高的过纠率(False Alarm Rates,FAR)。在实际应用场景中,错误的字词通常只占整个文本的很少一部分,因此过纠的问题会比较显著。
基于以上调研和现有方法的不足,我们提出了一种两阶段的文本纠错算法:DCSpell。限制Bert-base的纠错能力,并使纠错结果收敛到相近的字音、字形下。DCSpell由两部分组成:检测器(Detector)和纠正器(Corrtor)。
在这里插入图片描述

检测器(Detector)

Detector使用序列标注算法,进行文本错误位置的检测,将输入的文本中错误的字标出来,用[MASK]替代。Detector参考了ELECTRA的预训练方法:replaced token detector。ELECTRA由生成器和判别器组成。ELECTRA的生成器是一个小的MLM模型,随机选取15%的token替换为[MASK],训练生成器生成[MASK]位置的token。ELECTRA的判别器用来判断每个位置的字符是否被生成器替换过。我们先利用原始文本对模型进行replaced token detector预训练。然后利用错误文本针对错误检测进行训练。这种训练方法提升了模型的泛化能力,具有较好的鲁棒性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

纠正器(Corrector)

Corrector用来进行进行文本错误纠正。Corrector利用原始的错误文本和被遮罩后的文本进行MLM任务训练,令Corrector预测词表里面的词在被Detector标记为[MASK]位置的概率。因为BERT模型可以输入双句,我们将被[MASK]的错误文本和原本的错误文本都输入模型中。通过Transformer中的自注意力层,错误文本的字形和字音信息可以辅助对[MASK]位置的预测。得到词表里的词的条件概率后,结合混淆集合进行错误纠正。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实验结果

除了常用的SIGHAN数据集外,我们还利用语音识别生成了错误文本。使用Speech Transformer模型进行语音识别,得到包含错别字的错误文本。我们针对语音识别的场景生成了混淆集。
在对SIGHAN数据集和语音识别数据集上,我们都取得了很好的效果。
SIGHAN数据集的实验结果:
在这里插入图片描述

语音识别数据集的实验结果:
在这里插入图片描述

同时,基于两阶段算法的特点,我们取得了很低的过纠率:

在这里插入图片描述

由于双句输入使得错误文本的字形和字音信息可以辅助对[MASK]位置的预测,以及基于混淆集合的后处理操作,相比于其他一阶段模型,我们的算法更少出现语义通顺但是与原意不符合的过纠情况:
在这里插入图片描述
并且,对于输入的错误文本中出现的未登录词,如果模型的判别器判断出该词是正确的,则不需要对该未登陆词进行纠正了,从而能减少对未登陆词的纠错,降低了由此引起的错误率。进一步地,这种两阶段纠错的方式也可以很容易地和一阶段纠错的方法结合,降低一阶段方法的过纠率。对垂直专业的文本,基于ELECTRA的预训练方案可以用少数文本迅速训练得到鲁棒的纠错模型。

未来的工作

  1. 这是一个两阶段的模型,未来还是希望能够检测和纠正一起做,能够借助视觉的目标检测任务的端到端模型的设计方式来改进现有的模型。
  2. 探索预训练在文本纠错方向的潜力,现有的预训练出来的模型并不天生适合文本纠错,能否在文本纠错领域设计一个更好的预训练方式,来进一步提升模型的识别能力。

论文作者

作者列表:
李晶,创新工场算法工程师
吴高升,创新工场算法工程师
尹大朏,创新工场技术总监
王号召,华中科技大学博士在读
王咏刚,创新工场人工智能工程院院长

参考文献

DCSpell: A Detector-Corrector Framework for Chinese Spelling Error Correction
Jing Li, Gaosheng Wu, Dafei Yin, Haozhao Wang and Yonggang Wang

SIGIR 2021 DCSpell一个代价比较小的预训练文本纠错的模型

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SIGIR 2021 DCSpell一个代价比较小的预训练文本纠错的模型 的相关文章

随机推荐

  • 管道/消息队列/共享内存

    管道通信 PIPE 管道通信方式的中间介质是文件 通常称这种文件为管道文件 两个进程利用管道文件进行通信时 一个进程为写进程 另一个进程为读进程 写进程通过写端 发送端 往管道文件中写入信息 读进程通过读端 接收端 从管道文件中读取信息 两
  • json.dumps()和json.loads()、json.dump()和json.load()的区分

    1 json dumps 和json loads 是json格式处理函数 1 json dumps 函数是将一个Python数据类型列表进行json格式 字符串格式 的编码 可以这么理解 json dumps 函数是将字典转化为字符串 js
  • 生成随机色多种方法

    方法一 颜色随机 0 9 a f function getColor var str var arr 0 1 2 3 4 5 6 7 8 9 a b c d e f for var i 0 i lt 6 i str arr Math flo
  • oracle自定义存储过程:删除表(无论表是否存在)和检测表是否存在

    oracle删除表 如果表不存在 就报错 在跑大型脚本 脚本长且耗时的时候 比较麻烦 一般希望的是点开始然后脚本运行到结束 不可能一直盯着屏幕等弹出提示手工点掉 mysql就很好有drop table if not exist功能 CREA
  • 前端获取北京时间_js获取标准北京时间

    JS如何获取北京时间JS如何获取网络时间 因为本地时间可以修改 所以需要获取网络服务器的要获取服务器时间 一般是在页面提交后 在后台获龋 如果用js获取服务器时间 可以通过ajax方式 Node js中怎么获取北京时间 即构造了一个日期 获
  • dubbo-admin的编译安装

    1 美图 1 dubbo admin源码下载 Github地址 https github com apache incubator dubbo 注意 master和2 6 x分支上是没有dubbo admin模块的 源码clone到本地之后
  • HJ32 密码截取(模块化编程)(重点关注)

    描述 Catcher是MCA国的情报员 他工作时发现敌国会用一些对称的密码进行通信 比如像这些ABBA ABA A 123321 但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解 比如进行下列变化 ABBA gt 12ABBA
  • tftp的配置

    首先配置tftp 配置过程如下 首先需要安装tftpd的相关软件包 sudo apt get install xinetd tftpd tftp 设置xinetd的tftp服务 具体为在 etc xinetd d 目录下创建一个tftp文件
  • Angular使用Promise解决多个异步回调问题

    Promise的基本用法 var p1 new Promise resolve reject gt setTimeout resolve 1000 done p1 then data gt console log data done ang
  • 配置文件jdk和hadoop和scala和spark

    bashrc profile java验证java version export JAVA HOME usr lib jvm java export JRE HOME JAVA HOME jre export CLASSPATH JAVA
  • rsync常见问题及解决办法(亲测)

    错误一 password file must not be other accessible continuing without password file Password rsync客户端路径是否写错 权限设置不对 需要再次输入密码
  • python数据结构与算法篇:排序

    1 冒泡排序 英语 Bubble Sort 它重复地遍历要排序的数列 一次比较两个元素 如果他们的顺序错误就把他们交换过来 遍历数列的工作是重复地进行直到没有再需要交换 也就是说该数列已经排序完成 这个算法的名字由来是因为越小的元素会经由交
  • Linux下压缩文件夹命令

    tar zcvf 打包后生成的文件名全路径 要打包的目录 例子 把 xahot文件夹打包后生成一个 home xahot tar gz的文件 tar zcvf home xahot tar gz xahot zip 压缩方法 压缩当前的文件
  • 【ISO】Windows10系统ISO镜像怎么从微软官网下载?

    要自己安装正版系统 第一步就是要下载到正确的系统镜像 下载的方法很多 可以通过搜索 网盘 网站或者论坛等下载 但那都不是最正宗 最纯粹的的 通过这些渠道下载 偶尔 难免也会遇到些心术不正的人给你夹带点私货 从微软官网下载Windows10系
  • Spring多次request.getReader()解决方法

    Spring多次request getReader 解决方法 ServletRequest的getReader和getInputStream只能调用一次 开发中遇到一个需求 对http请求进行打点 其中有个字段是请求body 本来想的是写一
  • 《面试准备》c/c++ 数组实现循环queue

    代码 include
  • 正则表达式“\\s+“ 匹配任意空白字符

    正则表达式中 s匹配任何空白字符 包括空格 制表符 换页符等等 等价于 f n r t v f gt 匹配一个换页 n gt 匹配一个换行符 r gt 匹配一个回车符 t gt 匹配一个制表符 v gt 匹配一个垂直制表符 而 s 则表示匹
  • 算法笔记——回溯

    算法笔记 回溯 回溯法实际上就是把问题的解空间转化成了图或者树的结构表示 然后使用深度优先搜索策略进行遍历 如果遍历的过程中发现已不满足求解条件时 就 回溯 即回退 尝试别的路径 思想 回溯法从根结点出发 按照深度优先策略遍历解空间树 搜索
  • 纳米智能机器—纳米多功能检测

    摘要 病毒是自然界中分布最广 个体数量最多的生命形式 同时它也是许多致死性疾病的罪魁祸首 历史上各种传染性病毒如流感病毒 天花 埃博拉病毒的肆虐给人类带来了巨大的灾难 动物病毒和植物病毒感染造成畜牧业和农业的巨额经济损失 另一方面 病毒具备
  • SIGIR 2021 DCSpell一个代价比较小的预训练文本纠错的模型

    文本纠错概述 文本纠错任务 指的是识别输入文本中出现的拼写错别字及其位置信息 并给出正确的修改建议的任务 文本纠错是自然语言处理领域一项非常重要的任务 在搜索引擎 语音识别 教育等领域有广泛的应用 能够显著地提高各种场景下语义的准确性 比如