Scalaでテキストマイニングしてみた

Pocket

エンジニアの渋江です。

前々から使ってみたかったScalaでテキストマイニングしてみました。

今回は弊社サービスGirlsSense公式Twitterのツイートから、リツイートされやすいワードを抽出するプログラムを作りたいと思います。

前提


ツイートの日本語形態素解析にはKuromojiを使用します。
TwitterAPIライブラリにはTwitter4Jを使用します。

実装


ビルド環境はsbtです。
build.sbtにkuromojiとTwitter4Jを追加してあげましょう

kuromojiをimportしてあげてtokenize()に形態素解析したい文字列を突っ込んであげましょう。
toArray()でScalaのArrayに変換しているので後続のforeachでイテレートすることができます。

Could not embed GitHub Gist fd9dfdfef4a0169b855d: Not Found


sbtコンソールでrunしてみましょう。
以下のような実行結果になり品詞分解されてることが確認できます。

ではちゃんとGirlsSenseのツイートをテキストマイニングしてみます。

TwitterのOAuth認証キーは事前に取得済みです。

Javaのリストが返るのでScalaで回せる様にimport scala.collection.JavaConversions._をimportしておきます。(最初はforeachなんて知らねーよとコンパイラに怒られて困った…)

getRetweetsOfMeというリツイートされたツイートのみを取得する便利なメソッドがあったので今回はこれを使用しています。
ただし直近20件までしか取得しないようです。

x => x.getPartOfSpeech.startsWith("名詞"))ですが、「に」や「が」などの助詞も集計対象になってしまうので名詞のみにフォーカスして集計しています。

さてさて、集計してみると以下のように出力されました。

ふむふむ…。
麻布、開催、イベントなどイベント関連のツイートはリツイートされやすいという結果がわかると思います。
個人的には女子が好みそうなダイエットなどの単語が含まれるとリツイートされやすいのかなと思っていたのですが、そうでもなさそうでした。

Scala書いてて面白かったのでこれを機にちょくちょく使っていこうと思います。

お世話になったサイト

ScalaでTwitterの情報取得
テキストマイニング入門が簡単な時代になったのですなあ〜