NLP 中文拼写检测纠正论文 C-LLM Learn to CSC Errors Character by Character

拼写纠正系列

NLP 中文拼写检测实现思路

NLP 中文拼写检测纠正算法整理

NLP 英文拼写算法,如果提升 100W 倍的性能?

NLP 中文拼写检测纠正 Paper

java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊!

一个提升英文单词拼写检测性能 1000 倍的算法?

单词拼写纠正-03-leetcode edit-distance 72.力扣编辑距离

NLP 开源项目

nlp-hanzi-similar 汉字相似度

word-checker 中英文拼写检测

pinyin 汉字转拼音

opencc4j 繁简体转换

sensitive-word 敏感词

前言

大家好,我是老马。

下面学习整理一些其他优秀小伙伴的设计、论文和开源实现。

感受

这一篇和我的理念很类似,其实就是汉字的三个部分:音 形 义

字典是学习一个字符如何发音、书写和使用的参考书籍

其实本质上还是类似的。

TODO: 不过目前义(使用)这个部分我做的还比较弱,考虑添加一个关于单个字/词的解释词库。

论文+实现

论文地址: https://arxiv.org/pdf/2406.16536v2

源码地址:https://github.com/ktlktl/c-llm

摘要

中文拼写检查(CSC)旨在检测和纠正句子中的拼写错误。尽管大语言模型(LLMs)展现了强大的能力,并广泛应用于各种任务,但它们在CSC任务上的表现常常不尽如人意。我们发现,LLMs未能满足CSC任务的中文字符级约束,即字符数一致性和语音相似性,这导致了性能瓶颈。进一步分析表明,这个问题源于分词粒度的设置,因为当前的混合字符-词分词方式难以满足这些字符级约束。为了解决这个问题,我们提出了C-LLM,一种基于大语言模型的中文拼写检查方法,能够逐字符学习检查错误。字符级分词使得模型能够学习字符级对齐,有效缓解与字符级约束相关的问题。此外,CSC任务被简化为主要涉及复制和替换的任务。在两个CSC基准数据集上的实验表明,C-LLM比现有方法平均提高了10%的性能。具体来说,它在通用场景下提升了2.1%,在垂直领域场景下有显著的12%的提升,取得了当前的最佳表现。

源代码可以访问 https://github.com/ktlKTL/C-LLM。

1 引言

中文拼写检查(CSC)涉及检测和纠正中文句子中的错误字符,在各类应用中起着重要作用(Gao et al., 2010; Yu and Li, 2014)。尽管大语言模型(LLMs)展现了强大的能力,并日益应用于各种任务(Wang et al., 2023; He and Garner, 2023; Wu et al., 2023a),以往的研究(Li and Shi, 2021)表明,生成模型如LLMs在CSC任务中的表现并不理想。

CSC任务本质上涉及字符级的长度和语音约束。字符级长度约束要求预测句子的字符数与源句子一致。此外,语音约束要求预测字符在语音上与源字符高度相似,因为大约83%的拼写错误与正确字符在语音上相同或相似(Liu et al., 2010)。我们发现,LLMs往往未能满足这些字符级长度和语音相似性的要求,导致CSC任务的表现瓶颈。

以GPT-4为例(Achiam et al., 2023),我们观察到,在少样本提示下,模型生成的句子中有10%没有与源句子匹配字符数。相比之下,BERT风格的模型完全没有这个问题。此外,35%的预测字符与源字符在语音上不相似,且由于非同音字的预测错误约占70%的错误。这些字符长度和语音相似性的问题导致了生成的输出未能满足任务需求,从而导致纠错性能不佳。

我们发现,根本问题在于LLM的分词粒度。当前的混合字符-词分词方式会导致字符到词的映射,这使得LLM难以学习字符级的对齐,通常会生成不符合字符级约束的预测。如图1所示,在混合字符-词分词的情况下,LLM需要推断出多个标记对应单一字符(例如,“胆(bold)”,“大(large)”,“的(of)”->“大 量的(large amount))”),并推断出隐式的字符对齐(例如,“胆(bold)”->“大(large)”)。这些推理过程使得CSC任务变得复杂,因为大多数CSC案例涉及简单的字符复制。例如,正确的字符“量(amount)”是直接从源句子复制过来的。

f1

尽管LLM在各种任务中取得了语义理解的进展,但不清晰的字符对齐仍然会导致错误和过度纠正。因此,建立明确的字符级对齐至关重要。基于这一概念,我们提出了C-LLM,一种基于大语言模型的中文拼写检查方法,它逐字符学习检查错误。我们的动机是进行字符级编码,并建立字符级对齐来训练句子对,从而缓解字符级约束相关问题。如图1所示,该方法确保句子对的标记数保持一致,从而使得LLM更容易学习中文字符之间的语音映射。此外,CSC任务被简化为复制正确字符和替换错误字符的任务,而不涉及复杂的推理。

