分享好友 最新动态首页 最新动态分类 切换频道
pycorrector: useful python text correction toolkit
2024-12-25 14:39

pycorrector: 中文文本纠错工具。支持中文音似、形似、语法错误纠正,python3.8开发。

pycorrector: useful python text correction toolkit

pycorrector实现了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、GPT等多种模型的文本纠错,评估各模型的效果。

Guide

  • Features
  • Evaluation
  • Usage
  • Dataset
  • Contact
  • References

本项目重点解决其中的"音似、形字、语法、专名错误"等类型。

[2024/10/14] v1.1.0版本:新增了基于Qwen2.5的中文文本纠错模型,支持多字、少字、错字、词序、语法等错误纠正,发布了shibing624/chinese-text-correction-1.5b和shibing624/chinese-text-correction-7b模型,及其对应的LoRA模型。详见Release-v1.1.0

[2023/11/07] v1.0.0版本:新增了ChatGLM3/LLaMA2等GPT模型用于中文文本纠错,发布了基于ChatGLM3-6B的shibing624/chatglm3-6b-csc-chinese-lora拼写和语法纠错模型;重写了DeepContext、ConvSeq2Seq、T5等模型的实现。详见Release-v1.0.0

  • Kenlm模型:本项目基于Kenlm统计语言模型工具训练了中文NGram语言模型,结合规则方法、混淆集可以纠正中文拼写错误,方法速度快,扩展性强,效果一般
  • DeepContext模型:本项目基于PyTorch实现了用于文本纠错的DeepContext模型,该模型结构参考Stanford University的NLC模型,2014英文纠错比赛得第一名,效果一般
  • Seq2Seq模型:本项目基于PyTorch实现了用于中文文本纠错的ConvSeq2Seq模型,该模型在NLPCC-2018的中文语法纠错比赛中,使用单模型并取得第三名,可以并行训练,模型收敛快,效果一般
  • T5模型:本项目基于PyTorch实现了用于中文文本纠错的T5模型,使用Langboat/mengzi-t5-base的预训练模型finetune中文纠错数据集,模型改造的潜力较大,效果好
  • ERNIE_CSC模型:本项目基于PaddlePaddle实现了用于中文文本纠错的ERNIE_CSC模型,模型在ERNIE-1.0上finetune,模型结构适配了中文拼写纠错任务,效果好
  • MacBERT模型【推荐】:本项目基于PyTorch实现了用于中文文本纠错的MacBERT4CSC模型,模型加入了错误检测和纠正网络,适配中文拼写纠错任务,效果好
  • MuCGECBart模型:本项目基于ModelScope实现了用于文本纠错的Seq2Seq方法的MuCGECBart模型,该模型中文文本纠错效果较好
  • NaSGECBart模型: MuCGECBart的同作者模型,无需modelscope依赖,基于中文母语纠错数据集NaSGEC在Bart模型上微调训练得到,效果好
  • GPT模型:本项目基于PyTorch实现了用于中文文本纠错的ChatGLM/LLaMA模型,模型在中文CSC和语法纠错数据集上finetune,适配中文文本纠错任务,效果很好
  • 延展阅读:中文文本纠错实践和原理解读
  • Official demo:

  • HuggingFace demo:

run example: examples/macbert/gradio_demo.py to see the demo:

评估脚本examples/evaluate_models/evaluate_models.py:

  • 评测集:SIGHAN-2015(sighan2015_test.tsv)、
    EC-LAW(ec_law_test.tsv)、MCSC(mcsc_test.tsv)
  • 评估标准:纠错准召率,采用严格句子粒度(Sentence Level)计算方式,把模型纠正之后的与正确句子完成相同的视为正确,否则为错
  • 评估指标:F1
  • CSC(Chinese Spelling Correction): 拼写纠错模型,表示模型可以处理音似、形似、语法等长度对齐的错误纠正
  • CTC(CHinese Text Correction): 文本纠错模型,表示模型支持拼写、语法等长度对齐的错误纠正,还可以处理多字、少字等长度不对齐的错误纠正
  • GPU:Tesla V100,显存 32 GB
