Python
mecab
マルコフ連鎖
Vtuber
月ノ美兎

VTuber月ノ美兎の名言からセリフを自動生成する(マルコフ連鎖)

概要

僕はね、もうプログラムなんかどうでも良くて君のことが好きなんやけど、でも、あの、その、だからマウスを握るんじゃなくて、君の手を握りたいけど、だけれども、だけれでも、僕はもう、こうやってコードを書いて、君に言葉を伝えるその術しか持ってないから、僕は君のために、プログラムを作る、も、ぼ、僕のために作りたいんです!

※ヨーロッパ企画さんの愛の歌が溢れ出てきて止まらねえんだよ!のXコピペの改変

概要(真面目)

最近バーチャルYoutuberが物凄く人気ですね。自分の好きなVTuberは月ノ美兎さんです。
tsukinomito.jpg
普段はクソとか言っちゃうくせに、ホラゲーでクッソビビったり視聴者に持ち上げられるとすぐ調子に乗っちゃったり大物Vtuberにはヘコヘコしてたりするのすこ。ガチ恋勢になっちゃうやばいやばい
月ノ美兎さんといえば圧倒的な名言の数々がありますが、これらを学習させて新しい名言作れねーか?というところで、文章の自動生成をやってみます。既に誰かがやってそうな感じもありますが許して。

構成

Python3+mecabでマルコフ連鎖を使用します。マルコフ連鎖はtwitterのbotなどでよく用いられている奴ですね。【エヴァンゲリオン】アスカっぽいセリフをDeepLearningで自動生成してみるで試されている方法と同じです。
プログラムはからあげさん作のマルコフ連鎖プログラムをほぼそのまま使っています。ありがたい…!
ただ、Python2系はそろそろ使うのをやめたいので、Python3を使ってみましょう。

準備

Python3とmecabをインストールします。以下はHomebrewを使った例です。

コマンド
# mecabインストール
$ brew install mecab
$ brew install mecab-ipadic

# Pythonインストール。pyenvを使う場合は他の記事を見てください。
$ brew install python3
$ pip install mecab-python3

プログラム

こちらですが、Python2系のプログラムになっています。encode/decodeを消去、xrange→rangeに変換、などを行います。
いるかどうか不明ですが、プログラムもupするかも。

データについて

10分で分かる月ノ美兎【にじさんじ公式】
10分で分かる月ノ美兎 *2【にじさんじ公式】
などから適当に集めます。
ちゃんとやるなら音声抽出→テキスト変換が良さげだが、今回はおいしい発言だけさっと集めたいので手作業で。誰かデータベース化はよ。

tsukinomito.txt
きりーつ!気をつけ!
こんにちは、月ノ美兎です。
ムカデ人間観ましたね。
ムカデ人間分からない方の為に説明させて頂きますと、人が3人拉致されて口と肛門を繋げられるっていう…
ニワトリ並みの脳味噌されてますけど大丈夫なんですか?この人は。
クソ雑魚パンチやめてくださいちょっとw
(以下略)

実行

コマンド
# ここで学習
$ python PrepareChain.py tsukinomito.txt 
# ここで文章生成。10個作る場合
$ python GenerateText.py 10

結果

何回か実行して、いい結果を集めてみました。

ラブプラスをやったのは高橋真麻さんをスマホの待ち受けにして並べて井の頭公園で展示とかですか?
もうさぁ!ガチャガチャガチャ!みたいなコスプレですね…もみじ。
ヨーロッパ企画さん以外のゲームをやるだなんて、もう音楽なんかどうでも良くて君の手を握りたいけど、だけれども、だけれでも、あの、その中でいいのがね、誰が得するの?みたいな感じで雑草食べてましたよ〜
でももみじは本当に人が食べるものじゃないんですか、それの延長みたいな音でこっちはさぁ、心肺停止するんですか!ちょっと…
洗濯機の上でやってるんですか、それの延長みたいな音でこっちはさぁ、心肺停止するんだよコイツら…いい加減にしてくrあっそんなこと言ってはいけない…コココココココンじゃないですか?わたくしの顔を写しています
わたくし、成績優秀容姿端麗なんちゃらかんちゃらなんかポケモンマスターみたいな感じで雑草食べてましたね

こいつ息をするように雑草食べてるな。
サンプルが少ない(100行程度)なので、もっとヨーロッパ企画要素とか入れたほうがいいかもしれない。

おわりに

今回はデータ数が少なかったのでマルコフ連鎖で試してみたのですが、意外と面白い結果が得られました。元の発言がカオスな奴ばっかりなのに、生成文があまり崩壊していないのがすごい。
もっとデータが集められたら、KerasのLSTM辺りで試してみたりしてもよさそう。

参考資料

月ノ美兎(公式チャンネル)
【エヴァンゲリオン】アスカっぽいセリフをDeepLearningで自動生成してみる
マルコフ連鎖を使ってブログの記事を自動生成してみた