PERT基于 BERT 的预训练语言模型
在自然语言处理领域中,预训练语言模型(Pre-trained Language Models,PLMs)已成为非常重要的基础技术。在近两年,哈工大讯飞联合实验室发布了多种中文预训练模型资源以及相关配套工具。作为相关工作的延续,在本项目中,我们提出了一种基于乱序语言模型的预训练模型(PERT),在不引入掩码标记[MASK]的情况下自监督地学习文本语义信息。PERT在部分中英文NLU任务上获得性能提升,但也在部分任务上效果较差,请酌情使用。目前提供了中文和英文的PERT模型,包含两种模型大小(base、large)。
原版下载地址
这里主要提供TensorFlow 1.15版本的模型权重。如需PyTorch或者TensorFlow2版本的模型,请看下一小节。
开源版本仅包含Transformer部分的权重,可直接用于下游任务精调,或者其他预训练模型二次预训练的初始权重,更多说明见FAQ。
-
PERT-large
:24-layer, 1024-hidden, 16-heads, 330M parameters -
PERT-base
12-layer, 768-hidden, 12-heads, 110M parameters
模型简称 | 语种 | 语料 | Google下载 | 百度盘下载 |
---|---|---|---|---|
Chinese-PERT-large | 中文 | EXT数据[1] | TensorFlow | TensorFlow(密码:e9hs) |
Chinese-PERT-base | 中文 | EXT数据[1] | TensorFlow | TensorFlow(密码:rcsw) |
English-PERT-large (uncased) | 英文 | WikiBooks[2] | TensorFlow | TensorFlow(密码:wxwi) |
English-PERT-base (uncased) | 英文 | WikiBooks[2] | TensorFlow | TensorFlow(密码:8jgq) |
[1] EXT数据包括:中文维基百科,其他百科、新闻、问答等数据,总词数达5.4B,约占用20G磁盘空间,与MacBERT相同。
[2] Wikipedia + BookCorpus
以TensorFlow版Chinese-PERT-base
为例,下载完毕后对zip文件进行解压得到:
chinese_pert_base_L-12_H-768_A-12.zip
|- pert_model.ckpt # 模型权重
|- pert_model.meta # 模型meta信息
|- pert_model.index # 模型index信息
|- pert_config.json # 模型参数
|- vocab.txt # 词表(与谷歌原版一致)
其中bert_config.json
和vocab.txt
与谷歌原版BERT-base, Chinese
完全一致(英文版与BERT-uncased版本一致)。
PyTorch以及TensorFlow 2版本
通过🤗transformers模型库可以下载TensorFlow (v2)和PyTorch版本模型。
下载方法:点击任意需要下载的模型 → 选择"Files and versions"选项卡 → 下载对应的模型文件。
模型简称 | 模型文件大小 | transformers模型库地址 |
---|---|---|
Chinese-PERT-large | 1.2G | https://huggingface.co/hfl/chinese-pert-large |
Chinese-PERT-base | 0.4G | https://huggingface.co/hfl/chinese-pert-base |
Chinese-PERT-large-MRC | 1.2G | https://huggingface.co/hfl/chinese-pert-large-mrc |
Chinese-PERT-base-MRC | 0.4G | https://huggingface.co/hfl/chinese-pert-base-mrc |
English-PERT-large | 1.2G | https://huggingface.co/hfl/english-pert-large |
English-PERT-base | 0.4G | https://huggingface.co/hfl/english-pert-base |
快速加载
由于PERT主体部分仍然是BERT结构,用户可以使用transformers库轻松调用PERT模型。
注意:本目录中的所有模型均使用BertTokenizer以及BertModel加载(MRC模型使用BertForQuestionAnswering)。
from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained("MODEL_NAME") model = BertModel.from_pretrained("MODEL_NAME")
其中MODEL_NAME
对应列表如下:
模型名 | MODEL_NAME |
---|---|
Chinese-PERT-large | hfl/chinese-pert-large |
Chinese-PERT-base | hfl/chinese-pert-base |
Chinese-PERT-large-MRC | hfl/chinese-pert-large-mrc |
Chinese-PERT-base-MRC | hfl/chinese-pert-base-mrc |
English-PERT-large | hfl/english-pert-large |
English-PERT-base | hfl/english-pert-base |
基线系统效果
以下仅列举部分实验结果。详细结果和分析见论文。实验结果表格中,括号外为最大值,括号内为平均值。
中文任务
在以下10个任务上进行了效果测试。
- 抽取式阅读理解(2):CMRC 2018(简体中文)、DRCD(繁体中文)
- 文本分类(6):
- 命名实体识别(2):MSRA-NER、People's Daily(人民日报)
阅读理解
文本分类
命名实体识别
文本纠错(乱序)
除了上述任务之外,我们还在文本纠错中的乱序任务上进行了测试,效果如下。
英文任务
在以下6个任务上进行了效果测试。
- 抽取式阅读理解(2):SQuAD 1.1、SQuAD 2.0
- GLUE子任务(4):MNLI、SST-2、CoLA、MRPC