Model Name Model Link Base Model Avg SIGHAN-2015 EC-LAW MCSC GPU QPS Kenlm-CSC shibing624/chinese-kenlm-klm kenlm 0.3409 0.3147 0.3763 0.3317 CPU 9 Mengzi-T5-CSC shibing624/mengzi-t5-base-chinese-correction mengzi-t5-base 0.3984 0.7758 0.3156 0.1039 GPU 214 ERNIE-CSC PaddleNLP/ernie-csc PaddlePaddle/ernie-1.0-base-zh 0.4353 0.8383 0.3357 0.1318 GPU 114 MacBERT-CSC shibing624/macbert4csc-base-chinese hfl/chinese-macbert-base 0.3993 0.8314 0.1610 0.2055 GPU 224 ChatGLM3-6B-CSC shibing624/chatglm3-6b-csc-chinese-lora THUDM/chatglm3-6b 0.4538 0.6572 0.4369 0.2672 GPU 3 Qwen2.5-1.5B-CTC shibing624/chinese-text-correction-1.5b Qwen/Qwen2.5-1.5B-Instruct 0.6802 0.3032 0.7846 0.9529 GPU 6 Qwen2.5-7B-CTC shibing624/chinese-text-correction-7b Qwen/Qwen2.5-7B-Instruct 0.8225 0.4917 0.9798 0.9959 GPU 3

or

通过以上两种方法的任何一种完成安装都可以。如果不想安装依赖包,可以拉docker环境。

  • docker使用

本项目的初衷之一是比对、调研各种中文文本纠错方法,抛砖引玉。

项目实现了kenlm、macbert、seq2seq、 ernie_csc、T5、deepcontext、GPT(Qwen/ChatGLM)等模型应用于文本纠错任务,各模型均可基于已经训练好的纠错模型快速预测,也可使用自有数据训练、预测。

中文拼写纠错

example: examples/kenlm/demo.py

output:

  • 类是kenlm统计模型的纠错方法实现,默认会从路径加载kenlm语言模型文件,如果检测没有该文件,
    则程序会自动联网下载。当然也可以手动下载模型文件(2.8G)并放置于该位置
  • 返回值: 方法返回,{'source': '原句子', 'target': '纠正后的句子', 'errors': [('错误词', '正确词', '错误位置'), ...]},方法返回包含多个的

错误检测

example: examples/kenlm/detect_demo.py

output:

  • 返回值:, ,索引位置以0开始。

成语、专名纠错

example: examples/kenlm/use_custom_proper.py

output:

自定义混淆集

通过加载自定义混淆集,支持用户纠正已知的错误,包括两方面功能:1)【提升准确率】误杀加白;2)【提升召回率】补充召回。

example: examples/kenlm/use_custom_confusion.py

output:

  • 其中的内容格式如下,以空格间隔:

自定义混淆集类,除了上面演示的和类一起使用,还可以和一起使用,也可以独立使用。示例代码 examples/macbert/model_correction_pipeline_demo.py

自定义语言模型

默认提供下载并使用的kenlm语言模型文件是2.8G,内存小的电脑使用程序可能会吃力些。

支持用户加载自己训练的kenlm语言模型,或使用2014版人民日报数据训练的模型,模型小(140M),准确率稍低,模型下载地址:shibing624/chinese-kenlm-klm | people2014corpus_chars.klm(密码o5e9)。

example:examples/kenlm/load_custom_language_model.py

英文拼写纠错

支持英文单词级别的拼写错误纠正。

example:examples/kenlm/en_correct_demo.py

output:

中文简繁互换

支持中文繁体到简体的转换,和简体到繁体的转换。

example:examples/kenlm/traditional_simplified_chinese_demo.py

output:

命令行模式

支持kenlm方法的批量文本纠错

case:

  • 输入文件:;输出文件:;关闭字粒度纠错;打印详细纠错信息;纠错结果以间隔

基于MacBERT改变网络结构的中文拼写纠错模型,模型已经开源在HuggingFace Models:

