Transformers 文档

CPM

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

CPM

PyTorch TensorFlow Flax

概览

CPM 模型在 CPM: A Large-scale Generative Chinese Pre-trained Language Model 这篇论文中被提出,作者是 Zhengyan Zhang, Xu Han, Hao Zhou, Pei Ke, Yuxian Gu, Deming Ye, Yujia Qin, Yusheng Su, Haozhe Ji, Jian Guan, Fanchao Qi, Xiaozhi Wang, Yanan Zheng, Guoyang Zeng, Huanqi Cao, Shengqi Chen, Daixuan Li, Zhenbo Sun, Zhiyuan Liu, Minlie Huang, Wentao Han, Jie Tang, Juanzi Li, Xiaoyan Zhu, Maosong Sun。

论文摘要如下:

预训练语言模型 (PLM) 已被证明对各种下游 NLP 任务有益。最近,拥有 1750 亿参数和 570GB 训练数据的 GPT-3 因其小样本(甚至零样本)学习能力而备受关注。然而,将 GPT-3 应用于解决中文 NLP 任务仍然具有挑战性,因为 GPT-3 的训练语料库主要是英文,并且参数未公开。在本技术报告中,我们发布了中文预训练语言模型 (CPM),它在大规模中文训练数据上进行了生成式预训练。据我们所知,CPM 拥有 26 亿参数和 100GB 中文训练数据,是最大的中文预训练语言模型,可以促进多项下游中文 NLP 任务,例如对话、文章生成、完形填空和语言理解。广泛的实验表明,CPM 在小样本(甚至零样本)学习设置中的许多 NLP 任务上都取得了出色的性能。

此模型由 canwenxu 贡献。原始实现在这里: https://github.com/TsinghuaAI/CPM-Generate

CPM 的架构与 GPT-2 相同,除了分词方法。有关 API 参考信息,请参阅 GPT-2 文档

CpmTokenizer

class transformers.CpmTokenizer

< >

( vocab_file do_lower_case = False remove_space = True keep_accents = False bos_token = '<s>' eos_token = '</s>' unk_token = '<unk>' sep_token = '<sep>' pad_token = '<pad>' cls_token = '<cls>' mask_token = '<mask>' additional_special_tokens = ['<eop>', '<eod>'] sp_model_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None **kwargs )

使用 Jieba 分词工具运行预分词。它用于 CPM 模型中。

build_inputs_with_special_tokens

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

  • token_ids_0 (List[int]) — 将特殊 token 添加到的 ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选的第二个 ID 列表。

返回

List[int]

带有适当特殊 token 的 输入 ID 列表。

通过连接和添加特殊 token,从序列或序列对构建模型输入,用于序列分类任务。 XLNet 序列具有以下格式

  • 单序列: X <sep> <cls>
  • 序列对: A <sep> B <sep> <cls>

convert_tokens_to_string

< >

( tokens )

将 token 序列(子词的字符串)转换为单个字符串。

create_token_type_ids_from_sequences

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选的第二个 ID 列表。

返回

List[int]

根据给定的序列,返回 token 类型 ID 列表。

创建一个掩码,从传递的两个序列中用于序列对分类任务。 XLNet

序列对掩码具有以下格式

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

如果 token_ids_1None,则此方法仅返回掩码的第一部分(0)。

get_special_tokens_mask

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None already_has_special_tokens: bool = False ) List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选的第二个 ID 列表。
  • already_has_special_tokens (bool, optional, defaults to False) — 指示 token 列表是否已针对模型使用特殊 token 格式化。

返回

List[int]

一个整数列表,范围为 [0, 1]:1 表示特殊 token,0 表示序列 token。

从没有添加特殊 token 的 token 列表中检索序列 ID。当使用 tokenizer 的 prepare_for_model 方法添加特殊 token 时,将调用此方法。

CpmTokenizerFast

class transformers.CpmTokenizerFast

< >

( vocab_file = None tokenizer_file = None do_lower_case = False remove_space = True keep_accents = False bos_token = '<s>' eos_token = '</s>' unk_token = '<unk>' sep_token = '<sep>' pad_token = '<pad>' cls_token = '<cls>' mask_token = '<mask>' additional_special_tokens = ['<eop>', '<eod>'] **kwargs )

使用 Jieba 分词工具运行预分词。它用于 CPM 模型中。

build_inputs_with_special_tokens

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

  • token_ids_0 (List[int]) — 将特殊 token 添加到的 ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选的第二个 ID 列表。

返回

List[int]

带有适当特殊 token 的 输入 ID 列表。

通过连接和添加特殊 token,从序列或序列对构建模型输入,用于序列分类任务。 XLNet 序列具有以下格式

  • 单序列: X <sep> <cls>
  • 序列对: A <sep> B <sep> <cls>

create_token_type_ids_from_sequences

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选的第二个 ID 列表。

返回

List[int]

根据给定的序列,返回 token 类型 ID 列表。

创建一个掩码,从传递的两个序列中用于序列对分类任务。 XLNet

序列对掩码具有以下格式

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

如果 token_ids_1None,则此方法仅返回掩码的第一部分(0)。

< > GitHub 上更新