/Unilm

Primary LanguagePython

Unilm

简介

UniLM模型既可以应用于自然语言理解(NLU)任务,又可以应用于自然语言生成(NLG)任务。论文来自微软研究院。

模型虽然强大,但微软并没有开源中文的预训练模型。因此云问本着开源之前,将我们预训练好的中文unilm_base模型进行开源。

模型链接

模型地址 提取码
百度云盘 y2xo

详细介绍

详细介绍见:知乎链接

在CLUE中的部分分类数据集和阅读理解数据集上进行了简单测试,具体效果如下:

模型 AFQMC TNEWS IFLYTEK CMNLI CSL CMRC2018 AVG
bert_base 73.70% 56.58% 60.29% 79.69% 80.36% 71.60% 70.37%
ERNIE_base 73.83% 58.33% 58.96% 80.29% 79.10% 74.70% 70.87%
unilm_base 73.79% 56.27% 60.54% 79.58% 80.80% 73.30% 70.71%

对CLUE中新闻摘要数据,训练了摘要模型,并进行的简单的测试,具体效果如下:

模型 rouge-1 rouge-2 rouge-L
f1 43.98% 32.04% 49.90%
r 41.74% 30.50% 47.35%
p 49.30% 35.85% 56.01%

如何使用该模型进行NLU任务?

  • 可以直接使用BERT代码,只需加载unilm的model、config、vocab即可。

如何使用该模型进行NLG任务?

  • fine-tuning
nohup python3 -u run_seq2seq.py --data_dir /data/unilm/data_file/ --src_file train_data.json --model_type unilm --model_name_or_path /data/unilm/yunwen_unilm/ --output_dir /data/unilm/output_dir/ --max_seq_length 512 --max_position_embeddings 512 --do_train --do_lower_case --train_batch_size 32 --learning_rate 1e-5 --num_train_epochs 3 > log.log 2>&1 &
  • test
python3 -u decode_seq2seq.py --model_type unilm --model_name_or_path /data/unilm/yunwen_unilm/ --model_recover_path /data/unilm/output_dir/model.bin --max_seq_length 512 --input_file /data/unilm/data_file/test.json --output_file /data/unilm/data_file/predict_.json --do_lower_case --batch_size 32 --beam_szie 5 --max_tgt_length 128

注:根据论文,在NLU任务时,type_token_id为[0,1];在NLG任务时,type_token_id为[4,5]

训练环境

  • torch 1.4.0
  • transformers 2.6.0

联系我们

cliu@iyunwen.com

相关链接

http://www.iyunwen.com/