使用GPT2-Chinese自动写文章

GPT2-Chinese 是中文的GPT2训练代码,闲来无事拿来玩玩,别说还真挺有趣 在此记录下安装和使用过程,以便以后遗忘时来此翻阅

首先安装 python3.7

3.5-3.8版本应该都可以,但为尽量减少错误,还是使用了3.7 + pycharm

创建项目目录+git clone

  1. F盘下创建 gpt2chinese文件夹

  2. github.com/Morizeyao/G… 拉取源码

    进入 F:\gpt2chinese,shift+右键,打开 powser shell

    拉取代码
    git clone https://github.com/Morizeyao/GPT2-Chinese.git .
    
    创建虚拟环境
    python -m venv .
    
    激活
    .\scripts\activate
    
    安装依赖
    pip install -r requirements.txt
    
    torch 单独安装cpu版,如果安装提示 cloud not found ,请确认使用的是 python3.5 - 3.8
    pip install torch==1.5.1+cpu torchvision==0.6.1+cpu -f https://download.pytorch.org/whl/torch_stable.html
    
复制代码

pip install 遇到的问题

在这一步遇到了几处错误,以及安装成功后运行中遇到的 get_config 无法使用的错误,均与此处有关。 transformers tensorflow keras 版本必须固定,且 keras和tensorflow版本必须匹配,否则会出现 兼容错误 from tensorflow.python.eager.context import get_config 报错

如果单独安装
pip install transformers==2.1.1 
pip install tensorflow==2.0.1
pip install keras==2.3.1
复制代码

安装完成后,项目结构如下,data和dist目录为自行创建

image.png

各目录用途

  • cache 文件夹内包含若干BERT词表, vocab.txt 是原始BERT词表, vocab_all.txt 额外添加了古文词, vocab_small.txt 是小词表。 make_vocab.py 是一个协助在一个train.json语料文件上建立词表的脚本。

  • config 存放参数配置文件

  • scripts 内包含了样例训练与生成脚本

  • dist 为自行创建,用于存放生成的文本

  • data 为自行创建,用于存放原始语料

  • model 是模型目录,下载的pytorch_model 模型均放在此目录下

  • generate.py 与 train.py 分别是生成与训练的脚本。

  • train_single.py 是 train.py的延伸,可以用于一个很大的单独元素列表(如训练一本斗破苍穹书)。

  • eval.py 用于评估生成模型的ppl分值。

  • generate_texts.py 是 generate.py 的延伸,可以以一个列表的起始关键词分别生成若干个句子并输出到文件中。

  • train.json 是训练样本的格式范例,可供参考。

  • tokenizations 文件夹内是可以选用的三种tokenizer,包括默认的Bert Tokenizer,分词版Bert Tokenizer以及BPE Tokenizer。

下载模型

我使用了3个模型

  1. 通用中文模型: pan.baidu.com/s/16x0hfBCe…

    下载后解压到 项目目录的 model/tongyong 文件夹下,包含3个文件 pytorch_model.bin vocab.txt config.json

  2. 散文模型 pan.baidu.com/s/1nbrW5iw3…

    下载后解压到 项目目录的 model/sanwen 文件夹下,包含3个文件 pytorch_model.bin vocab.txt config.json,如果不存在后2个文件,直接从 models/tongyong 中复制

模型放置如图

image.png

需要注意的问题

  1. 上方提过的版本对应
  2. 所有 txt 文件和config.json 文件保存为 utf-8 编码,否则可能遇到各种编码报错
  3. 如果生成和训练时仍提示 gbk decoder等报错,打开 对应py文件,给 open 方法添加参数 encoding="utf-8"

使用下载的模型生成文章

  1. 先使用散文模型试试,个人比较喜欢这个
    在项目根目录下,激活虚拟环境后
    
    python ./generate.py  
    --length=500   文本长度
    --nsamples=2   示例个数
    --prefix='难道我就这样过我的一生'    写个开头,剩下的交给GPT2了
    --model_path model/sanwen   模型路径
    --tokenizer_path model/sanwen/vocab.txt  模型词库
    --model_config model/sanwen/config.json  词库配置
    --fast_pattern 
    --save_samples  保存生成的文本,否则控制台直接输出
    --save_samples_path=./dist 文本生成到dist目录
复制代码
python ./generate.py --length=500 --nsamples=1 --prefix='难道我就这样孤独一生' --tokenizer_path model/sanwen/vocab.txt    --model_path model/sanwen  --model_config model/sanwen/config.json --fast_pattern --save_samples --save_samples_path=./dist
复制代码

生成的效果

散文模型生成效果

image.png

通用中文模型效果

image.png

使用的开源项目

GPT2-chinese

猜你喜欢

转载自juejin.im/post/7057698554181058568
今日推荐