会いたくて震えるBOT

3連休初日、いかがお過ごしでしょうか。

ぼくは""起きる""というタスクを無事完了し、あとは""寝る""というタスクを遂行するのみです。非常に順調な滑り出しです。雨が降りそうです。雨は降ってほしくないです。お寿司を食べたいです。

先週の日曜日に社内ハッカソンで LINE BOT を作ったので、そのことを書きます。今回のハッカソンはテーマが女子力となっていたため、女子力溢れるかんじで取り組みました。

企画当初は、女子力溢れるイベントなのに参加者が全員おっさん、という高度な"""ボケ"""のつもりだったのに、結果的に女性の参加者も数名おり、体感上の男女比は1:9くらいでした。ガチめにチャラいかんじになってしまい、猛省しています。

作ったやつ

女子といえば西野カナさんです。

ぼくは西野カナさんを敬愛しており、その共感を生む歌詞には心を動かされっぱなしです。そこで、西野カナさんの歌詞を学習し、それっぽい歌詞を生成する LINE BOT を作りました。

f:id:kyabatalian:20160716175616j:plain f:id:kyabatalian:20160716175624j:plain

いつ止めるかわかりませんが、いまはまだ動いています。ぜひご登録の上、切なく繊細な乙女心をご堪能ください。

仕組みなど

仕組みについて、特筆すべきことは何もありません。形態素解析(MeCab)+マルコフ連鎖です。

環境・構成は、時間節約のため、ゴールデンウィークに作ったクソみたいなLINE BOT を引き継ぐことにしました。

kyabatalian.hatenablog.com

ただ、これだとサーバレス&DBレスになります。前回はコード内に書いた文字列を返すだけだったのですが、今回は学習したりなんやりごにょごにょする必要があります。どうしようかな〜帰ろうかな〜帰って甘々観て寝ようかな〜と思ったのですが、なんとかなりました。

Lambda にコードを登録する方法として、「ブラウザ上のテキストボックスにコードを書く」以外に、「.zipに固めてアップロードする」「S3からアップロードする」という方法があります。今回パクった参考にしたコードは学習結果を SQLite で吐いてくれます。ローカルで学習させる→その結果と文章生成部分のコードを Lambda にアップロードすればいけるのでゎ?と思いました。いけました*1

ちなみに、学習も含めてまるっと Lambda にやらせようとしても、うまくいきません。学習結果は Lambda が動いている環境の /tmp に吐かれますが、Lambda の実行終了後に削除されます。

諦めたやつ

今回社内ハッカソンでも、いままでのとおり、1ミリも理解していないのに深層学習でなんかやるシリーズとして、圧倒的人工知能をフルコミットでシンギュラリティをコグニティブするつもりでした。

ミーハー力 100%なので Chainer をいれて RNN を動かしてみたら学習が終わらんぜよってなって、ミーハー力 200%で GPU で動かしてみるぜよって思いました。手元の Mac book Pro(Late 2013) は GPUIntel Iris なので CUDAダメ子ちゃんらしいです。

あと、AWS EC2 に GPUインスタンスなるものを NVIDIA が公開しているのですが、インスタンスタイプが g2.2xlarge です。お金がかかります。貧困家庭で生まれ育ち雑草を主食とする自分にとって、痛い出費です。

というか、環境構築等々やってると時間内に終わらない確率8000%だったので、今回は諦めました。

Yami Yami Day

最後に、西野カナさんの数多ある名曲の中で、ぼくが最も好きな曲をご紹介します。2008年発売のアルバム『Glowly Days』収録、Yami Yami Day です。歌詞が、歌い出しからもう最高なのですが、特に、「※病み病みの日のこと」という注釈。最高に次ぐ最高。

What happened?
What is the matter?
うまくいかない いつも
もう全部やだ
Yami Yami Day (※病み病みの日のこと)
Nothing's gonna be alright
Nothing's gonna be alright
繰り返すだけの Everyday

参考にしたやつ

*1:パクリ元では生成器が学習器に一部依存していたため、ちょっと書きかえました。