UER-py快速上手

模型及数据集

我们首先使用BERT模型和豆瓣书评分类数据集。我们在书评语料上对模型进行预训练,然后在书评分类数据集上对其进行微调。这个过程有三个输入文件:书评语料,书评分类数据集和中文词典。
模型链接:UER-py

书评语料

书评语料是由书评分类数据集去掉标签得到的。我们将一条评论从中间分开,从而形成一个两句话的文档,具体可见corpora文件夹中的book_review_bert.txt
book_review_bert.txt
分类数据集的格式如下:
在这里插入图片描述
词典文件的格式是一行一个单词,我们使用谷歌提供的包含21128个中文字符的词典文件models/google_zh_vocab.txt
我们首先对书评语料进行预处理。预处理阶段需要指定模型的目标任务(–target):

python3 preprocess.py --corpus_path corpora/book_review_bert.txt --vocab_path models/google_zh_vocab.txt --dataset_path dataset.pt \
                      --processes_num 8 --target bert

预处理非常耗时,使用多个进程可以大大加快预处理速度(–processes_num)。
原始文本在预处理之后被转换为pretrain.py的可以接受的输入,dataset.pt。然后下载Google中文预训练模型google_zh_model.bin,并将其放在 models 文件夹中。接着加载Google中文预训练模型,在书评语料上对其进行增量预训练。预训练模型由词向量层,编码层和目标任务层组成。因此要构建预训练模型,我们应明确指定模型的词向量层(–embedding),编码器层(–encoder 和 --mask)和目标任务层(–target)的类型。假设我们有一台带有2个GPU的机器:

python3 pretrain.py --dataset_path dataset.pt --vocab_path models/google_zh_vocab.txt --pretrained_model_path models/google_zh_model.bin \
                    --output_model_path models/book_review_model.bin  --world_size 2 --gpu_ranks 0 1 --batch_size 8 \
                    --total_steps 5000 --save_checkpoint_steps 1000 --embedding word_pos_seg --encoder transformer --mask fully_visible --target bert

(注:当只使用第一块GPU时,world_size 1 gpu_ranks 0。当只使用第二块GPU,在pretrain.py脚本前需要加export CUDA_VISIBLE_DEVICES=1,world_size改为1,gpu_ranks为0)
–mask 指定注意力网络中使用的遮罩类型。BERT使用双向语言模型,句子中的任意一个词可以看到所有词的信息,因此我们使用 fully_visible 遮罩类型。默认情况下,配置文件为 models/bert/base_config.json 。配置文件指定了模型的超参数。 请注意,pretrain.py输出的模型会带有记录训练步数的后缀,这里我们可以删除后缀以方便使用。

mv models/book_review_model.bin-5000 models/book_review_model.bin

然后,我们在下游分类数据集上微调预训练模型,我们可以用 google_zh_model.bin:

python3 run_classifier.py --pretrained_model_path models/google_zh_model.bin --vocab_path models/google_zh_vocab.txt \
                          --train_path datasets/douban_book_review/train.tsv --dev_path datasets/douban_book_review/dev.tsv --test_path datasets/douban_book_review/test.tsv \
                          --epochs_num 3 --batch_size 8 --embedding word_pos_seg --encoder transformer --mask fully_visible

测试结果为:

Test set evaluation.
Confusion matrix:
tensor([[4358,  514
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值