読者です 読者をやめる 読者になる 読者になる

Brace, Paren, Semicolon.

脳科学を勉強しているエンジニアのようなもの

ニューラルネットワークを使って夏目漱石っぽい文章ジェネレータを作ってみた

機械学習

RNN(Recurrent Neural Network)を使って、夏目漱石の「吾輩は猫である」調の文章を生成するジェネレータを作ってみました。

作成にあたってはこちらの記事を参考にさせていただきました(参考にというかほぼそのままですがw)

d.hatena.ne.jp

f:id:oimou:20151122160527p:plain

使ったのはニューラルネットワークライブラリのChainerです。RNNモデルで「吾輩は猫である」の特徴を学習し、それっぽい文章を生成してくれるようになります。

ベースとなるリポジトリはこちら。

yusuketomoto/chainer-char-rnn · GitHub

pythonで日本語を扱うあたりでドハマリしてしまい、なんとかパッチを当てて乗り切りました。pythonで日本語扱うのは大変そう。。

このジェネレータで生成される文章はこんな感じ。

charrnn_epoch_1.53.chainermodel

一番最初のモデル。まだ文章として成り立ってない。

吾輩は除のさってず船気をひと己のまうさい名に寒èラ沙育ンなしたから なうの出んしよ写下さ。中話理して芽主カう返ら、きー云え小ア面ン云に晴だ、それっ。十皆るら底しるらの木な事申等の目の日量虎さり出せ。 ...

charrnn_epoch_6.12.chainermodel

会話が入ってきた!

吾輩は主人は下手を鍔違ってんなのは彼に始めてさく」と主人は少しも気だとちょうと突沢ケレ徳あんか」 「怪し顔か、御金、さんなã境近窓の針と弓の上へも満斎へ一十十煮目以の着べ事根器に一理を高¿得付けている。いう苦生は上業恭の故に蔭とも昨度を存すで迷亭が食って髪のほくなりだけ」「だめいのといめ言って主人は座田が離れんのはね…」 ...

charrnn_epoch_19.90.chainermodel

じっくり読むと意味不明だが、だんだん文章の見た目はそれっぽくなってきた。

吾輩は不思議なになすら、実は水や。ずにかいてくれぶらば、りとんと「いわながら落ち得込んだままじゃあり得てさ。両通りへ出て来ないのも、急にこの時までで御味約前の大きた者でもない、ぼたまたに勝難が来て来る。これが手の間だけ、死なんか聞て来たので、吾遠撃は人間に喚えなくなったが、甚煮を食ってまた偉手の尊敬だっても構わぬ事である。なかに極めて平気に反射する活尽する。

charrnn_epoch_24.49.chainermodel

なぜか記号が入っている。元のデータに紛れ込んでたみたい。

吾輩は―もしう昨日諸君じゃないか。そうかも知れないよ、細君はそんな所を云ってしまって、今だからãば仕方がないませんじゃないか」 「うまかる失¬には、すると主人は平常戸狂を見たが、虎の光お、ところが天井の上に相使かったんです」 「自へ吾京返んだって剣子を求めているよ」

charrnn_epoch_30.61.chainermodel

吾輩は主人が平文中隔ちに先生寒月と思った。すると迷亭先生としてやったぬじゃないか」「なかなか妙、とう金がないって、それだけ失敬の入りに離れない。君は僕が金が食うとか、そうさと引極ので、なっボールの通り片自慢をするいが不愉快に話した。「しかしすは癇対だって?」

こうして記事を書いている間もどんどん学習中なので、学習が進んだらもっとそれっぽい文章が出てくることを期待している。