僕はまた、旅に出る。

僕はまた、旅に出る。

小説の生成の話

数年前に、コンピュータに小説を書かせようというプロジェクトが始まり、昨年、SF賞に応募したというところまでは知っているけれど、その周辺の話、それ以降の話をあまり耳にしたことがなかったので、最近のこととか、ゆるふわっと調べてみた。
 
データさえあれば、短(単)文の生成はできている。技術も少し進んだっぽい。
 ここ数年の機械学習の発展と、周辺ライブラリの充実のおかげで、青空文庫とか小説家になろうのデータさえ集めれば、手元のパソコンでも遊ぶ程度の文生成が簡単に試せるようになった。そこそこ最近の例だと、kerasのLSTM(ニューラルネットワークの手法の一つ)のサンプルコードなんかを使って、分かち書きされた日本語の小説データさえ用意すれば、なんちゃって日本語文章生成モデルならすぐできてしまう。
 そこそこ最近の技術面の話だと、ニューラルネットワークの手法の一つのGAN(Generative Adversarial Networks)のさまざまな派生手法が考案されており、文などの系列データに用いることのできるseqGANという手法を使って文生成をおこなってみている人もいたりする。ただし、現在の段階では短文生成がほとんどで、複数文にまたがるような小説生成はかなり少ない。
 あとは、名大の研究室で、人狼ゲームのログから小説生成している研究があり、デモを公開している。この小説はかなりいいところまで来ていそうな感じ(ただし、これはニューラルネットワークとかではなさそうな感じ。物語を細分化し、パラメータによって、その場面の文を生成するシステム。文生成部分はマルコフ連鎖アルゴリズムらしい)。
 たくさんのデータでなんとかしよう系の研究だとMITでは、めちゃくちゃデータを集めてホラー小説(というよりは強い文章なのか?)を書かせる研究もあるらしい。
 
全く新しい小説を書かせることはやはり難しそう
上に挙げたように、既存の小説生成は、データからデータ内にある情報のみで文を生成する手法か、ルールベースのシステムであることが多く、全く新しい内容の小説を、機械学習などを用いてゼロから生成するというのはやはり難しい(研究をされている方はいらっしゃる)。問題はいくつかあって、学習データに無い情報は書かせることができないこと(学習データだけでは知識や常識に限界があること。例:青空文庫のような著作の切れたような半世紀以上前の小説データではスマートフォンを使った現代的な話は書けない)。複数の文やかなり離れている文の間の関係を捉えるのは難しいこと。表層的な情報からは読み取れないようなことがあること(比喩表現等)、本格推理小説などの論理や推論も難しく、ただ単に推理小説のデータをたくさん集めればなんとかなるやろとはいかない(例:どれだけ推理小説を集めて新しい推理小説を生成してみても、推理小説っぽい文はできるかもしれないが、犯人を断定できる証拠の部分まで考慮して文を生成していくというのは単純な文生成では絶対できない)などが問題の一例としてあげられそう。
 
まとめ(られていない駄文)的な何か
 事前知識なしでゼロから小説生成させるというのはやはり難しい。この単語は来たから、次はこの単語を生成すればいいんでしょではなく、なにか別の物語の指針や状況と照らし合わせながら文生成(と物語進行とか推論とか)ができるようになる必要がある。その点では、紹介したような、状況をパラメータとして入力する方法や、対話システムのような会話の流れを汲んだ文生成の方法とか、物語の進行を制御するシステムと、そこから与えられた情報を考慮して文生成をおこなうニューラルネットワークの組み合わせなんかで小説生成していくことになるのかなとおもう。ただしその方法では、かなり形式ばった小説を生成することになってしまうので、独創的な小説を書くのはまだまだ先かなとおもう。
 以上のことから、しばらくは小説家がいなくなるというよりも、小説家をサポートする方向に発展していくんじゃないかなと思う。もしくは、以下の参考記事でもありましたが、それぞれの得意な部分を生かし、人間の作家もコンピュータの作家も共存・共作していくのでは無いかなと思う。
 
文がぐちゃぐちゃなので、気が向いたら直します。
 
気になった方は調べてみてください。
 
参考文献
名大 佐藤先生のスライド(とてもおもしろかった)
開発されたシステム
その論文
既存小説に依存せず小説を生成する試みの論文
seqGANを用いた文生成の記事
プロジェクト松原先生のインタビュー記事
ホラー小説を書かせる研究の紹介記事