【Python】GPT-2で日本語文章を自動で生成する

【Python】GPT-2で日本語文章を自動で生成する データ分析

「どうせまともな日本語の文章なんてできるわけがない」

このように思っているなら、自分の目で確認してみてください。
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

人工知能を勉強することは、 自分自身への投資にもなる。 なぜならば、人工知能には人間以上の、 あるいはそれ以上の何かがあるからだ。 人工知能が人間の脳を、 もつが、その知能をもっと効率的に 使っていくには、 それなりの知性が必要だ。 本書は、 人工知能というと、 想像よりもハードルの高さを感じない、 というか、それに近いことを書いてある。 しかし、 本書のテーマであるaiとは、人間が 直面する難関な問題を解決する為の、 最先端の人工知能… 人工知能とは、 人の心の中を生き抜いていく 、 知性というか、想像以上の何かある 、 人間の知性はそれをもっと効率的に 活用できる、 という’

結果その3

人工知能を勉強することは、 自分自身の価値を高めることにもつながるのです。 人工知能とaiを活用したコミュニケーションをぜひ学びつつ実施し、 ご自身のビジネスに活かしてください。 人工知能(ai)・ロボティクス・医療・金融、など最新のit環境を 体験できる貴重な機会です。 ( 会場が変更となります。お間違えのないようにお越しください。 ) 会場:横浜みなとみらい地区(横浜市西区みなとみらい1-1-1) 事前申込は不要で、当日いつでもお気軽に会場にお越し下さい。 (※会場が変更となります。お間違いのないようにお越しください。) 定員が200名、各回の定員が40′

なかなかのレベルで文章を作成してくれるようです。
なお、実行する度に文章の内容は異なります。

ただし、実行結果はお題「接頭辞」次第のところがあるようです。
まったく意味をなさない文章も出てきます。

でも、それもモデルの質が上がれば、解決していくのでしょう。
と言っても、個人が無料でここまでできる時代になったことに驚きです。

マルコフ連鎖を使って、喜んでいた時代が懐かしいです・・・

タイトルとURLをコピーしました