Rでテキストマイニングを試してみる(4)N-gramの比較
こんにちは。前回に続き、N-gramを取り上げます。
RMeCabには、N-gramをする関数がいろいろあるので、今回は試してみます。
Ngram関数を使ってみる
このNgram関数は、前回使った関数です。比較のためにプログラムと結果を載せることにします。
library(RMeCab)
result0<-Ngram(file.choose(),type = 1)
head(result0[order(result0$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
Ngram関数では、形態素ごとのつながりは [前の形態素-続く形態素] で表されています。
NgramDF関数を使ってみる
次に、NgramDF関数を使ってみます。
library(RMeCab)
result1 <- NgramDF(file.choose(),type = 1)
head(result1[order(result1$Freq,decreasing = TRUE),],10)
実行結果です。
Ngram1 Ngram2 Freq
124 の 私 8
497 私 心 5
27 こと ない 4
288 果物 屋 4
468 私 それ 4
563 重い さ 4
102 ない 私 3
226 暗い の 3
232 以前 私 3
316 街 街 3
形態素の前後関係は、Ngram1・Ngram2というように別の列で表されています。
docNgram関数を使ってみる
次にdocNgram関数を使ってみます。
この関数は、今までのようにファイルを選択して1つの文に対してN-gramを求めることもできますが、ディレクトリ(フォルダ)を選択してフォルダ内の文に対してもN-gramを求めることができます。
library(RMeCab)
result2 <- docNgram(choose.dir(),type = 1)
head(result2[order(result2[,1],decreasing = TRUE),],10)
「檸檬」の作者の他の作品「桜の樹の下には」「愛撫」との比較をしてみましょう。
上のプログラムで、「檸檬」「桜の樹の下には」「愛撫」の文章が含まれているフォルダを実行時に指定します。
「愛撫」のN-gramの出現回数順で表示します。
aibu.txt lemon.txt sakurano_kino_shitaniwa.txt
[猫-耳] 7 0 0
[の-私] 5 8 0
[化粧-道具] 3 0 0
[私-それ] 3 4 0
[耳-の] 3 0 0
[切符-切り] 3 0 0
[爪-ない] 3 0 0
[猫-手] 3 0 0
[こと-空想] 2 0 0
[こと-私] 2 2 0
「愛撫」の中では[猫-耳]のつながりが多く出てくるようです。
「愛撫」と「檸檬」では、[の-私]と[私-それ]あたりが共通して多いようです。
「桜の樹の下には」では、このつながりは出現しないようです。
今回は短いですが、これでおしまいにします。それではまた。
ディスカッション
コメント一覧
まだ、コメントがありません