readme: ---
  language:
  - ja
  tags:
  - t5
  - text2text-generation
  - seq2seq
  license: cc-by-sa-4.0
  datasets:
  - wikipedia
  - oscar
  - cc100
  ---
  
  # 日本語T5 Prefix Language Model
  
  This is a T5 (Text-to-Text Transfer Transformer) Adapted Language Model fine-tuned on Japanese corpus.
  
  このモデルは日本語T5事前学習済みモデル（[sonoisa/t5-base-japanese-v1.1](https://huggingface.co/sonoisa/t5-base-japanese-v1.1)）を初期値にして、[Adapted Language Modelタスク](https://github.com/google-research/text-to-text-transfer-transformer/blob/main/released_checkpoints.md#lm-adapted-t511lm100k)（与えられたトークン列の続きのトークン列を予測するタスク）用に100Kステップ追加学習したものです。
  
  追加学習には次の日本語コーパス（約100GB）を用いました。 
  
  * [Wikipedia](https://ja.wikipedia.org)の日本語ダンプデータ (2022年6月27日時点のもの)
  * [OSCAR](https://oscar-corpus.com)の日本語コーパス
  * [CC-100](http://data.statmt.org/cc-100/)の日本語コーパス
  
  
  # サンプルコード
  
  ```python
  import torch
  from torch.utils.data import Dataset, DataLoader
  from transformers import T5ForConditionalGeneration, T5Tokenizer
  import textwrap
  
  tokenizer = T5Tokenizer.from_pretrained("sonoisa/t5-prefixlm-base-japanese", is_fast=False)
  trained_model = T5ForConditionalGeneration.from_pretrained("sonoisa/t5-prefixlm-base-japanese")
  
  # GPUの利用有無
  USE_GPU = torch.cuda.is_available()
  if USE_GPU:
      trained_model.cuda()
  
  # 推論モード設定
  trained_model.eval()
  
  # 前処理とトークナイズを行う
  inputs = [normalize_text("深層学習（ディープラーニング）とは、")]
  batch = tokenizer.batch_encode_plus(
      inputs, max_length=1024, truncation=True, 
      padding="longest", return_tensors="pt")
  
  input_ids = batch['input_ids']
  input_mask = batch['attention_mask']
  if USE_GPU:
      input_ids = input_ids.cuda()
      input_mask = input_mask.cuda()
  
  # 生成処理を行う
  outputs = trained_model.generate(
      input_ids=input_ids, attention_mask=input_mask, 
      max_length=256,
      temperature=1.0,  # 生成にランダム性を入れる温度パラメータ
      num_beams=10,  # ビームサーチの探索幅
      diversity_penalty=1.0,  # 生成結果の多様性を生み出すためのペナルティパラメータ
      num_beam_groups=10,  # ビームサーチのグループ
      num_return_sequences=10,  # 生成する文の数
      repetition_penalty=2.0,   # 同じ文の繰り返し（モード崩壊）へのペナルティ
  )
  
  # 生成されたトークン列を文字列に変換する
  generated_bodies = [tokenizer.decode(ids, skip_special_tokens=True, 
                                       clean_up_tokenization_spaces=False) 
                      for ids in outputs]
  
  # 生成された文章を表示する
  for i, body in enumerate(generated_bodies):
      print("\n".join(textwrap.wrap(f"{i+1:2}. {body}")))
  
  ```
  
  実行結果:
  ```
   1. 様々なデータから、そのデータを抽出し、解析する技術です。深層学習とは、ディープラーニングの手法の一つです。ディープラーニングは、コン
  ピュータが行う処理を機械学習で実現する技術です。ディープラーニングは、コンピュータが行う処理を機械学習で実現する技術です。ディープラーニング
  は、コンピュータが行う処理を機械学習で実現する技術です。ディープラーニングは、コンピュータが行う処理を機械学習で実現する技術です。
  
   2. 様々なデータから、そのデータを抽出し、解析する技術です。深層学習とは、ディープラーニングの手法の一つです。ディープラーニングは、コン
  ピュータが行う処理を機械学習で実現する技術です。
  
   3. ディープラーニングの手法のひとつで、人間の脳をモデル化し、そのデータを解析する手法である。深層学習は、コンピュータが処理するデータの
  量や質を予測し、それを機械学習に応用するものである。この手法は、人工知能(ai)の分野において広く用いられている。
  
   4. 深層学習(deep learning)の手法の一つ。ディープラーニングとは、人間の脳に蓄積されたデータを解析し、そのデータから得られ
  た情報を分析して、それを機械学習や人工知能などの機械学習に応用する手法である。ディープラーニングは、コンピュータが処理するデータの量と質を測
  定し、その結果を機械学習で表現する手法である。ディープラーニングは、人間が行う作業を機械学習で表現する手法である。ディープラーニングは、人間
  にとって最も身近な技術であり、多くの人が利用している。ディープラーニングは、コンピューターの処理能力を向上させるために開発された。
  
   5. 人間の脳の深層学習を応用した人工知能(ai)である。ディープラーニングは、コンピュータが処理するデータを解析し、そのデータから得られ
  た結果を分析して、それを機械学習やディープラーニングに変換して学習するものである。ディープラーニングは、人間が行う作業を機械学習で再現するこ
  とを可能にする。
  
   6. 人間の脳の深層学習を応用した人工知能(ai)である。ディープラーニングは、コンピュータが処理するデータを解析し、そのデータから得られ
  た結果を分析して、それを機械学習やディープラーニングに変換して学習するものである。ディープラーニングは、人間が行う作業を機械学習で再現するこ
  とを可能にする。ディープラーニングは、人間と機械との対話を通じて、人間の脳の仕組みを理解することができる。
  
   7. 深層学習によって、人間の脳の神経細胞や神経細胞を活性化し、その働きを解明する手法です。ディープラーニングは、コンピュータが処理するデ
  ータの量と質を測定することで、人間が行う作業の効率化を図る手法です。また、機械学習では、人間に与えられたデータを解析して、それを機械学習で処
  理する技術です。このため、機械学習では、機械学習のアルゴリズムを組み合わせることで、より精度の高い処理を実現します。さらに、機械学習では、機
  械学習のアルゴリズムを組み合わせることで、より精度の高い処理を実現します。
  
   8. 学習したデータを解析し、そのデータの分析を行う手法。ディープラーニングは、コンピュータが人間の脳に与える影響を予測する技術である。深
  層学習は、人間が脳に与える影響を予測する技術である。ディープラーニングは、人間と機械との相互作用によって行われる。例えば、ロボットが物体を分
  解して、それを検出したり、物体を分解して、その物体を別の物体として認識したりする。また、物体を分解して、その物体を別の物体として認識する。こ
  のプロセスは、コンピューターが行う処理よりもはるかに高速である。ディープラーニングは、コンピュータが行う処理よりも速く、より効率的な処理が可
  能である。
  
   9. 深層学習によって、人間の脳の神経細胞や神経細胞を活性化し、その働きを解明する手法です。ディープラーニングは、コンピュータが処理するデ
  ータの量と質を測定することで、人間が行う作業の効率化を図る手法です。
  
  10. 学習したデータを解析し、そのデータの分析を行う手法。ディープラーニングは、コンピュータが人間の脳に与える影響を予測する技術である。深
  層学習は、人間が脳に与える影響を予測する技術である。ディープラーニングは、人間と機械との相互作用によって行われる。例えば、ロボットが物体を分
  解して、それを検出したり、物体を分解して、その物体を別の物体として認識したりする。また、物体を分解して、その物体を別の物体として認識する。こ
  のプロセスは、コンピューターが行う処理よりもはるかに高速である。
  ```
  
  # 免責事項
  
  本モデルの作者は本モデルを作成するにあたって、その内容、機能等について細心の注意を払っておりますが、モデルの出力が正確であるかどうか、安全なものであるか等について保証をするものではなく、何らの責任を負うものではありません。本モデルの利用により、万一、利用者に何らかの不都合や損害が発生したとしても、モデルやデータセットの作者や作者の所属組織は何らの責任を負うものではありません。利用者には本モデルやデータセットの作者や所属組織が責任を負わないことを明確にする義務があります。
  
  
  # ライセンス
  
  [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.ja)
  
  [Common Crawlの利用規約](http://commoncrawl.org/terms-of-use/)も守るようご注意ください。
  
  
  # 謝辞
  
  本モデルはオージス総研 鵜野和也さんによる記事「[はじめての自然言語処理 第21回 T5X と Prompt Tuning の検証](https://www.ogis-ri.co.jp/otc/hiroba/technical/similar-document-search/part21.html)」の内容をもとに作成しました。素晴らしい記事を公開していただけたことに大変感謝いたします。
  