本次赛题聚焦智能文本纠错,针对智媒与文化领域文本的语法、拼写等错误检测与纠正。介绍了数据集情况,初赛、决赛训练集含id、语句及修改后语句,测试集字段有差异。还阐述了基于百度ACL 2021相关策略的模型,包括文件结构、训练、预测、部署步骤及参考文献,模型在SIGHAN测试集有一定效果。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

日常生活中,我们经常会在微信、微博等社交工具、公众号文章、甚至新闻稿件中发现许多拼写、语法、标点等错误;经过初步统计:在微博等新媒体领域中,文本敏感和出错概率在2%左右;在语音识别领域中,出错率最高可达8-10%;而在某保险问答领域中,用户提问出错率在去重后仍高达9%,故本次人工智能应用赛的赛题为智能文本纠错。文本纠错作为自然语言处理最基础的模块,是实现中文语句自动检查、自动纠错的一项重要技术,其目的是提高语言正确性的同时减少人工校验成本,其重要程度不言而喻。
比赛使用MaxMatch (M2)记分器进行评估。M2算法是一种广泛应用的语法纠错评价方法。总的思路是计算源语句和系统输出之间的短语级编辑。具体来说,它将选择与注释器中的黄金编辑重叠最多的系统假设。扩展了M2的记分器,以处理多组可选的金标准注释,在这种情况下,对于当前的句子有多个合理的更正。 假设黄金编辑集是{g1, g2,…, gn},系统编辑集为{e1, e2,…,}。精度、查全率和F0.5定义如下:
1. 模型介绍
中文文本纠错任务是一项NLP基础任务,其输入是一个可能含有语法错误的中文句子,输出是一个正确的中文句子。语法错误类型很多,有多字、少字、错别字等,目前最常见的错误类型是`错别字`。大部分研究工作围绕错别字这一类型进行研究。本文实现了百度在ACL 2021上提出结合拼音特征的Softmask策略的中文错别字纠错的下游任务网络,并提供预训练模型,模型结构如下:
2. 文件目录结构
├── README.md # 文档 ├── download.py # 下载SIGHAN测试集 ├── pinyin_vocab.txt # 拼音字表 ├── predict.py # 预测标准输入的句子 ├── predict_sighan.py # 生成SIGHAN测试集的预测结果 ├── model.py # 纠错模型实现 ├── requirements.txt # 本项目的Python依赖项 ├── run_sighan_predict.sh # 生成训练后模型在SIGHAN测试集的预测结果并输 出预测效果 ├── sighan_evaluate.py # 评估模型在SIGHAN测试集上预测效果 ├── train.py # 训练脚本 └── utils.py # 通用函数工具
pip install -r requirements.txt
# 1. 安装依赖项%cd ~/work/text_correction ! pip install -r requirements.txt
该模型在SIGHAN简体版数据集以及Automatic Corpus Generation生成的中文纠错数据集上进行Finetune训练。PaddleNLP已经集成SIGHAN简体版数据集,以下将介绍如何使用Automatic Corpus Generation生成的中文纠错数据集。
Automatic Corpus Generation生成的中文纠错数据集比较大,下载时间比较长,请耐心等候。运行以下命令完成数据集下载:
python download.py --data_dir ./extra_train_ds/ --url https://github.com/wdimmy/Automatic-Corpus-Generation/raw/master/corpus/train.sgml
训练脚本要求训练集文件内容以句子对形式呈现,这里提供一个转换脚本,将Automatic Corpus Generation提供的XML文件转换成句子对形式的文件,运行以下命令:
python change_sgml_to_txt.py -i extra_train_ds/train.sgml -o extra_train_ds/train.txt
# 3. 下载数据集# Automatic Corpus Generation生成的中文纠错数据集比较大,下载时间比较长,请耐心等候。运行以下命令完成数据集下载:! python download.py --data_dir ./extra_train_ds/ --url https://github.com/wdimmy/Automatic-Corpus-Generation/raw/master/corpus/train.sgml
cd ~/work/text_correction/dataset/
/home/aistudio/work/text_correction/dataset
# 4. 预处理数据集# 训练脚本要求训练集文件内容以句子对形式呈现,这里提供一个转换脚本,将Automatic Corpus Generation提供的XML文件转换成句子对形式的文件,运行以下命令:! python change_sgml_to_txt.py -i extra_train_ds/train.sgml -o extra_train_ds/train1.txt
python train.py --batch_size 32 --logging_steps 100 --epochs 10 --learning_rate 5e-5 --model_name_or_path ernie-1.0 --output_dir ./checkpoints/ --extra_train_ds_dir ./extra_train_ds/ --max_seq_length 192
python -m paddle.distributed.launch --gpus "0,1" train.py --batch_size 32 --logging_steps 100 --epochs 10 --learning_rate 5e-5 --model_name_or_path ernie-1.0 --output_dir ./checkpoints/ --extra_train_ds_dir ./extra_train_ds/ --max_seq_length 192
# (1) 单卡训练%cd ~/work/text_correction ! python train.py --batch_size 32 --logging_steps 100 --epochs 10 --learning_rate 5e-5 --model_name_or_path ernie-1.0 \ --output_dir ./checkpoints/ --extra_train_ds_dir ./extra_train_ds/ --max_seq_length 192# (2) 多卡训练# ! python -m paddle.distributed.launch --gpus "0,1" train.py --batch_size 32 --logging_steps 100 --epochs 10 --learning_rate 5e-5 \# --model_name_or_path ernie-1.0 --output_dir ./checkpoints/ --extra_train_ds_dir ./extra_train_ds/ --max_seq_length 192
SIGHAN 13,SIGHAN 14,SIGHAN 15是目前中文错别字纠错任务常用的benchmark数据。由于SIGHAN官方提供的是繁体字数据集,PaddleNLP将提供简体版本的SIGHAN测试数据。以下运行SIGHAN预测脚本:
sh run_sighan_predict.sh
该脚本会下载SIGHAN数据集,加载checkpoint的模型参数运行模型,输出SIGHAN测试集的预测结果到predict_sighan文件,并输出预测效果。
预测效果
| Metric | SIGHAN 13 | SIGHAN 14 | SIGHAN 15 |
|---|---|---|---|
| Detection F1 | 0.8348 | 0.6534 | 0.7464 |
| Correction F1 | 0.8217 | 0.6302 | 0.7296 |
使用动态图训练结束之后,预测部署需要导出静态图参数,具体做法需要运行模型导出脚本export_model.py。以下是脚本参数介绍以及运行方式:
①参数
②运行方式
python export_model.py --params_path checkpoints/best_model.pdparams --output_path ./infer_model/static_graph_params
其中checkpoints/best_model.pdparams是训练过程中保存的参数文件,请更换为实际得到的训练保存路径。
导出模型之后,可以用于预测部署,predict.py文件提供了python预测部署示例。运行方式:
python predict.py --model_file infer_model/static_graph_params.pdmodel --params_file infer_model/static_graph_params.pdiparams
输出如下:
Source: 遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。Target: 遇到逆境时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。Source: 人生就是如此,经过磨练才能让自己更加拙壮,才能使自己更加乐观。Target: 人生就是如此,经过磨练才能让自己更加茁壮,才能使自己更加乐观。
可以使用PaddleNLP提供的Taskflow工具来对输入的文本进行一键纠错,具体使用方法如下:
from paddlenlp import Taskflow
text_correction = Taskflow("text_correction")
text_correction('遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。')'''
[{'source': '遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。',
'target': '遇到逆境时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。',
'errors': [{'position': 3, 'correction': {'竟': '境'}}]}]
'''text_correction('人生就是如此,经过磨练才能让自己更加拙壮,才能使自己更加乐观。')'''
[{'source': '人生就是如此,经过磨练才能让自己更加拙壮,才能使自己更加乐观。',
'target': '人生就是如此,经过磨练才能让自己更加茁壮,才能使自己更加乐观。',
'errors': [{'position': 18, 'correction': {'拙': '茁'}}]}]
'''以上就是基于PaddleNLP的智能文本纠错的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号