utsubo’s blog

競技プログラミングとか.

Rubyで形態素解析してマルコフ連鎖

はじめに

形態素解析マルコフ連鎖で面白いことできそうと聞き、調べてみると既に色んな人がやっていました。
Rubyで何か書きたいと思っていたので、参考にしながら試してみました。
[参考リンク]
マルコフ連鎖でTwitter BOTを作る - FLYING
[プログラミング作法]マルコフ連鎖アルゴリズムをrubyで実装してみた - Qiita


やろうとしたこと

過去ツイートにある単語を適当に繋ぎあわせて新たに文章を作る


環境

Rubyのバージョンはたぶん2.1。MecabRubyから使うのにNatto gem、TwitterAPIを叩くのにTwitter gemを突っ込みました。


流れ

TwitterAPIを叩き自分の過去ツイートを最近から数千個読み込んでくる。それぞれのツイートをMecab形態素解析して単語に分解し、辞書っぽいものをつくる。作成した辞書からマルコフ連鎖で適当に単語をつなぎあわせて文章にする。
(辞書的なものとマルコフ連鎖については上記リンクに詳しく書いてあるので省略。)


結果

実行結果:"レポートのやる気が起きなくてほげ"
全体的にツイートが短いので、1つのツイートがそのまま出てきてしまったりしてあまりうまくいきませんでした。最初の単語を良い感じ指定すれば少しそれっぽくなるかな。

ツイートは微妙でしたが、同じような要領でニュース記事の要約っぽいことをしてみると、うまくいくことが多かったのでまぁ満足。
記事:http://news.tv-asahi.co.jp/news_international/articles/000044089.html
要約結果:"韓国国防省によりますと、北朝鮮は来月初めに行われる米韓合同軍事演習の中止を繰り返し求めています。"


ソースコード

ほとんどコピペだし、めちゃくちゃだけど一応貼っときます。