RMeCabを使う (1)

 今回は、RMeCabパッケージを使った日本語テキストの分析を扱います。分析データは、石田・小林 (2013)サポートサイトで公開されているデータの一部を使います。こちらのページの一番下にあるzipファイルのいずれか*1をダウンロードし、「PM」というフォルダを(Windowsユーザーであれば)Cドライブの直下にコピーしてください。*2
 では、手始めにAbe.txtの冒頭部分を形態素解析してみましょう。短い文章を解析する場合は、RMeCabC関数を使います。その際、第2引数に1を指定すると、解析結果が基本形で返されます。

# パッケージの読み込み
library(RMeCab)
# 形態素解析
RMeCabC.result <- RMeCabC("この度、私は、内閣総理大臣に任命されました。")
# 基本形で解析
RMeCabC.result.2 <- RMeCabC("この度、私は、内閣総理大臣に任命されました。", 1)
# 解析結果の表示
unlist(RMeCabC.result)
unlist(RMeCabC.result.2)

 上記のスクリプトを実行すると、以下のような結果が表示されます。

連体詞   名詞   記号   名詞   助詞   記号   名詞   名詞   名詞   助詞   名詞   動詞 
"この"   "度"   "、"   "私"   "は"   "、" "内閣" "総理" "大臣"   "に" "任命"   "さ" 
  動詞 助動詞 助動詞   記号 
  "れ" "まし"   "た"   "。" 
連体詞   名詞   記号   名詞   助詞   記号   名詞   名詞   名詞   助詞   名詞   動詞 
"この"   "度"   "、"   "私"   "は"   "、" "内閣" "総理" "大臣"   "に" "任命" "する" 
  動詞 助動詞 助動詞   記号 
"れる" "ます"   "た"   "。" 

 また、ファイルを丸ごと読み込んで形態素解析をするには、RMeCabText関数を使います。

# ファイルを読み込んで形態素解析
RMeCabText.result <- RMeCabText("C:/PM/Abe.txt")
# 結果の確認
head(RMeCabText.result, 10)

 上記のスクリプトを実行すると、以下のような結果が表示されます。*3

[[1]]
 [1] " "   "記号" "空白" "*"    "*"    "*"    "*"    " "   " "   " "  

[[2]]
 [1] "この"   "連体詞" "*"      "*"      "*"      "*"      "*"      "この"   "コノ"   "コノ"  

[[3]]
 [1] "度"       "名詞"     "非自立"   "副詞可能" "*"        "*"        "*"        "度"       "タビ"     "タビ"    

[[4]]
 [1] "、"   "記号" "読点" "*"    "*"    "*"    "*"    "、"   "、"   "、"  

[[5]]
 [1] "私"     "名詞"   "代名詞" "一般"   "*"      "*"      "*"      "私"     "ワタシ" "ワタシ"

[[6]]
 [1] "は"     "助詞"   "係助詞" "*"      "*"      "*"      "*"      "は"     "ハ"     "ワ"    

[[7]]
 [1] "、"   "記号" "読点" "*"    "*"    "*"    "*"    "、"   "、"   "、"  

[[8]]
 [1] "内閣"     "名詞"     "一般"     "*"        "*"        "*"        "*"        "内閣"     "ナイカク" "ナイカク"

[[9]]
 [1] "総理"   "名詞"   "一般"   "*"      "*"      "*"      "*"      "総理"   "ソウリ" "ソーリ"

[[10]]
 [1] "大臣"     "名詞"     "一般"     "*"        "*"        "*"        "*"        "大臣"     "ダイジン" "ダイジン"

 次に、RMeCabFreq関数を使って、ワードリストを作成してみましょう。

# ワードリスト
# データが保存されているフォルダの指定
setwd("C:/PM")
# 単語の頻度を集計
RMeCabFreq.result <- RMeCabFreq("C:/PM/Abe.txt")
# 頻度順に並び替え
RMeCabFreq.result.sorted <- RMeCabFreq.result[order(RMeCabFreq.result$Freq, decreasing = TRUE), ]
# 頻度上位10位までを表示
head(RMeCabFreq.result.sorted, 10)

 上記のスクリプトを実行すると、以下のような結果が表示されます。

     Term  Info1    Info2 Freq
1193   、   記号     読点  377
83     の   助詞   連体化  294
80     を   助詞   格助詞  242
94   する   動詞     自立  171
64     に   助詞   格助詞  147
1187   。   記号     句点  146
33   ます 助動詞        *  131
28     だ 助動詞        *   87
52     て   助詞 接続助詞   82
57     が   助詞   格助詞   75

 作成したワードリストをファイルに出力するには、以下のような処理を行います。*4

# 結果をファイルに出力
write.table(RMeCabFreq.result.sorted, file = "Wordlist.csv", sep = ",")

 ワードリストから任意の条件に合致する単語を検索する場合は、grep関数を使います。

# ワードリストから任意の条件に合致する単語を検索
# 以下の例では、「国」という文字を含む語を検索
RMeCabFreq.result.sorted[grep("国", RMeCabFreq.result.sorted$Term), ]

 上記のスクリプトを実行すると、以下のような結果が表示されます。

       Term Info1    Info2 Freq
656      国  名詞     一般   28
663    国民  名詞     一般   17
720  我が国  名詞     一般   12
664    国際  名詞     一般    9
661    国家  名詞     一般    5
966    国連  名詞 固有名詞    5
1063     国  名詞     接尾    5
573    両国  名詞     一般    2
662    国政  名詞     一般    2
890    隣国  名詞     一般    2
979    米国  名詞 固有名詞    2
615    全国  名詞     一般    1
657    国々  名詞     一般    1
658    国交  名詞     一般    1
659    国債  名詞     一般    1
660    国内  名詞     一般    1
678    外国  名詞     一般    1
960    中国  名詞 固有名詞    1
970  日本国  名詞 固有名詞    1
984    韓国  名詞 固有名詞    1

 なお、「国」という語のみを検索するには、以下のような処理を行います。

RMeCabFreq.result.sorted[grep("^国$", RMeCabFreq.result.sorted$Term), ]

 上記のスクリプトを実行すると、以下のような結果が表示されます。

     Term Info1 Info2 Freq
656    国  名詞  一般   28
1063   国  名詞  接尾    5

*1:WindowsユーザーはSJISを、MacユーザーはUTF8を選んでください。

*2:PMフォルダには、6人の内閣総理大臣による所信表明演説のデータが入っています。

*3:この結果から、単語の情報だけを抽出するには、unlist(sapply(RMeCabText.result, "[[", 1) ) のようにします。

*4:どこに保存されたかが分からなくなったら、getwd関数を使いましょう。

広告を非表示にする