読者です 読者をやめる 読者になる 読者になる

futurebase’s diary

おもしろいもの、役に立つものを仕事にしたい系ベンチャー企業のブログです。

花火大会のツイートをベイジアンフィルタで分類してみた

8月4日に神奈川新聞花火大会がありました。
他県民の人にはパッとしない行事ですが、
今年は京浜東北線が止まったりと大変でした。

本来なら今年の花火大会に関するツイートを分類したかったのですが・・・・・・
少し検索してみると事故関連のツイートが多く、分類が難しい気がしました。
なので去年の花火大会のツイートを用います。

0.使用するデータ
2014年8月5日に投稿された「神奈川新聞花火大会」を含むツイート


1.分類方法
ベイジアンフィルタを使用します。
これは迷惑メールの分類に使われていることで有名ですね。
予め教師用データを用意して、それを元に分類を行います。

今回は6つのカテゴリーに分類します。

①行きたい
例:「今日の神奈川新聞花火大会、見に行きたい。」
②告知
例:「神奈川新聞花火大会は8/5 19時より開始します。」
③会場到着
例:「神奈川新聞花火大会!会場のみなとみらいに到着。」
④感想
例:「流石、1万5先発。スターマインが綺麗だった。」
⑤混雑
例:「花火大会の帰り、桜木町駅混みすぎwww」
⑥今日花火大会なの?
例:「浴衣の人多いと思ったら、今日は神奈川新聞花火大会か。」

あらかじめ、収集したツイートから各カテゴリーに当てはまるツイートを10個ほど手動で分類しておきます。
これにより、未知のツイートがどのカテゴリーに属するかを推測できるようになります。
各カテゴリーに含まれる文字集合の確率の計算を行い、一番傾向が近いものを機械的にもとめるわけです。


2.結果
まずは投稿数全体の増減。
縦軸がツイート数、横軸が◯時になります。
お昼に凸になり、花火大会中が最も多くなりました。



投稿数カテゴリー別の割合。
『感想』と『今日花火大会なの?』の割合が大きいです。


各カテゴリーの時間別推移
縦軸がツイート数、横軸が◯時になります。


①行きたい
微妙な結果です。午前中が凸になっていれば上手に分類できているのですが。失敗しています。


②告知
これも午前中が凸になる予想だったのですが・・・。大会中に告知が行われている結果になりました。


③到着
大会開始前の16時~18時が山になっています。
一応は成功?なのでしょうか。


④感想
綺麗に結果が出ましたね。開始以降の19時が山になっています。
もっと完璧な分類なら大会開始後19時以降の投稿のみを分類しているのでしょうが・・・。


⑤混雑
8時、12時、17時、21時が凸になっています。
会場への移動と帰宅を考えると17時と21時は分類成功している様子です。
8時と12時は、『本日みなとみらい駅にて~』・『桜木町駅から5分の~』といった
花火大会近辺のお店の宣伝を拾っていたようです。
教師用データに選んだ「駅が混雑している」・「会場への道は人だらけ」といったツイートは、
地名を含んでいることが多く、地名を含んだツイートを分類してしまいました。


⑥今日花火大会なの?
推移を見ての、分類できてるかの判断が難しいですね。
分類した文を確認してみると
『今日』『花火大会』『浴衣』が入っていると⑥に分類してしまうことが多く、
花火大会の感想を⑥に推定してしまっているものも見られました。



3.まとめ
・教師用データが各10個と少なかったので精度の低い分類となりました。
・③到着(『着いた』『来た』『到着』)、④感想(『綺麗』『楽しかった』)といった固有の表現を持つカテゴリーでは、ある程度の分類を行うことが出来ました。
・傾向が遠いものを分類する「その他」のカテゴリーを作れば、もう少し良い結果が得られそうです。

言葉と統計学を合わせないといけないので、計量テキスト分析は大変ですね。

 

最後まで読んでいただいて、ありがとうございました!

会社のブログには、他の分析記事も載せています。
興味がありましたら是非遊びにきてください。
http://futurebase.co.jp

 ブログランキング・にほんブログ村へ
にほんブログ村