快速上手UER-py

1.前言

预训练已经成为自然语言处理任务的重要组成部分,为大量自然语言处理任务带来了显著提升。 UER-py(Universal Encoder Representations)是一个用于对通用语料进行预训练并对下游任务进行微调的工具包。UER-py遵循模块化的设计原则。通过模块的组合,用户能迅速精准复现已有的预训练模型,并利用已有的接口进一步开发更多的预训练模型。通过UER-py,我们建立了一个模型仓库,其中包含基于不同语料,编码器和目标任务的预训练模型。用户可以根据具体任务的要求,从中选择合适的预训练模型使用。

2.书评分类(BERT模型)

在书评语料上对模型进行预训练,首先对书评语料进行预处理,我们在UER-py-master目录下运行以下命令:

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

然后下载Google中文预训练模型google_zh_model.bin,并将其放在 models 文件夹中。接着加载Google中文预训练模型,在书评语料上对其进行增量预训练,假设我们有1个GPU的机器,world size 表示一共有几块GPU,gpu_ranks是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 1 --gpu_ranks 0  \	 --batch_size 8
                --total_steps 5000 --save_checkpoint_steps 1000 --embedding word_pos_seg --encoder transformer --mask fully_visible --target bert

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

实验结果表明,谷歌BERT模型在书评分类任务测试集上的准确率为87.3;
在这里插入图片描述
另外我们也可以使用 pretrain.py 的输出book_review_model.bin;
在models文件夹中生成finetuned_model.bin
在这里插入图片描述
然后我们用它进行预测;

python3 inference/run_classifier_infer.py --load_model_path models/finetuned_model.bin --vocab_path models/google_zh_vocab.txt \
                                      --test_path datasets/douban_book_review/test_nolabel.tsv \
                                      --prediction_path datasets/douban_book_review/prediction.tsv --labels_num 2 \
                                      --embedding word_pos_seg --encoder transformer --mask fully_visible

在UER-py-master/datasets/douban_book_review文件夹中生成prediction.csv,–test_path 指定需要预测的文件;
–prediction_path 指定预测结果的文件;
在这里插入图片描述

选择使用遮罩语言模型(MLM)作为目标任务,BERT参数量大,计算较慢。我们希望加速模型运算的同时让模型仍然在下游任务上有好的表现。这里我们选择2层LSTM编码器来替代12层Transformer编码器。 我们首先下载2层LSTM编码器的预训练模型reviews_lstm_lm_model.bin。 然后在下游分类数据集上对其进行微调:

python3 run_classifier.py --pretrained_model_path models/reviews_lstm_lm_model.bin --vocab_path models/google_zh_vocab.txt --config_path models/rnn_config.json \
                      --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 5  --batch_size 8 --learning_rate 1e-3 --embedding word --encoder lstm --pooling mean
python3 inference/run_classifier_infer.py --load_model_path models/finetuned_model.bin --vocab_path models/google_zh_vocab.txt \
                                      --config_path models/rnn_config.json --test_path datasets/douban_book_review/test_nolabel.tsv \
                                      --prediction_path datasets/douban_book_review/prediction.tsv \
                                      --labels_num 2 --embedding word --encoder lstm --pooling mean

我们也可以去掉参数–pretrained_model_path models/reviews_lstm_lm_model.bin,不加载预训练模型,只能得到约81的准确率。
在这里插入图片描述

UER-py还支持更多的预训练模型。
在Chnsenticorp数据集上使用ELMo进行预训练和微调的示例。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值