- テキストを単語にバラし、単語の出現数(率)を集計する
- Rで集計結果を読み込んでwordcloudでプロット
単語をバラすのにMeCabを使う。MeCabをRから呼び出すRMeCabのライブラリを使ってもできる。ただ、簡単な文章はよいのだけれども、多少量があるとなんかの制限にかかって動かない。なので、Rubyとかテキトーなスクリプトなりプログラムなりで自分でカウントする方がてっとりばやい。
私はMeCabに解析させたいテキストファイルを食わせて結果を取得⇒カウントしてCSVに保存⇒Rで読み込んでプロットしてる。あとで色々使い回したいから、MySqlにMeCabの解析結果をつっこんで、Rubyで拾って集計してる。集計部分はまた今度載せるとして、Rで読み込みプロットする部分。
↓の感じで「単語,出現数」の集計結果のCSVを準備・・・ 項,2 通り,3 否定,2 対,61 懐疑,3 ECB,17 国債,11 購入,5 ・・・そしたらRでCSVを読み込む
data1 <- read.csv("C:\\R\\wordcount.csv",header=FALSE,row.names=1)このまま使ってもいいけど、出現数が10回以上の単語だけ出すみたいな事をしたい場合は↓の感じで絞る
data1sub <- subset(data1, data1[, 1] >= 10)プロットする際の色を決める
Color <- brewer.pal(9, "Blues") #文字色 Color <- Color[-(1:3)] #薄い色を消すプロット
wordcloud(row.names(data1sub), data1sub[, 1], scale=c(6,.2),random.order = T, rot.per = .15, colors = Color)ライブラリの読み込みからまとめて書くと↓の感じ
library("RColorBrewer") library("wordcloud") data1 <- read.csv("C:\\R\\wordcount.csv",header=FALSE,row.names=1) data1sub <- subset(data1, data1[, 1] >= 10) Color <- brewer.pal(9, "Blues") #文字色 Color <- Color[-(1:3)] #薄い色を消す wordcloud(row.names(data1sub), data1sub[, 1], scale=c(6,.2),random.order = T, rot.per = .15, colors = Color)
Rでワードクラウド作るのはいい感じなんだけど画像なのがまれに傷。FlashとかJQueryのプラグインとかでなんかかっこいいのないかなーって探してみたけど、グッとくるものがない。さらにJSONとかでデータ渡せると胸が熱くなると思う。じゃ作れとか言われそうですが。 見た感じはRのこのwordcloudっぽく。ホイールクリクリしたら中まで入っていけたり、文字をクリックでリンクしてみたりとかを夢見てみる。