Mac
R
mecab
ggplot2
形態素解析

【R】【MeCab】RMeCabのインストールと形態素解析

Rで形態素解析をしてみたので、インストールから簡単なデモまで一通り説明します。
Rを使って形態素解析をすると、いろんなソフトを行ったり来たりせずに一貫して、分析が進められるのでなかなか便利です。

設定した環境

  • iMac (27-inch, Mid 2010)
  • プロセッサ: 2.8 GHz Intel Core i5
  • メモリ: 12 GB 1333 MHz DDR3
  • OSバージョン: 10.11.6
  • R : 3.3.0

準備

Homebrewを入れる

MacにMeCabを入れるにはいくつか方法がありましたが、
Homebrewで入れるのが比較的簡単だったので、今回はHomebrewでMeCabをインストールします。

まずはHomebrewを入れていない人向けに簡単にHomebrewのインストールからしていきましょう。
以下のサイトに行くと指定のコマンドがあるのでそれをターミナルから実行します。

http://brew.sh/index_ja.html

インストールが完了したら、以下のコマンドを入れて正しくインストールされているか確認してみましょう。

$ brew doctor

何も問題がない場合は以下が表示されます。

$ brew doctor
Your system is ready to brew.

ちょっと問題があって、warningが表示されていても最初に以下のような表示であればとりあえず動きます。

$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

MeCabのインストール

MeCabをhomebrewでインストールしていきます。
ここでは、MeCabの辞書であるmecab-ipadicもまとめてインストールします。

$ brew install mecab
$ brew install mecab-ipadic

この2つが問題無くインストールできれば、MeCabの準備は完了です。

windowsの方へ

バイナリパッケージがあるので、以下のURLからダウンロードします。
インストールしたら、MeCabの準備は完了です。
http://taku910.github.io/mecab/#download

RMeCabのインストール

ここまできたらいよいよRでMeCabを使えるようにするステップです。
Rを起動して以下を実行します。

install.packages("RMeCab", repos = "http://rmecab.jp/R")

自動でRMeCabがインストールされます。
インストールが完了したら、早速試してみましょう!

RMeCabで簡単な形態素解析を実行する

単文で形態素解析ができるかテスト

それでは以下のようなスクリプトを実行してみましょう。

library(RMeCab)
res <- RMeCabC("すもももももももものうち")
unlist (res)

上記を実施すると以下のような結果が得ることができます。

    名詞     助詞     名詞     助詞     名詞     助詞     名詞 
"すもも"     "も"   "もも"     "も"   "もも"     "の"   "うち"

長文を形態素解析して名詞の個数をカウント

少し発展して次はちょっと長めの文章を形態素解析して、登場する名詞の個数を数えるコードを作ってみようと思います。

今回は日本語訳のスティーブ・ジョブス氏の演説を使ってみようと思います。

RMeCabでデータを読み込むにはテキストファイルになっている必要があるので、
まずは、テキストファイルにして作業ディレクトリに保存しておきます。

library(RMeCab)
library(ggplot2)

# 解析対象となるデータの読み込み
res <- RMeCabFreq("steve-jobs-speech.txt")

# 名詞だけを取り出してデータフレームres_nounへ
res_noun <- res[res[,2]=="名詞",]

# 2回以上登場する名詞の数。res[,4]で"Freq"列を参照
nrow(res_noun <- res[res[,2]=="名詞" & res[,4] > 1,])

# res_nounをFreqで降順ソート
res_noun[rev(order(res_noun$Freq)),]

さらに以下のコードで上位25位の頻出名詞を棒グラフで表します。

# 1列目と4列目を抜き出してデータフレームを作成する
res_noun2 <- data.frame(word=as.character(res_noun[,1]),
                        freq=res_noun[,4])

# 上位25位に絞り込む
res_noun2 <- subset(res_noun2, rank(-freq)<25)

# ggplotでグラフを描画する
ggplot(res_noun2, aes(x=reorder(word,freq), y=freq)) +
  geom_bar(stat = "identity", fill="grey") +
  theme_bw(base_size = 10, base_family = "HiraKakuProN-W3") +
  coord_flip()

speech.png

こうしてみると”私”や”人生”、”Apple”といった単語が多く、
この演説がいかに自分の体験や経験に基づいて構成されているのかがよく分かります。