Rでテキストマイニングを試してみる(3)N-gram
こんにちは。今回はRでN-gramを試してみます。
N-gramについては、以前Pythonを使って書いた記事があるのでリンクを貼っておきます。
RMeCab のN-gramの頻度を関数
RMeCabにはN-gramを求める関数がいろいろあるようです。
Ngram関数、NgramDF関数、NgramDF2関数、docNgram関数、docNgram2関数、docNgramDF関数あたりがN-gramの頻度を求めてくれそうです。
いろいろ試してみます。
RMeCab の Ngram関数
Ngram関数を使って、バイグラムの頻度を出してみます。
RMeCabのヘルプを見ると次のように書かれています。
Ngram
Description
Ngram returns data frame of N-gram. Each item of N-gram makes one column.Usage
Ngram(filename, type = 0, N = 2, pos = “Default", dic = “", mecabrc = “", etc = “" )Arguments
filename a file
type Default being 0.
N N-gram. Default being 2
pos argument3. Default being noun and adjective.
dic to specify user dictionary, e.x. ishida.dic
mecabrc not implemented (to specify mecab resource file)
etc other options to mecabValue
returns a data frame.Author(s)
Motohiro ISHIDA ishida.motohiroあっとgmail.com (引用時にメールアドレスを一部変更)References
Documentation for package ‘RMeCab’ version 1.04
http://www.amazon.co.jp/dp/4627848420
引数がいろいろありますが、typeとNを変えて試していきます。
対象の文章は、前回に続き梶井基次郎「檸檬」です。
この後は、ひたすらRのコマンドとその結果を載せていきます。
文字単位でのバイグラム
文字単位でバイグラムの頻度を求めるコマンドです。
上位10件を表示してみます。
library(RMeCab)
result0<-Ngram(file.choose(),type = 0)
head(result0[order(result0$Freq,decreasing = TRUE),],10)
実行結果です。
Ngram Freq
637 [っ-た] 90
548 [た-。] 67
638 [っ-て] 44
490 [し-て] 40
660 [て-い] 39
1926 [私-は] 39
539 [そ-の] 37
185 [い-た] 29
935 [の-だ] 29
542 [そ-れ] 26
形態素単位のバイグラム
形態素単位でバイグラムの頻度を求めるコマンドです。
主な変更点は、type引数を1に変えることです。
library(RMeCab)
result1<-Ngram(file.choose(),type = 1)
head(result1[order(result1$Freq,decreasing = TRUE),],10)
実行結果です。
Ngram Freq
124 [の-私] 8
497 [私-心] 5
27 [こと-ない] 4
288 [果物-屋] 4
468 [私-それ] 4
563 [重い-さ] 4
102 [ない-私] 3
226 [暗い-の] 3
232 [以前-私] 3
316 [街-街] 3
品詞のバイグラム
形態素の品詞によるバイグラムを求めるコマンドです。
主な変更点は、type引数を2に変えることです。
library(RMeCab)
result2<-Ngram(file.choose(),type = 2)
head(result2[order(result2$Freq,decreasing = TRUE),],10)
実行結果です。
Ngram Freq
67 [名詞-助詞] 610
29 [助詞-名詞] 321
27 [助詞-動詞] 316
51 [動詞-助詞] 171
52 [動詞-助動詞] 155
12 [記号-名詞] 129
38 [助動詞-名詞] 121
68 [名詞-助動詞] 117
71 [名詞-名詞] 112
32 [助動詞-記号] 110
文字単位でのトリグラム
次にトリグラムの頻度を求めてみます。
主な変更点は、N=3という引数を追加することです。
library(RMeCab)
result03<-Ngram(file.choose(),type = 0,N=3)
head(result03[order(result03$Freq,decreasing = TRUE),],10)
実行結果です。
Ngram Freq
1177 [っ-た-。] 39
502 [か-っ-た] 20
1260 [て-い-た] 19
1375 [と-い-う] 17
1158 [だ-っ-た] 15
240 [あ-っ-た] 14
1265 [て-い-る] 14
991 [た-。- ] 12
1062 [た-の-だ] 12
1476 [な-か-っ] 12
文末の表現と思われるものが多そうです。
形態素単位のトリグラム
次に形態素単位でトリグラムの頻度を求めてみます。
library(RMeCab)
result13<-Ngram(file.choose(),type = 1,N=3)
head(result13[order(result13$Freq,decreasing = TRUE),],10)
実行結果です。
Ngram Freq
29 [こと-ない-私] 3
100 [どこ-の-私] 2
128 [の-果物-屋] 2
421 [胸-一-杯] 2
473 [香水-壜-煙管] 2
525 [私-画-本] 2
526 [私-街-街] 2
545 [私-心-圧] 2
563 [私-変-くすぐったい] 2
874 [変-くすぐったい-気持] 2
頻度が少なくなってしまいました。
品詞のトリグラム
品詞でのトリグラムの頻度を求めてみます。
library(RMeCab)
result23<-Ngram(file.choose(),type = 2,N=3)
head(result23[order(result23$Freq,decreasing = TRUE),],10)
実行結果です。
Ngram Freq
246 [名詞-助詞-名詞] 264
111 [助詞-名詞-助詞] 219
244 [名詞-助詞-動詞] 183
98 [助詞-動詞-助詞] 120
184 [動詞-助詞-動詞] 103
99 [助詞-動詞-助動詞] 99
41 [記号-名詞-助詞] 95
263 [名詞-名詞-助詞] 81
193 [動詞-助動詞-名詞] 68
149 [助動詞-名詞-助詞] 63
特徴があるのかな・・・?
今回はこれでおしまいにします。それではまた。
ディスカッション
コメント一覧
まだ、コメントがありません