はじめに
LINEにも利用されていたAIチャットbotの「りんな」を開発する会社がGPT2の日本語事前学習済みモデルを公開していたので試しました。
実装
まず、必要なライブラリをインストールします。
!pip install transformers==4.4.2
!pip install sentencepiece==0.1.91
文をトークンという単位で分割するためのtokenizerと、分割したトークン列から後に続くトークン列を生成するモデルを読み込みます。
from transformers import T5Tokenizer, AutoModelForCausalLM
# トークン分割
tokenizer = T5Tokenizer.from_pretrained("rinna/japanese-gpt2-medium", )
# りんなの学習済みモデルを読み込み
model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt2-medium")
与えられたトークン列に続く文を生成します。今回は最新のニュース記事から一部を抜粋して残りを計100トークンになるまで生成しています。
# 推論の実行。文の途中からGPTが文を生成する。
text = "appleは、3月9日未明にオンラインで製品発表イベントを開催。普及モデルとして人気の高い「iphone se」の後継機などを"
input = tokenizer.encode(text, return_tensors="pt")
output = model.generate(input, do_sample=True, max_length=100, num_return_sequences=1)
print(tokenizer.batch_decode(output))
GPTの生成文と本来のニュース記事は以下となります。固有名詞に多少難はあるものの、文としては自然であり、人間が書いたと言っても違和感はないと思いました。
GPTの生成文
appleは、3月9日未明にオンラインで製品発表イベントを開催。普及モデルとして人気の高い「iphone se」の後継機などを
発表しました。 今回の新型iphoneは、iphone seから「iphone 6s」に改名されることになり、その新型モデルに 含まれたtouch idは、iphone seが物理指紋センサーでtouch idに対応するのと異なり、 新しい技術として採用することを発表しています。 今回の新型iphoneには、iphone seと同様に指紋認証センサーも
ニュース記事
Appleは、3月9日未明にオンラインで製品発表イベントを開催。普及モデルとして人気の高い「iPhone SE」の後継機などを
発表した。発売は、3月18日を予定。11日から事前予約を受け付けている。また、同日にはドコモ、KDDI、ソフトバンク、楽天モバイルの大手4キャリアが同モデルなどの取り扱いを表明。Appleと同様、11日から予約を受け付けており、18日に発売する。
おわりに
今回の結果を見ると、自分で作文するよりもGPTに任せた方がいいような気がしました。翻訳士がDeepLを使用しているという話は聞きましたが、今後は文生成や要約などのタスクに関しても機械にお世話になることが増えていきそうです。
生成モデルの弱点として、固有名詞に違和感があったり、同じ言い回しを繰り返したり、首尾一貫したテキストを生成できなかったりという問題があった印象ですが、それらの欠点は昨今の生成技術の進化を見ていると、今後いくつかのブレイクスルーで解消されるだろうと思いました。個人的には常識をもとに推敲を行うAIが鍵になると思うので、今後そのあたりも調べていきたいです。