not good but great

プログラミング、アート、映画・本の感想について書きます。

Python3系、MeCabでマルコフ連鎖を用いて文章を自動作成

f:id:naoyashiga:20160316232752p:plain

RNNが難しそうなのでマルコフ連鎖をやる

【エヴァンゲリオン】アスカっぽいセリフをDeepLearningで自動生成してみる - Qiita

この記事が面白かったので、ニューラルネットワークの一つであるRNNを用いて、自分も何か文章を自動作成したかった。しかしTensorFlowやChainerのコードを理解するのに時間がかかりそうだったので、お手軽そうなマルコフ連鎖での自動作成を試みることにした。

マルコフ連鎖の準備

Pythonリハビリのために文章自動生成プログラムを作ってみた - [[ともっくす alloc] init]

こちらの記事を参考にした。マルコフ連鎖のコードを書く気力がないので、コードをcloneして用いる。

MeCabを用意

形態素解析をする必要があるので、MeCabを用意する。

Python3で形態素解析エンジンMeCabを使えるようにする(2016年3月版) - Qiita

いろいろやり方はあると思うけど、上の記事を行うとうまくいった。

Python2系から3系に書き換える

https://github.com/o-tomox/TextGenerator

こちらはPython2系で書かれているようなので、Python3系に書き直す必要があった。

このへんを参考にしながら、エラーが出たところを書き換える。 2to3を使ってコードをPython 3に移植する - Dive Into Python 3 日本語版

マルコフ連鎖を実行

$ python PrepareChain.py

これで3つ組チェーンの情報が保存されているDBファイル?とやらが生成される。

$ python GenerateText.py

これでランダムな文章が生成される。

結果

サンプルでは小説「檸檬」が扱われていた。

それの産地だというカリフォルニヤが想像に上って来るもの。結果した。私はまたあの花火というやつはなんという呪われた私の心を充たしていた。風景にしているのだ。私はまたそこの果物屋固有の美しさが最も露骨に感ぜられたのが私には贅沢ということがあったりカンナが咲いていた。

文と文とのつながりがよくわからないが、明らかにおかしいという部分は少ない。自動生成と知らなければ、一応頭から最後まで読んでしまいそうだw