Transformers 文件

CPM

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

CPM

PyTorch TensorFlow Flax

概述

CPM 模型由 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 在論文 CPM: A Large-scale Generative Chinese Pre-trained Language Model 中提出。

論文摘要如下:

預訓練語言模型 (PLM) 已被證明對各種下游自然語言處理 (NLP) 任務有益。最近,擁有 1750 億引數和 570GB 訓練資料的 GPT-3 因其小樣本(甚至零樣本)學習能力而備受關注。然而,將 GPT-3 應用於中文 NLP 任務仍然具有挑戰性,因為 GPT-3 的訓練語料庫主要是英語,並且其引數不公開。在這份技術報告中,我們釋出了中文預訓練語言模型 (CPM),它在超大規模的中文訓練資料上進行了生成式預訓練。據我們所知,擁有 26 億引數和 100GB 中文訓練資料的 CPM 是最大的中文預訓練語言模型,可以促進多個下游中文 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[dict[str, typing.Any]] = None **kwargs )

使用 Jieba 分詞工具進行預分詞。用於 CPM 模型。

build_inputs_with_special_tokens

< >

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

引數

  • token_ids_0 (list[int]) — 將要新增特殊標記的 ID 列表。
  • token_ids_1 (list[int], 可選) — 用於序列對的可選的第二個 ID 列表。

返回

list[int]

帶有適當特殊標記的輸入ID列表。

透過連線和新增特殊標記,從一個序列或一對序列為序列分類任務構建模型輸入。一個 XLNet 序列具有以下格式:

  • 單個序列:X <sep> <cls>
  • 序列對:A <sep> B <sep> <cls>

convert_tokens_to_string

< >

( tokens )

將一系列標記(子詞的字串)轉換為單個字串。

create_token_type_ids_from_sequences

< >

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

引數

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可選) — 用於序列對的可選的第二個 ID 列表。

返回

list[int]

根據給定序列的 token type IDs 列表。

根據傳入的兩個序列建立一個掩碼,用於序列對分類任務。一個 XLNet

如果 token_ids_1None,則此方法僅返回掩碼的第一部分(0s)。

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,則此方法僅返回掩碼的第一部分(0s)。

get_special_tokens_mask

< >

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

引數

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可選) — 用於序列對的可選的第二個 ID 列表。
  • already_has_special_tokens (bool, 可選, 預設為 `False`) — 標記列表是否已經為模型格式化了特殊標記。

返回

list[int]

一個範圍為 [0, 1] 的整數列表:1 表示特殊標記,0 表示序列標記。

從沒有新增特殊標記的標記列表中檢索序列ID。此方法在使用分詞器prepare_for_model方法新增特殊標記時呼叫。

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: list token_ids_1: typing.Optional[list[int]] = None ) list[int]

引數

  • token_ids_0 (list[int]) — 將要新增特殊標記的 ID 列表。
  • token_ids_1 (list[int], 可選) — 用於序列對的可選的第二個 ID 列表。

返回

list[int]

帶有適當特殊標記的輸入ID列表。

透過連線和新增特殊標記,從一個序列或一對序列為序列分類任務構建模型輸入。一個 XLNet 序列具有以下格式:

  • 單個序列:X <sep> <cls>
  • 序列對:A <sep> B <sep> <cls>

create_token_type_ids_from_sequences

< >

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

引數

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可選) — 用於序列對的可選的第二個 ID 列表。

返回

list[int]

根據給定序列的 token type IDs 列表。

根據傳入的兩個序列建立一個掩碼,用於序列對分類任務。一個 XLNet

如果 token_ids_1None,則此方法僅返回掩碼的第一部分(0s)。

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,則此方法僅返回掩碼的第一部分(0s)。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.