プログラミングと機械学習のメモ
日付: カテゴリ: 自然言語処理
今回はT5を使ってなろう小説のタイトルを予測してみます。
コードは以下でまとめているので、実際に実行したい方は以下のgithubのコードを参考にしてください。
https://github.com/Shingo425/NLP/blob/main/src/narou_title_predict.ipynb
追記20221031:
google colabで実行することができるようにコードを修正しました。以下からランタイムをGPUにして実行してみてください。
https://colab.research.google.com/github/Shingo425/NLP/blob/main/src/narou_title_predict.ipynb
T5とは、Text-to-Text Transfer Transformerの略で、テキストを入力し、テキストを出力するTransformerベースの事前学習済みモデルです。
ここではあまり解説しませんが、入力と出力がテキストであることを念頭に置いておけばとりあえず良いかと思います。
まずは以下のブログを参考になろうの全データを取得します。
https://karupoimou.hatenablog.com/entry/2019/04/30/203333以下のようなデータが取得できます。
T5を用いて、なろう小説のstory(あらすじ)からtitle(タイトル)を予測するモデルを作成します。
メモリに乗らなかったので入力は256トークンのみ使用しています。
学習データは学習時間の都合上2020年のなろう小説のみで実施しました。
実際に予測結果を出してみます。
pred_titleが予測したタイトルです。実際のタイトルと近いかは置いておいて、ちゃんとした文章になっています。
今までのTransformerとかLSTMとかは綺麗な文章にならない場合が多いので、感動しますね。
例えば「本好きの下剋上 ~司書になるためには手段を選んでいられません~」では、あらすじに「異世界生活」という単語が出ていないにもかかわらず「図書館司書の異世界生活」と予測しています。なろう小説の異世界率の高さが伺えますね。
他のタイトル予測結果についてはgithubに載っています。結果見るだけでとても面白いのでぜひみてみてください。
さて、なろう小説からタイトル予測しましたが、このまま終わるのは勿体無いので、青春文庫にある作品の冒頭部分からタイトルをつければなろう風タイトルになるのでは?と考え、やってみました。
わりと普通のタイトルを予測していますね。「吾輩は猫である」はそのままだし。
「こころ」が「先生」とか、「人間失格」が「池のほとりの坊ちゃん」とか結構面白いと思います。
今回はT5を使ってタイトル予測してみました。
予想以上に良い出来だったので、なろう小説作家とかに売れないかな…
T5には無限の可能性がありそうなので、色々試していきたいですね。