具体来说,我们构建了字符级分词,确保标记根据单个中文字符进行编码。为了适应新的词汇,我们在大型数据集上进行继续训练。此外,为了使LLM能够学习CSC任务,我们对CSC数据集进行监督微调。在通用数据集CSCD-NS(Hu et al., 2022)和多领域数据集LEMON(Wu et al., 2023b)上的实验表明,C-LLM在通用和垂直领域场景中均超越了现有方法,达到了当前的最佳表现。

本文的贡献可以总结为三个方面:

(1)我们发现混合字符-词分词妨碍了LLM有效理解CSC中的字符级约束。

(2)我们提出了C-LLM,该方法逐字符学习并能够检查错误。

(3)通过在通用和多领域数据集上的测试,我们发现C-LLM取得了当前最佳表现,为未来的错误纠正模型设计提供了见解。

2 相关工作

BERT风格的CSC模型

随着预训练语言模型的兴起,中文拼写检查(CSC)的主流方法转向了BERT风格的模型(Devlin et al., 2019),这些模型将CSC视为序列标注任务。

这些模型将句子中的每个字符映射到其正确的对应字符,并在源句子和参考句子的对上进行微调。

此外,一些研究还集成了语音学和形态学知识,以提高标注过程的效果(Cheng et al., 2020; Guo et al., 2021; Huang et al., 2021; Zhang et al., 2021)。然而,由于参数限制,这些模型在低频和复杂语义场景中的表现不如大语言模型(LLMs)。

自回归CSC模型

与BERT风格的模型可以并行推断每个标记不同,自回归CSC模型是按顺序处理标记的。

以往的研究(Li and Shi, 2021)表明,自回归模型如GPT-2(Radford et al., 2019)在CSC任务上可能表现不佳。

随着LLMs的进步,已有若干研究探讨了它们在文本修正方面的能力。

研究(Li et al., 2023b)发现,尽管ChatGPT知道中文字符的语音,但它无法理解如何发音,这使得语音错误修正变得困难。

其他研究(Fang et al., 2023; Wu et al., 2023a)指出,ChatGPT往往能够生成流畅的修正,但也会引入更多的过度修正。

这些发现与我们的观察一致,强调了提升LLMs在CSC任务中的表现的必要性。

结论

本文表明,现有的大型语言模型(LLMs)未能满足中文拼写纠错任务(CSC)的字符级约束条件,具体表现为字符长度一致性和语音相似性,这严重影响了它们的纠错性能。

我们发现,这一问题的根本原因在于标记化粒度的设置,当前模型将字符和词语混合处理,难以有效满足字符级约束。

为了解决这一问题,我们提出了 C-LLM,该模型建立了中文字符之间的映射关系,使模型能够学习字符之间的纠错关系和语音相似性。

通过这种方法,CSC 任务被简化为字符复制和替换问题。

实验结果表明,C-LLM 在通用基准和多领域基准上都优于以往的方法,并且达到了最先进的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943248.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

监听器listener

文章目录 监听器( listener)对Application内置对象监听的语法和配置对session内置对象监听的语法和配置 监听器( listener) 对象与对象的关系: 继承关联 tomcat一启动创建的顺序:监听器,config,application(全局初始化参数)&am…

LabVIEW数字式气压计自动检定系统

开发了一个基于LabVIEW开发的数字式气压计自动检定系统。在自动化检定PTB220和PTB210系列数字气压计,通过优化硬件组成和软件设计,实现高效率和高准确度的检定工作,有效降低人力成本并提升操作准确性。 项目背景 随着自动气象站的广泛部署&a…

在linux系统中使用jdbc访问sqlite数据库时报错“java.lang.UnsatisfiedLinkError”

1. 异常描述 在linux系统中使用jdbc访问sqlite数据库时出现如下错误提示: 2. 异常分析 可能是当前使用版本的sqlite-jdbc-xxx.jar版本有bug。 3. 异常解决 我是从3.8.9.1版本换到了3.16.1版本就好了。

Java(Sprigboot) 项目调用第三方 WebService 接口实现方式

文章目录 Java(Sprigboot) 项目调用第三方 WebService 接口实现方式WebService 简介业务场景描述WSDL 文档请求地址及方式接口请求/响应报文 代码实现1、接口请求/响应报文 JSON 准备(1)TransData(2)BaseInfo、InputData、OutputD…

基础爬虫案例实战

我们已经学习了多进程、requests、正则表达式的基本用法,但还没有完整地实现过一个爬取案例。这一节,我们就来实现一个完整的网站爬虫,把前面学习的知识点串联起来,同时加深对这些知识点的理解。 准备工作 我们需要先做好如下准备工作。 安…

Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果

目录 八、测试套件TestSuite和测试运行器TestRunner 1、基本概念 2、创建和使用测试套件 3、 自动发现测试用例、创建测试套件、运行测试 4、生成html的测试报告:HTMLTestRunner 1️⃣导入HTMLTestRunner模块 2️⃣运行测试用例并生成html文件 九、unittest…

C++-----线性结构

