RMeCabで検索ワード解析

Google Analyticsから検索ワードを抽出し、頻度分析をおこなっていきます。
抽出方法は、GAから検索ワードを取り出し、訪問回数が複数の場合はその回数分だけコピーします。

【抽出した検索ワード】
西内啓一西内啓一西内啓一データサイエンティスト 勉強データサイエンティスト 勉強big dataの概要“r関数“とmongodbapache hadoop 入門r 回帰直線 点 plotr 回帰分析 異常値rで解析rとrubyによるデータ解析入門データサイエンティスト web制作データサイエンティスト スクリプト言語データサイエンティスト 言語データサイエンティストになるにはビッグデータ サンプリング データセットフィッシャー『実験計画法』 紅茶ミルクティの実験重回帰分析 入門西内啓一 統計学が最強の学問である西内啓一アマゾン統計 cc統計解析 ru aic標本分散 r 出し方

「西内啓一」が3回、「データサイエンティスト 勉強」が2回出ていますが、これは訪問数がそれぞれ3回、2回とあったためです。

早速Rで解析していきます。
このRMeCabを使った解析は「テキストマイニングの基礎」を参考とさせていただいております。

上記の要領で作ったテキストデータを読み込みます。
読み込む際に、単語の頻度を調べる関数 RMeCabC()を使います。

> txres <- RMeCabFreq("ga_ward_ana.txt") file = ga_ward_ana.txt length = 64 ※ワークディレクトリを調べる関数は、getwd()関数。 ※ワークディレクトリの変更は、そのほか > 作業ディレクトリの変更 でできます。 変数「txres」を表示。 > txres
Term Info1 Info2 Freq
1 ある 助動詞 * 1
2 だ 助動詞 * 1
3 と 助詞 並立助詞 1
4 は 助詞 係助詞 1
5 が 助詞 格助詞 1
6 で 助詞 格助詞 1
7 と 助詞 格助詞 1
8 に 助詞 格助詞 2
9 による 助詞 格助詞 1
<中略>

助詞の量が多いため解析しづらい。
出現頻度が高い「5」以上のものだけを表示させます。

> txres[txres$Freq >= 5, ]
Term Info1 Info2 Freq
34 r 名詞 一般 5
38 サイエンティスト 名詞 一般 6
40 データ 名詞 一般 8
53 啓一 名詞 固有名詞 5
54 西内 名詞 固有名詞 5

出現頻度が5以上で、名詞だけを表示させる。

> txres[txres$Freq >= 5 & txres$Info1 == “名詞”, ]
Term Info1 Info2 Freq
34 r 名詞 一般 5
38 サイエンティスト 名詞 一般 6
40 データ 名詞 一般 8
53 啓一 名詞 固有名詞 5
54 西内 名詞 固有名詞 5

もともとのワードが少ないので、条件から頻度5を除く。

> txres[txres$Info1 == "名詞", ]
Term Info1 Info2 Freq
13 サンプリング 名詞 サ変接続 1
14 入門 名詞 サ変接続 3
15 分散 名詞 サ変接続 1
16 分析 名詞 サ変接続 2
17 制作 名詞 サ変接続 1
18 勉強 名詞 サ変接続 2
19 回帰 名詞 サ変接続 3
20 学問 名詞 サ変接続 1
21 実験 名詞 サ変接続 2
22 統計 名詞 サ変接続 3
23 解析 名詞 サ変接続 3
24 計画 名詞 サ変接続 1
<中略>

さらに、特定の単語に隣接したデータ解析をおこなうには、collocate()関数を用いた共起語分析ができる。
「データ」という単語に隣接する共起語分析をする。

> txres <- collocate("ga_ward_ana.txt", node="データ", span=1) file = ga_ward_ana.txt length = 61 > txres
Term Before After Span Total
1 による 1 0 1 1
2 サイエンティスト 0 6 6 6
3 サンプリング 0 1 1 1
4 データ 8 0 8 8
5 ビッグ 1 0 1 1
6 入門 1 0 1 3
7 制作 1 0 1 1
8 勉強 1 0 1 2
9 啓一 1 0 1 5
10 解析 0 1 1 3
11 言語 2 0 2 2
12 [[MORPHEMS]] 8 3 11 61
13 [[TOKENS]] 16 8 24 102

Spanというのがある単語(中心語)を中心とした出現範囲のこと。
collocate()関数の引数spanは、node データ を中心として次のワードとなる頻度を調べている。

さらにこのデータが有意か否かについて調査する。

collScores()関数でt値やMI値で調べる。

> txres2 <- collScores(txres, node="データ", span=1) > txres2
Term Before After Span Total T
1 による 1 0 1 1 0.8431373
2 サイエンティスト 0 6 6 6 2.0652561
3 サンプリング 0 1 1 1 0.8431373
4 データ 8 0 8 8 NA
5 ビッグ 1 0 1 1 0.8431373
6 入門 1 0 1 3 0.5294118
7 制作 1 0 1 1 0.8431373
8 勉強 1 0 1 2 0.6862745
9 啓一 1 0 1 5 0.2156863
10 解析 0 1 1 3 0.5294118
11 言語 2 0 2 2 1.1923761
12 [[MORPHEMS]] 8 3 11 61 NA
13 [[TOKENS]] 16 8 24 102 NA
MI
1 2.6724253
2 2.6724253
3 2.6724253
4 NA
5 2.6724253
6 1.0874628
7 2.6724253
8 1.6724253
9 0.3504972
10 1.0874628
11 2.6724253
12 NA
13 NA

t値は一般的に1.65以上の場合、有意に大きかったと言えるデータということ。このデータの場合は、「サイエンティスト」のみ。
単語数が少なかったことによる影響度合いが高そう。

今日は、ひとまずこの辺りで。

今後、Ngram解析、テキストのネットワーク分析と続きます。
Ngram解析はGoogleの解析ロジックであるので興味深い。
ネットワーク分析は関連性を視覚的に示せる解析方法なので楽しみ。

うーん、RMeCab楽しいなぁ。

Leave a Reply

%d人のブロガーが「いいね」をつけました。