深度模型使用说明
Install
- 全自动安装:pip install pycorrector
- 半自动安装:
git clone https://github.com/shibing624/pycorrector.git
cd pycorrector
python setup.py install
通过以上两种方法的任何一种完成安装都可以。如果不想安装,可以下载github源码包,安装下面依赖再使用。
安装依赖
- kenlm安装
pip install https://github.com/kpu/kenlm/archive/master.zip
- 其他库包安装
pip install -r requirements.txt
安装依赖
pip install -r requirements-dev.txt
介绍
本项目的初衷之一是比对、共享各种文本纠错方法,抛砖引玉的作用,如果对大家在文本纠错任务上有一点小小的启发就是我莫大的荣幸了。
主要使用了多种深度模型应用于文本纠错任务,分别是前面模型
小节介绍的conv_seq2seq
、seq2seq_attention
、
transformer
、bert
、electra
,各模型方法内置于pycorrector
文件夹下,有README.md
详细指导,各模型可独立运行,相互之间无依赖。
使用方法
各模型均可独立的预处理数据、训练、预测,下面以其中seq2seq_attention
为例:
seq2seq_attention 模型使用示例:
配置
通过修改config.py
。
数据预处理
cd seq2seq_attention
# 数据预处理
python preprocess.py
自动新建文件夹output,在output下生成train.txt
和test.txt
文件,以TAB("\t")间隔错误文本和纠正文本,文本以空格切分词,文件内容示例:
希 望 少 吸 烟 。 希 望 烟 民 们 少 吸 烟 。
以 前 , 包 括 中 国 , 我 国 也 是 。 以 前 , 不 仅 中 国 , 我 国 也 是 。
我 现 在 好 得 多 了 。 我 现 在 好 多 了 。
训练
python train.py
训练过程截图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1l5xopBc-1593252818916)(./docs/git_image/seq2seq_train.png)]
预测
python infer.py
预测输出效果样例:
input: 少先队员因该给老人让坐 output: 少先队员因该给老人让座
input: 少先队员应该给老人让坐 output: 少先队员应该给老人让座
input: 没有解决这个问题, output: 没有解决这个问题,,
input: 由我起开始做。 output: 由我起开始做
input: 由我起开始做 output: 由我开始做
PS:
- 如果训练数据太少(不足万条),深度模型拟合不足,会出现预测结果全为
unk
的情况,解决方法:增大训练样本集,使用下方提供的纠错熟语料(nlpcc2018+hsk,130万对句子)测试。 - 深度模型训练耗时长,有GPU尽量用GPU,加速训练,节省时间。
自定义语言模型
语言模型对于纠错步骤至关重要,当前默认使用的是从千兆中文文本训练的中文语言模型zh_giga.no_cna_cmn.prune01244.klm(2.8G)。
大家可以用中文维基(繁体转简体,pycorrector.utils.text_utils下有此功能)等语料数据训练通用的语言模型,或者也可以用专业领域语料训练更专用的语言模型。更适用的语言模型,对于纠错效果会有比较好的提升。
- kenlm语言模型训练工具的使用,请见博客:http://blog.csdn.net/mingzai624/article/details/79560063
- 附上训练语料<人民日报2014版熟语料>,包括:
1)标准人工切词及词性数据people2014.tar.gz,
2)未切词文本数据people2014_words.txt,
3)kenlm训练字粒度语言模型文件及其二进制文件people2014corpus_chars.arps/klm,
4)kenlm词粒度语言模型文件及其二进制文件people2014corpus_words.arps/klm。
人民日报2014版熟语料,网盘链接:https://pan.baidu.com/s/1971a5XLQsIpL0zL0zxuK2A 密码:uc11。尊重版权,传播请注明出处。
中文纠错数据集
- NLPCC 2018 GEC官方数据集NLPCC2018-GEC,
训练集trainingdata[解压后114.5MB],该数据格式是原始文本,未做切词处理。 - 汉语水平考试(HSK)和lang8原始平行语料HSK+Lang8[190MB],该数据集已经切词,可用作数据扩增
- 以上语料,再加上CGED16、CGED17、CGED18的数据,经过以字切分,繁体转简体,打乱数据顺序的预处理后,生成用于纠错的熟语料(nlpcc2018+hsk),网盘链接:https://pan.baidu.com/s/1BkDru60nQXaDVLRSr7ktfA 密码:m6fg [130万对句子,215MB]