readme: ---
  language: zh
  widget:
  - text: "今天是下雨天"
  - text: "走向森林"
  ---
  
  <h1 align="center">
  CPM
  </h1>
  
  
  CPM(Chinese Pre-Trained Language Models), which has 2.6B parameters, made by the research team of Beijing Zhiyuan Institute of artificial intelligence and Tsinghua University @TsinghuaAI.
  
  [repo: CPM-Generate](https://github.com/TsinghuaAI/CPM-Generate)
  
  The One Thing You Need to Know is this model is not uploaded by official, the conver script is [here](https://github.com/mymusise/CPM-TF2Transformer/blob/main/transfor_CMP.ipynb)
  
  # Overview
  
  - **Language model**: CPM
  - **Model size**: 2.6B parameters
  - **Language**: Chinese
  
  # How to use
  
  How to use this model directly from the 🤗/transformers library:
  
  ```python
  from transformers import XLNetTokenizer, TFGPT2LMHeadModel
  import jieba
  
  # add spicel process 
  class XLNetTokenizer(XLNetTokenizer):
      translator = str.maketrans(" \n", "\u2582\u2583")
  
      def _tokenize(self, text, *args, **kwargs):
          text = [x.translate(self.translator) for x in jieba.cut(text, cut_all=False)]
          text = " ".join(text)
          return super()._tokenize(text, *args, **kwargs)
  
      def _decode(self, *args, **kwargs):
          text = super()._decode(*args, **kwargs)
          text = text.replace(' ', '').replace('\u2582', ' ').replace('\u2583', '\n')
          return text
  
  
  tokenizer = XLNetTokenizer.from_pretrained('mymusise/CPM-GPT2')
  model = TFGPT2LMHeadModel.from_pretrained("mymusise/CPM-GPT2")
  ```
  
  How to generate text
  
  ```python
  from transformers import TextGenerationPipeline
  
  
  text_generater = TextGenerationPipeline(model, tokenizer)
  
  texts = [
      '今天天气不错',
      '天下武功, 唯快不',
      """
      我们在火星上发现了大量的神奇物种。有神奇的海星兽，身上是粉色的，有5条腿；有胆小的猫猫兽，橘色，有4条腿；有令人恐惧的蜈蚣兽，全身漆黑，36条腿；有纯洁的天使兽，全身洁白无瑕，有3条腿；有贪吃的汪汪兽，银色的毛发，有5条腿；有蛋蛋兽，紫色，8条腿。
  
      请根据上文，列出一个表格，包含物种名、颜色、腿数量。
      |物种名|颜色|腿数量|
      |亚古兽|金黄|2|
      |海星兽|粉色|5|
      |猫猫兽|橘色|4|
      |蜈蚣兽|漆黑|36|
      """
  ]
  
  for text in texts:
      token_len = len(tokenizer._tokenize(text))
      print(text_generater(text, max_length=token_len + 15, top_k=1, use_cache=True, prefix='')[0]['generated_text'])
      print(text_generater(text, max_length=token_len + 15, do_sample=True, top_k=5)[0]['generated_text'])
  ```
  
  ![avatar](https://github.com/mymusise/CPM-TF2Transformer/raw/main/example-cpm.png)
  
  