「どうせまともな日本語の文章なんてできるわけがない」
このように思っているなら、自分の目で確認してみてください。
Python初心者でも、試せるようにわかりやすく説明しています。
本記事の内容
- 日本語文章の自動生成に必要なモノ
- 日本語GPT-2モデル
- Transformers
- SentencePiece
- 日本語GPT-2モデルの動作確認
それでは、上記に沿って解説していきます。
日本語文章の自動生成に必要なモノ
「個人が無料で日本語文章の自動生成ができる」
これを実現するために必要なモノは、以下。
- 日本語GPT-2モデル
- Transformers
- SentencePiece
もちろん、大前提としてPythonを動かす環境は必要です。
個人的には、PyCharmが現状では最高だと感じています。
上記で挙げた必要なモノを下記で説明していきます。
日本語GPT-2モデル
GPT-2は、OpenAIが開発した言語モデル(テキスト生成モデル)です。
単語レベルの確率の組み合わせから、文の確率を計算します。
「人間が使う言葉らしさ」であるほど、その確率は高くなります。
このGPT-2は、簡単に利用できるようになっています。
Transformersをインストールすれば、利用可能です。
ただし、そのためには言語毎に言語モデルが必要となります。
日本語を扱うためには、日本語で学習した言語モデルが必要ということです。
そして、日本語の文章作成には日本語GPT-2モデルが不可欠と言えます。
それが、ありがたいことに用意されています。
日本語GPT-2モデル
https://huggingface.co/rinna/japanese-gpt2-medium
rinna社が、2021年4月7日に公開しています。
GPT-2自体は、2019年2月にリリースされています。
日本人としては、「やっと来た~!!」という感じです。
個人では、絶対にそんなモデルを作成できませんからね。
個人ができない理由は、以下。
rinna社が公開した資料より、一部抜粋。
Tesla V100 GPUを用いて、70ギガバイトの日本語テキストを約1カ月の長期間にわたってトレーニングしました。
では、この日本語GPT-2モデルをどうやって利用するのでしょうか?
上記でも言いましたが、Transformersが必要となります。
Transformers
Transformersについては、次の記事で説明しています。
上記を参考にして、Transformersのインストールを行います。
ただし、Transformersだけでは日本語GPT-2モデルの利用はできません。
日本語GPT-2モデルは、SentencePieceをトークナイザーとして利用しています。
そのため、SentencePieceのインストールも必要となります。
SentencePiece
SentencePieceについては、次の記事で解説しています。
上記を参考にして、SentencePieceのインストールを行います。
これで、TransformersとSentencePieceをインストールした状態のはずです。
この時点で、インストール済みのパッケージを確認しておきます。
※無駄なモノは一切インストールしていません
>pip list Package Version ------------------ ------------ certifi 2021.5.30 charset-normalizer 2.0.4 click 8.0.1 colorama 0.4.4 filelock 3.0.12 huggingface-hub 0.0.12 idna 3.2 joblib 1.0.1 numpy 1.21.2 packaging 21.0 Pillow 8.3.1 pip 21.2.4 pyparsing 2.4.7 PyYAML 5.4.1 regex 2021.8.3 requests 2.26.0 sacremoses 0.0.45 sentencepiece 0.1.96 setuptools 57.4.0 six 1.16.0 tokenizers 0.10.3 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 tqdm 4.62.1 transformers 4.9.2 typing-extensions 3.10.0.0 urllib3 1.26.6
Transformersの前提となる、PyTorchもインストール済みですね。
個人的には、TensorFlowよりもPyTorchをおススメします。
以上、これで日本語GPT-2モデルを動かす準備が整いました。
次で、日本語GPT-2モデルの動作確認を行います。
日本語GPT-2モデルの動作確認
サンプルとして公開されているコードを少しだけ変更しています。
from transformers import T5Tokenizer, AutoModelForCausalLM # 接頭辞(Prefix) PREFIX_TEXT = "人工知能を勉強することは、" # トークナイザーとモデルの準備 tokenizer = T5Tokenizer.from_pretrained("rinna/japanese-gpt2-medium") model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt2-medium") # 推論 input = tokenizer.encode(PREFIX_TEXT, return_tensors="pt") output = model.generate(input, do_sample=True, max_length=150, num_return_sequences=3) print(tokenizer.batch_decode(output))
まずは、接頭辞を用意します。
その内容をもとにして、自動で文章を作成することになります。
今回は、最大で150文字の文章を3つ作成します。
引数「max_length」と「num_return_sequences」で指定しています。
上記コードを実行した結果は、以下。
※初回実行時は、モデルのダウンロードに時間がかかります。
結果その1
結果その2
結果その3
なかなかのレベルで文章を作成してくれるようです。
なお、実行する度に文章の内容は異なります。
ただし、実行結果はお題「接頭辞」次第のところがあるようです。
まったく意味をなさない文章も出てきます。
でも、それもモデルの質が上がれば、解決していくのでしょう。
と言っても、個人が無料でここまでできる時代になったことに驚きです。
マルコフ連鎖を使って、喜んでいた時代が懐かしいです・・・