お知らせ

ただいま、シンタックスハイライターの設定を見直しております。
プログラムが見にくくなっているページがありますが、ご容赦ください。

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

「愛撫」の中では[猫-耳]のつながりが多く出てくるようです。

「愛撫」と「檸檬」では、[の-私]と[私-それ]あたりが共通して多いようです。

「桜の樹の下には」では、このつながりは出現しないようです。

今回は短いですが、これでおしまいにします。それではまた。

この記事を書いた人
春日井 優

高校で情報科という教科を担当しています。以前は数学科も担当していました。(今でも数学科の教員免許状は有効です。)プログラムを覚えたのは、「ゲームセンターあらし」という漫画のキャラクターがBASICを解説する「こんにちはマイコン」を読んだことがきっかけでした。

Posted by kasugai