KerasのLSTMで谷崎潤一郎を学習させて文章生成しました。【自然言語処理】

どうも、Champignon(きのこ)です。

今回は、自然言語処理、文章生成のお話です。

タイトルの通りですが、KerasのLSTMを使って、LSTMモデルを作成し、そのモデルを用いて文章生成を行っていきたいと思います。

学習に用いるデータは青空文庫からスクレイピングした谷崎潤一郎の小説を利用したいと思います。

谷崎潤一郎を選択した理由は、単に好きな作家だから、という理由です。
そのため、あまり谷崎を読んだことがない方は、例えば夏目漱石や芥川龍之介など、学校で取り上げられることが多い作家でやってみると、モデルの精度を(主観的に)評価しやすいと思います。

LSTM学習のプロセス

  1. スクレイピングで青空文庫から谷崎潤一郎の小説をいただく。

  2. 余計な文字等を排除する。(後述しますが、数字を消し忘れました。。。凡ミス過ぎる。

  3. 文章分割の方法としてsentencepieceを用いて分割

  4. kerasのtokenizerでtoken化

  5. 学習!!

  6. 生成!!!

という感じです。

LSTM学習モデルの概略

モデルはBidirectionalLSTMで、


Model: “model_4” _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_4 (InputLayer) (None, None) 0 _________________________________________________________________ embedding_4 (Embedding) (None, None, 300) 3309900 _________________________________________________________________ bidirectional_4 (Bidirection (None, None, 1024) 3330048 _________________________________________________________________ bidirectional_5 (Bidirection (None, 1024) 6295552 _________________________________________________________________ dense_7 (Dense) (None, 11033) 11308825 ================================================================= Total params: 24,244,325 Trainable params: 24,244,325 Non-trainable params: 0 _________________________________________________________________ None

双方向LSTMの学習結果

谷崎潤一郎を学習させたモデルに、太宰治の人間失格の第一文「私は、その男の写真を三葉、見たことがある」を食わせてみる。
理想は、「谷崎潤一郎っぽい文体で、人間失格の書き出しが生成されることですが、、、
以下が、その結果です。


『私は、その男の写真を三葉、見たことがあるをけれどもをマつてまでかしてのようにト出出不を来てを私のをくわいしてキけて鰤キ物物けれどもしてキ出までいて―――あの出んでのでの如く此処、椴っているのようにであったー………を鼻トをあのをを坑夫入………行ったナオミ治でも一日前の繽キ▁いえ/\\んでををいたを入ぎを―――タマあのにも出マをしたあのノデなるけれどもむぐ入を来てまでそう云う、「不までついをサウ此をそう云うもうしてを物と云うトぎらしいけれどもあの憾煩悶ををコマあのを▁ノ好きマ妹あの物でも/\\をコををでもクぼ云をらしいチであるを心ぎマ入あのを私は物相ををけれども不ノデ/\\不そう云うをいてこのををを物云をのようにト恐使をした出物眼になるキ妹二人突立をぎををしたールをであるった時とか入をこのノあるばかりを眼』

・・・・・・・・・・頭おかしくなりそうですねwww

さいごに

他の文章を食わせてもあまりうまく生成されなかったので、どこか間違っているようです。
出直してきます。。。

ほな、さいなら。

後日追記。

以下のリンクにて文章生成を一からやり直してみました。ぜひご覧ください。

【文章生成】太宰治『人間失格』をLSTMで学習してみた【自然言語処理】

【文章生成】太宰治『人間失格』を双方向LSTMで学習してみた【自然言語処理】

双方向LSTMで谷崎・太宰を学習させて文章生成してみた。【自然言語処理】【文章生成】