模型网络结构:

  • 本项目是 MacBERT 改变网络结构的中文文本纠错模型,可支持 BERT 类模型为 backbone
  • 在原生 BERT 模型上进行了魔改,追加了一个全连接层作为错误检测即 detection ,
    MacBERT4CSC 训练时用 detection 层和 correction 层的 loss 加权得到最终的 loss,预测时用 BERT MLM 的 correction 权重即可

详细教程参考examples/macbert/README.md

pycorrector快速预测

example:examples/macbert/demo.py

output:

transformers快速预测

见examples/macbert/README.md

基于T5的中文拼写纠错模型,模型训练详细教程参考examples/t5/README.md

pycorrector快速预测

example:examples/t5/demo.py

output:

基于ChatGLM3、Qwen2.5等模型微调训练纠错模型,训练方法见examples/gpt/README.md

pycorrector快速预测

example: examples/gpt/demo.py

output:

pycorrector快速预测

example:examples/ernie_csc/demo.py

output:

基于SIGHAN+Wang271K中文纠错数据集训练的Bart4CSC模型,已经release到HuggingFace Models:

output:

如果需要训练Bart模型,请参考

模型在第一次运行时,会自动下载到"~/.cache/modelscope/hub/"子目录。
注意该模型在python=3.8.19环境下通过测试,其它依赖包版本可能会有问题。

安装依赖

使用示例

output:

数据集 语料 下载链接 压缩包大小 SIGHAN+Wang271K(27万条) 百度网盘(密码01b9)
shibing624/CSC 106M SIGHAN13 14 15 官方csc.html 339K Wang271K Automatic-Corpus-Generation dimmywang提供 93M 人民日报2014版 飞书(密码cHcu) 383M NLPCC2018-GEC 官方trainingdata 114M nlpcc2018+hsk+CGED 百度网盘(密码m6fg)
飞书(密码gl9y) 215M HSK+Lang8 百度网盘(密码n31j)
飞书(密码Q9LH) 81M Chinese Text Correction(CTC) 中文纠错汇总数据集(天池) - NLPCC 2023 Sharedtask1 Task 1: Chinese Grammatical Error Correction(Training Set) 125M 中文真实场景纠错数据 shibing624/chinese_text_correction 10M

说明:

  • SIGHAN+Wang271K中文纠错数据集(27万条),是通过原始SIGHAN13、14、15年数据集和Wang271K数据集格式转化后得到,json格式,带错误字符位置信息,SIGHAN为test.json,
    macbert4csc模型训练可以直接用该数据集复现paper准召结果,详见pycorrector/macbert/README.md。
  • NLPCC 2018 GEC官方数据集NLPCC2018-GEC,
    训练集trainingdata[解压后114.5MB],该数据格式是原始文本,未做切词处理。
  • 汉语水平考试(HSK)和lang8原始平行语料[HSK+Lang8]百度网盘(密码n31j),该数据集已经切词,可用作数据扩增。
  • NLPCC 2018 + HSK + CGED16、17、18的数据,经过以字切分,繁体转简体,打乱数据顺序的预处理后,生成用于纠错的熟语料(nlpcc2018+hsk)
    ,百度网盘(密码:m6fg) [130万对句子,215MB]

SIGHAN+Wang271K中文纠错数据集,数据格式:

字段解释:

  • id:唯一标识符,无意义
  • original_text: 原始错误文本
  • wrong_ids: 错误字的位置,从0开始
  • correct_text: 纠正后的文本

自有数据集

可以使用自己数据集训练纠错模型,把自己数据集标注好,保存为跟训练样本集一样的json格式,然后加载数据训练模型即可。

  1. 已有大量业务相关错误样本,主要标注错误位置(wrong_ids)和纠错后的句子(correct_text)
  2. 没有现成的错误样本,可以写脚本生成错误样本(original_text),根据音似、形似等特征把正确句子的指定位置(wrong_ids)字符改为错字,附上
    第三方同音字生成脚本同音词替换

什么是语言模型?-wiki

