--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2012-02-17(Fri)

RMeCabで解析する[1]





西瓜喰う人」という小説において、内容を読まずにどのような内容かをRMeCabを使い形態素解析
することにより理解できるか実験。

setwd("C:/tools/rgui/data") #小説ファイルを置いているディレクトリを設定する
(1).発生頻度解析
- 単純に解析
> result <- RMeCabFreq("001.txt") 
> result[75:80,] #結果の一部を表示
Term Info1 Info2 Freq
75 欲しい 形容詞 非自立 1
76 から 助詞 格助詞 36
77 が 助詞 格助詞 175
78 って 助詞 格助詞 12
79 っと 助詞 格助詞 1
80 て 助詞 格助詞 1

これではよくわからない。

- データを絞る
フィルタリングする。
発生頻度を2以上、品詞は名詞、動詞、形容詞に限定する。
> txres<-RMeCabFreq("001.txt")
> result<-txres[txres$Freq >= 2 & (txres$Info1 == "名詞" | txres$Info1 == "動詞" | txres$Info1 == "形容詞"), ]
> nrow(result)
[1] 130


- ソートする
> Freqlist<-data.frame(Freq=result$Freq,Term=result$Term, Info1=result$Info1,Info2=result$Info2)
> Freqlist[rev(order(Freqlist$Freq,Freqlist$Term,Freqlist$Info1,Freqlist$Info2)),]
Freq Term Info1 Info2
34 189 いる 動詞 非自立
113 150 の 名詞 非自立
3 148 する 動詞 自立
108 100 彼 名詞 代名詞
110 93 余 名詞 代名詞
112 78 こと 名詞 非自立
75 71 滝 名詞 一般
5 35 なる 動詞 自立
12 34 見る 動詞 自立
33 32 れる 動詞 接尾

動詞はない方がいいかも。
> Freqlist[rev(order(Freqlist$Freq,Freqlist$Term,Freqlist$Info1,Freqlist$Info2)),]
Freq Term Info1 Info2
28 150 の 名詞 非自立
21 100 彼 名詞 代名詞
18 93 余 名詞 代名詞
27 78 こと 名詞 非自立
6 71 滝 名詞 一般
38 61 ない 形容詞 自立
1 28 仕事 名詞 サ変接続
20 26 君 名詞 代名詞
30 26 よう 名詞 非自立
10 24 舟 名詞 一般
17 24 何 名詞 代名詞
16 22 それ 名詞 代名詞

結果:
この小説は「滝」、「仕事」に関連することについて書かれている可能性が高い。


(2). 共起語分析
隣接した単語から記載内容を分析する。
「滝」、「仕事」でみてみる。
- collocation()解析
共起頻度が有意に大きいかを調べる。
T値- 母集団の分布が正規分布であることを前提とし、平均値の差の検定に用いられる
コーパス言語学では1.65以上を目安とする。
MI値-二つのタームの独立性を測る指標
1.58以上を目安とする。

①.「仕事」
coll <- collocate("001.txt", node="仕事", span=3)
> collres<-coll[coll$Total >= 10,]
> collres
38 君 3 0 3 28
39 見る 0 1 1 34
40 口 0 3 3 11
43 仕事 28 0 28 28
53 生活 1 0 1 11
58 滝 1 0 1 73
62 彼 3 0 3 100

collS <- collScores(coll, node="仕事", span=3)
> resT
Term Before After Span Total T MI
4 「 6 0 6 75 1.987446 2.4063812
7 が 8 5 13 237 2.613638 1.8619338
13 ため 1 2 3 3 1.705914 6.0502374
17 で 0 4 4 111 1.162490 1.2558215
22 に 1 13 14 402 2.120373 1.2065406
23 ね 2 0 2 23 1.168794 2.5266754
24 の 13 3 16 583 1.800593 0.8628853
32 を 1 8 9 290 1.541274 1.0402533
38 君 3 0 3 28 1.488104 2.8278449
40 口 0 3 3 11 1.636215 4.1757682
NA NA NA NA NA NA NA
44 取りかかる 0 2 2 3 1.382202 5.4652749
46 終える 0 2 2 2 1.392873 6.0502374
47 終る 0 2 2 2 1.392873 6.0502374
65 没頭 0 2 2 2 1.392873 6.0502374
NA.1 NA NA NA NA NA NA
NA.2 NA NA NA NA NA NA
> resMI = resT[resT["MI"] > 1.5,]
> resMI
Term Before After Span Total T MI
4 「 6 0 6 75 1.987446 2.406381
7 が 8 5 13 237 2.613638 1.861934
13 ため 1 2 3 3 1.705914 6.050237
23 ね 2 0 2 23 1.168794 2.526675
38 君 3 0 3 28 1.488104 2.827845
40 口 0 3 3 11 1.636215 4.175768
NA NA NA NA NA NA NA
44 取りかかる 0 2 2 3 1.382202 5.465275
46 終える 0 2 2 2 1.392873 6.050237
47 終る 0 2 2 2 1.392873 6.050237
65 没頭 0 2 2 2 1.392873 6.050237

