PERT基于 BERT 的预训练语言模型

联合创作 · 2023-09-25 23:03

在自然语言处理领域中,预训练语言模型(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.jsonvocab.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个任务上进行了效果测试。

阅读理解

 

文本分类

 

命名实体识别

 

 

文本纠错(乱序)

除了上述任务之外,我们还在文本纠错中的乱序任务上进行了测试,效果如下。

 

 

英文任务

在以下6个任务上进行了效果测试。

english-nlu

 

浏览 4
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报