動機
マルコフ連鎖でデタラメな文章を生成したい。
やったこと
・MeCabとmarkovifyを使ってPythonでマルコフ連鎖を実装した
・日記を自動生成し、鑑賞した
1.マルコフ連鎖を実装
この記事を参考にPythonで実装した。markovifyはマルコフ連鎖で文章生成を行うPythonライブラリである。markovifyに読み込ませる文章は分かち書きされている必要があるので、MeCabというソフトを使って分かち書きをする。
MeCabを使う際の注意点として、インストール時に文字コードをUTF-8に設定しないと不具合が起きたので注意。(Python上で動かすときに文字化けした)
動作確認として、discordでの私の書き込み履歴を学習させると次のような文章群が生成された:
- 当委員会では、塔に住んでた人を募集しています。
- この道の先に、苦痛以外の何かが、始まり、終わっていた
- 力抜いて力入れて力入れて力入れて力入れて力入れて力抜いて力入れて力入れて力抜いて力入れて力入れて
- 恋ミサイルやめてよ遊助
- SDGsさん、いつもありがとうね。
- イマジネーションがフットーしてしまったのですが
- さっきまでおしりだったものが危険なのは確かにある
- オタクの主治医「あなたのペースで、少しずつでいいから、ローラースケートを履いて、おしっこを。
私の普段の言動についてもご理解いただけたと思う。
2.日記を自動生成
上記の動作確認のとおり、マルコフ連鎖によって生成された文は大きな文法の破綻がない一方で、文脈や意味は突拍子もないものになっている。そこで、日記の文章を学習・生成することで、ヘンテコな日記を楽しめるのではないかと考えた。
日記の文章データとして、私が書いている日記を使用した。マルコフ連鎖の階数は3とした。生成した文にランダムに日付をつけたところ、一行日記としてのリアリティがグッと上がったのでおすすめです。
生成された日記の中から面白かったものを抜粋した。いっしょに鑑賞してください:
1月13日 : 「走る」という動作を完全に忘れてしまう夢が増えたので眼鏡を新しくした。
夢の中でうまく走れなくなること自体は時々あるけど、眼鏡を新調しようとは思わない。わかりやすくパラレルワールドだ。
3月2日 : 近所のお菓子屋さんで缶のダストブロワーを買っておけばよかったな、と思っている。
こちらの世界ではお菓子屋さんにダストブロワーは売ってない。それとも、甘くておいしいダストブロワーなのだろうか。
4月13日 : かりにきちんと早起きしても怒られない。
時間にルーズなほうがマナーが良い、という常識がまずあって、そのうえで私は早起きに寛容な環境に身を置いているようだ。
9月4日 : 私はいらないものを見てしまった。
かなり「手記」って感じがする。
1月31日 : 月一くらいで起動したくなる奈(東京銘菓)
くだらないことを言うな!
1月23日 : 万引きが絶えなかったから断念…
万引きが多すぎて店を畳むのだろうか。やるせないし心が痛む。
7月24日 : メイドラゴンが来ています
まじ!?
12月4日 : 犬を連れてる姿が銅像になっているのはわかりやすいしありがたい。
西郷隆盛のことだろうか。確かにな。
1月22日 : 観る前は「無限」らしい。
パラレルワールドの私がなにかすごいものを観ようとしている。
6月6日 : 家でひとりでいると意味とか人生とかを考えてご飯を食べちゃう。
こういうのはそっちの世界でも変わらないよね。とりあえず、あったかくしよう。
9月29日 : 大好きだけど途中で投げてしまったのか、ユイ
パラレルワールドの碇ゲンドウの日記だ。ハマってたものに急に飽きちゃうことってあるよね。
8月1日 : プロテインは粉っぽくて苦手という意見をよく見るけれど、私は事前に思っている。
「飲む前からプロテインの粉っぽさに気づいていた」ということでマウントを取るなよ。
3月17日 : 『アンドロイドは電気羊の夢を見ることはあったけれど、「めちゃくちゃ想像力豊かな人がいるな」とたかを括っていたらしい)。
アンドロイド、たかを括ったりするんだ。
10月29日 : そうですね、おしりの大きいゴジラがいたら、それはなんか、いいね
しみじみ言うことか?あと、ゴジラのおしりは元々けっこう大きいイメージがある。
ゴジラにおしりないの知らなかったな
(画像はゴジラ・ストアより)
おわりに
知らない世界の一行日記がポンポン出力されるのをぼーっと眺めていたら奇妙な酩酊感を覚えた。しかもそれらは自分が書いてきた日記を素材としているのだ。こうすることでしか得られない感覚だったので、おすすめです。
1月1日 : いやあ休みを頂戴しても昼過ぎには眠くなる。