NA.1 NA NA NA NA NA NA
NA.2 NA NA NA NA NA NA


②.「滝」
coll2 <- collocate("001.txt", node="滝", span=3)
> collres2<-coll2[coll2$Total >= 10,]
> collres2
Term Before After Span Total
89 仕事 0 1 1 28
93 自分 0 1 1 13
105 生活 0 1 1 11
109 窓 0 2 2 11
112 滝 73 0 73 73

collS2 <- collScores(coll2, node="滝", span=3)
resT2 = collS2[collS2["T"] > 1.0,]
> resT2
Term Before After Span Total T MI
2 、 16 19 35 453 2.903587 0.9736835
3 。 18 2 20 368 1.234748 0.4661339
7 B 1 2 3 13 1.436764 2.5522905
9 あまり 1 1 2 5 1.275117 3.3458396
19 が 8 11 19 237 2.219787 1.0269520
23 こんな 1 2 3 10 1.504907 2.9308021
29 ただ 2 0 2 9 1.163839 2.4978427
31 だけ 2 5 7 34 2.140169 2.3876598
32 つ 2 0 2 2 1.358575 4.6677677
35 と 12 8 20 190 2.800659 1.4198402
42 の 11 24 35 583 2.039074 0.6096987
43 は 10 32 42 375 4.204236 1.5093384
45 まで 2 1 3 25 1.164191 1.6088740
54 以外 0 2 2 7 1.219478 2.8604128
60 何 0 3 3 28 1.096048 1.4453753
63 会話 0 2 2 3 1.330756 4.0828052
75 近頃 2 0 2 3 1.330756 4.0828052
92 自身 0 2 2 5 1.275117 3.3458396
109 窓 0 2 2 11 1.108201 2.2083361
NA NA NA NA NA NA NA
127 部屋 0 2 2 11 1.108201 2.2083361
130 方 0 2 2 11 1.108201 2.2083361
132 夢 0 2 2 9 1.163839 2.4978427
137 夜 1 1 2 12 1.080381 2.0828052
139 余 6 5 11 110 2.011782 1.3458396
NA.1 NA NA NA NA NA NA
NA.2 NA NA NA NA NA NA

> resMI2 = resT2[resT2["MI"] > 1.5,]
> resMI2
Term Before After Span Total T MI
7 B 1 2 3 13 1.436764 2.552291
9 あまり 1 1 2 5 1.275117 3.345840
23 こんな 1 2 3 10 1.504907 2.930802
29 ただ 2 0 2 9 1.163839 2.497843
31 だけ 2 5 7 34 2.140169 2.387660
32 つ 2 0 2 2 1.358575 4.667768
43 は 10 32 42 375 4.204236 1.509338
45 まで 2 1 3 25 1.164191 1.608874
54 以外 0 2 2 7 1.219478 2.860413
63 会話 0 2 2 3 1.330756 4.082805
75 近頃 2 0 2 3 1.330756 4.082805
92 自身 0 2 2 5 1.275117 3.345840
109 窓 0 2 2 11 1.108201 2.208336

NA NA NA NA NA NA NA
127 部屋 0 2 2 11 1.108201 2.208336
130 方 0 2 2 11 1.108201 2.208336
132 夢 0 2 2 9 1.163839 2.497843
137 夜 1 1 2 12 1.080381 2.082805

NA.1 NA NA NA NA NA NA
NA.2 NA NA NA NA NA NA

結果:
 仕事に没頭して終わらせた。
 主人公は最近窓のある部屋で夜夢を見ている。


つづく。
参考:
 The R Tips―データ解析環境Rの基本技・グラフィックス活用集
 Rによるデータサイエンス - データ解析の基礎から最新手法まで
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

コメント

プロフィール

kumagonjp2

Author:kumagonjp2
Python,Django,R,Mongo,MySQL,Struts,Spring,データマイニングなどサーバー関係のメモを残していきます。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
雪が3Dで降るブログパーツ ver2

マウスで見る方向変えられます

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。