使用GPT2-Chinese进行中文预测生成文章

项目开原地址

想用一个主题生成一篇文章,理论上是可以的,但是对模型的要求高,可能要多生成几次,夸张点说,有点像“给大猩猩足够的时间,它完全能敲出世界上任何一本书的内容”一样,如果只靠自动生成,后期不处理就直接使用的可能性不大,全当学习。
https://github.com/Morizeyao/GPT2-Chinese

安装过程

首先安装python3.7.*,python的库兼容不好,建议还是使用制定版本

 - 在任意磁盘新建一个文件夹,我这里新建的是python-worker
 - 拉取代码
    git clone https://github.com/Morizeyao/GPT2-Chinese.git .
 - 创建虚拟环境,因为python的库兼容性不好,还是在虚拟环境中搞,当前库只在这个项目中有作用
   python -m venv .
 - 激活
   .\scripts\activate
 - 安装依赖
   pip install -r requirements.txt
 - torch 单独安装cpu版
   pip install torch==1.5.1+cpu torchvision==0.6.1+cpu -f https://download.pytorch.org/whl/torch_stable.html
 - 在使用cache/make_vocab.py生成词库的时候会用到
   pip install tensorflow==2.0.1
   pip install keras==2.3.1

安装完成后形成下面的文件结构:
使用GPT2-Chinese进行中文预测生成文章_第1张图片

  • generate.py 与 train.py 分别是生成与训练的脚本。 train_single.py 是train.py的延伸,可以用于一个很大的单独元素列表(如训练一本斗破苍穹书)。
  • eval.py 用于评估生成模型的ppl分值。
  • generate_texts.py 是 generate.py 的延伸,可以以一个列表的起始关键词分别生成若干个句子并输出到文件中。
  • train.json 是训练样本的格式范例,可供参考。
  • cache 文件夹内包含若干BERT词表,make_vocab.py是一个协助在一个train.json语料文件上建立词表的脚本。 vocab.txt 是原始BERT词表, vocab_all.txt额外添加了古文词, vocab_small.txt 是小词表。
  • tokenizations文件夹内是可以选用的三种tokenizer,包括默认的Bert Tokenizer,分词版Bert Tokenizer以及BPE Tokenizer。
  • scripts 内包含了样例训练与生成脚本
  • config文件夹里面包含了模型参数,训练时改变训练的词库,模型参数里的vocab_size要改成对应的数量
  • data 与 dist是自建的文件夹,用于存放原始语料及生成的文本
  • model 是模型目录,下载的pytorch_model 模型与生成的均放在此目录下

注意

以下操作如果乱码请在open函数中加encoding=‘utf8’,如果报错文件不存在请在open函数中的文件打开模式改成r+或者w+;

生成词库

在生成词库之前,一定在data目录里把要训练的原始语料添加好

cd cache
python make_vocab.py 

不传参数默认生成vocab_processed.txt文件,词汇表大小是50000

训练原始语料

直接修改的源文件,没有使用传递参数:
–tokenizer_path 改为 default=‘cache/vocab_processed.txt’ 刚才制作的词库;
–model_config 模型文件可以不改,但是文件中的vocab_size参数一定要和使用的词库大小一致;
其他可以看源文件里面的说明进行适当修改

python train.py --raw --segment 

进行训练

生成文章

训练完毕就可使用训练的模型进行文章生成,如果模型不好,生成的就是随机字,基本没什么可读性

 python ./generate.py  
    --length=500   文本长度
    --nsamples=2   示例个数
    --prefix=''    写个开头,剩下的交给GPT2了
    --model_path model/**   模型路径
    --tokenizer_path cache/vocab_processed.txt  模型词库
    --model_config model/**/config.json  词库配置
    --fast_pattern 
    --save_samples  保存生成的文本,否则控制台直接输出
    --save_samples_path=./dist 文本生成到dist目录

涉及到路径的按自己实际路径填写即可,本着学习自己训练的生成出来的基本没有可读性,我有下载了大神分享的散文模型
https://pan.baidu.com/s/1nbrW5iw34GRhoTin8uU2tQ#list/path=%2F 【fpyu】
使用GPT2-Chinese进行中文预测生成文章_第2张图片
使用GPT2-Chinese进行中文预测生成文章_第3张图片

用这个模型生成的效果不是很理想,主要是学习下。不知道GPT3是什么效果。

你可能感兴趣的:(自然语言处理,python,深度学习,pytorch)