C线性结构模板 概念:线性结构是一种数据元素之间存在一对一线性关系的数据结构,如数组、链表、栈、队列等。C中的模板可以让我们编写通用的代码,适用于不同的数据类型,而不必为每种数据类型都重复编写相同的代码结构。作用&#…

六大基础深度神经网络之CNN

左侧是传统卷积网络输入的是一列像素点,右侧是卷积神经网络,输入的是具有长宽通道数的原始图像 下图为整体架构。卷积层可以认为提取特征,池化层是压缩特征。全连接层是把图像展平然后计算10个类别的概率值 给出一张图像不同区域的特征不同&a…

AIOps平台的功能对比:如何选择适合的解决方案?

定义与概念 AIOps,即人工智能运维(Artificial Intelligence for IT Operations),是将人工智能技术应用于 IT 运维领域,以实现自动化、智能化的运维管理。它通过整合大数据、机器学习等先进技术,对海量运维数…

pr基础(3)-lumetri

这篇应该是基础的完结篇了,主要记录调色方面的相关知识。 主要的内容是lumetri的使用 Lumetri的翻译其实来源于两个部分的组合。"Lume"这个词源于拉丁语,意为明亮度或光亮度,是Luminance (Luma) 的缩写,强调了光线的强…

【 thefuck 安装与使用】Linux 终端自动纠错工具:一头GitHub上的“草泥马“ - thefuck,妈妈再也不用担心我打错命令行了!

目录 快速安装使用 . 1.简介 2.安装 3.配置 4.补充 官方盗料参考 快速安装使用 快速安装使用,四步即可: #Ubuntu/Debian系统 sudo apt update sudo apt install python3-dev python3-pip sudo pip3 install thefuck #编辑bashrc配置文件 vim ~/.bashrc…

基于pytorch的深度学习基础3——模型创建与nn.Module

三 模型创建与nn.Module 3.1 nn.Module 模型构建两要素: 构建子模块——__init()__拼接子模块——forward() 一个module可以有多个module; 一个module相当于一个运算,都必须实现forward函数; 每一个mod…

智慧农业物联网传感器:开启农业新时代

在当今科技飞速发展的时代,农业领域正经历着一场前所未有的变革,而智慧农业物联网传感器无疑是这场变革中的关键利器。它宛如农业的 “智慧大脑”,悄然渗透到农业生产的各个环节,为传统农业注入了全新的活力,让农业生产…

OpenLayers实现渐变透明填充和光效边界

之前在cesium中做过多边形的填充使用渐变透明的效果,那个时候使用的是着色器,利用距离中心点的距离去写shader函数,距离中心越远颜色透明度越高,那么本文我们在openlayers中来实现这一过程。老规矩还是先来看一下效果: 好接下来开始讲述原理,首先关于边界发光的原理我在O…

低代码开发中 DDD 领域驱动的页面权限控制

在低代码开发的领域中,应用安全与灵活性是两大关键考量因素。领域驱动设计(DDD)作为一种在软件设计领域广泛应用且颇具影响力的方法论,正逐渐在低代码开发的页面权限控制方面展现出其独特的价值与潜力。本文旨在客观地探讨如何借助…

B端UI设计规范是什么?

一、B端UI设计规范是什么? B端UI设计规范是一套针对企业级应用界面设计的全面规则和标准,旨在确保产品界面的一致性、可用性和用户体验。 二、B端UI设计规范要素说明 B端UI设计的基本要素包括设计原则、主题、布局、颜色、字体、图标、按钮和控件、交互…

GitLab 服务变更提醒:中国大陆、澳门和香港用户停止提供服务(GitLab 服务停止)

目录 前言 一. 变更详情 1. 停止服务区域 2. 邮件通知 3. 新的服务提供商 4. 关键日期 5. 行动建议 二. 迁移指南 三. 注意事项 四. 相关推荐 前言 近期,许多位于中国大陆、澳门和香港的 GitLab 用户收到了一封来自 GitLab 官方的重要通知。根据这封邮件…

nginx Rewrite 相关功能

一、Nginx Rewrite 概述 定义 Nginx 的 Rewrite 模块允许对请求的 URI 进行重写操作。它可以基于一定的规则修改请求的 URL 路径,然后将请求定向到新的 URL 地址,这在很多场景下都非常有用,比如实现 URL 美化、网站重构后的 URL 跳转等。主要…

适用于Synology NAS的在线办公套件:ONLYOFFICE安装指南

使用 Synology NAS 上的 ONLYOFFICE 文档,您能在私有云中直接编辑文本文档、电子表格、演示文稿和 PDF,确保工作流程既安全又高效。本指南将分步介绍如何在 Synology 上安装 ONLYOFFICE 文档。 关于 Synology Synology NAS(网络附加存储&…

[按键精灵IOS安卓版][脚本基础知识]按键post基本写法

这一期我们来讲按键post的写法,希望通过本期的学习,实现常见的post提交都能编写。 下面开始讲解: 一、使用的命令:url.httppost 选用这个命令的理由是它的参数比较全。 二、post请求都有哪些参数(可能用到&#xf…