语言模型对于纠错步骤至关重要,当前默认使用的是从千兆中文文本训练的中文语言模型zh_giga.no_cna_cmn.prune01244.klm(2.8G),
提供人民日报2014版语料训练得到的轻量版语言模型people2014corpus_chars.klm(密码o5e9)。

APA:

BibTeX:

pycorrector 的授权协议为 Apache License 2.0,可免费用做商业用途。请在产品说明中附加pycorrector的链接和授权协议。

项目代码还很粗糙,如果大家对代码有所改进,欢迎提交回本项目,在提交之前,注意以下两点:

  • 在添加相应的单元测试
  • 使用来运行所有单元测试,确保所有单测都是通过的
最新文章
10款免费的WordPress企业模板
不久前有童鞋反应WordPress啦介绍的企业模板比较少,今天就来个免费企业模板大放送吧。1. NotepadNotepad是一款简单清爽的模板,适用于展示产品、推广品牌。演示下载2. Colourise色彩和图形的潮流搭配。超大的header图片,放上企业名称或口
ankw智能锁全市各售后网点服务中心(故障报修) - 行业 - 百科知识-蓝心网
ankw智能锁售后24小时维修服务热线:400-658-8618。ankw智能锁全市各区售后服务点热线号码。☎:400-658-8618ankw智能锁售后服务,秉承“诚信为本、客户至上”的服务态度和“以客户为中心”的服务指导思想,不仅真诚地为用户提供先进、高质
HUAWEI nova Flip
以上页面中的产品图片、视频及屏幕内容仅作示意,实物产品效果(包括但不限于外观、颜色、尺寸)和屏幕显示内容(包括但不限于背景、UI、配图、视频)可能略有差异,请以实物为准。以上页面中的数据为理论值,均来自华为内部实验室,于特定
17c.c-起草免费平台能为你节省时间和成本,如何利用这一免费文案创作工具?
17c.c-起草免费是一项新兴的网络服务,旨在为用户提供方便快捷的文案写作支持。随着数字化信息的快速发展,许多人都面临着需要起草各类文案的需求,从而催生了这一平台的出现。尤其对于创业者和中小企业来说,能够在短时间内快速完成文案撰
ide硬盘识别不出来怎么办
如果ide硬盘识别不出来,这可能是由多种原因引起的,可以通过检查连接、检查电源、尝试不同的端口、确认跳线设置以及更新驱动程序等方式来解决。答:检查连接、检查电源、尝试不同的端口等方式。1、检查连接,确认ide硬盘的电源线和数据线
2018年最新赞片CMS8.0 zanpiancms v8.0 feifeicms8.0飞飞商业版8.0
赞片CMS特点:赞片CMS V8基于ThinkPHP5和Bootstrap+AdminLTE+EasyWeChat进行开发的影视导航系统后端主要特性:基于Auth验证的权限管理系统基于AdminLTE二次开发基于Bootstrap开发,后端自适应手机、平板、PC基于RequireJS进行JS板块管理,按
GPT4.0:开启智能化时代的终极技术
GPT4.0:开启智能化时代的终极技术第一段:引言GPT4.0是一个革命性的人工智能技术,它以它强大的自然语言处理和学习能力,为人们带来了一个崭新的智能化时代。它不仅仅是一个自动写作工具,而是一种能够通过理解和生成自然语言的AI系统。GP
12月14日新澳天天免费资料大全:每日一读,知识无界
h2澳门资讯盛宴:“12月14日新澳天天免费资料大全”/h2p在繁忙的工作和学习生活中,我们总是在寻找一种轻松获取知识的方式。“12月14日新澳天天免费资料大全:每日一读,知识无界”是一份精心整理的澳门政策文件合辑,致力于为你带来便捷的
2023考研预报名流程
一、登录中国研究生的招生信息网站往届生报名可以登录中国研究生的招生信息网站,点击系统报名入口,进入登录界面。二、实名注册往届生报名要实名注册,记住注册的用户名和密码,查询报名号的唯一方法是注册用户直接与报名号对应。三、选择
相关文章
推荐文章
发表评论
0评