カタカタブログ

SIerで働くITエンジニアがカタカタした記録を残す技術ブログ。Java, Oracle Database, Linuxが中心です。たまに数学やデータ分析なども。

MacでR+MeCabによる形態素解析をやってみた

自然言語処理でおなじみの形態素解析ツールMeCabをMac上のRから使えるようにしてみた。今回は環境構築の手順をメモ。
環境情報は以下。

  • Mac OS X El Capitan (10.11.3)
  • MeCab 0.996
  • R 3.2.3 (2015-12-10)

MeCabインストール

MeCabは、macではbrewで簡単にインストールできる。
まず、brewからmecabを探す。

$ brew search mecab
mecab            mecab-ipadic     mecab-jumandic   mecab-ko         mecab-ko-dic     mecab-unidic
homebrew/php/php53-mecab          homebrew/php/php55-mecab          homebrew/php/php70-mecab
homebrew/php/php54-mecab          homebrew/php/php56-mecab

色々ヒットするが、mecabがMeCab本体のパッケージとなる。dicで終わっているやつはそれぞれが辞書を表していて、形態素解析を行うためには単語をあらかじめこのように辞書ファイルとして登録しておく必要がある。いろいろな機関が辞書を提供しており、用途によって使い分けがあるようだが、今回は標準的なIPAの辞書(ipadic)を使ってみる。
今回はmecabmecab-ipadicの二つをインストールする。

MeCab本体とIPA辞書をインストールする。

$ brew install mecab
$ brew install mecab-ipadic

インストールに成功。mecabコマンドが正しく実行できることを確認。

$ mecab -v
mecab of 0.996

ちなみに辞書がないと以下のエラーになる。

$ mecab
param.cpp(69) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/dicrc

MeCabを使ってみる

まずRを介さず、直接MeCabを使ってみる。

mecabコマンドを実行すると、対話的に日本語を入力し、形態素解析の結果を表示してくれる。終了するときはCtrl-D。

$ mecab
今日はいい天気だ
今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
いい    形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気    名詞,一般,*,*,*,*,天気,テンキ,テンキ
だ      助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
EOS
明日は天気が悪い
明日    名詞,副詞可能,*,*,*,*,明日,アシタ,アシタ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
天気    名詞,一般,*,*,*,*,天気,テンキ,テンキ
が      助詞,格助詞,一般,*,*,*,が,ガ,ガ
悪い    形容詞,自立,*,*,形容詞・アウオ段,基本形,悪い,ワルイ,ワルイ
EOS

ワンライナーで実行するときはechoをパイプでつなぐ。

$ echo "Rからmecabを使って形態素解析を行ってみたいと思う" | mecab
R       名詞,固有名詞,組織,*,*,*,*
から    助詞,格助詞,一般,*,*,*,から,カラ,カラ
mecab   名詞,一般,*,*,*,*,*
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
使っ    動詞,自立,*,*,五段・ワ行促音便,連用タ接続,使う,ツカッ,ツカッ
て      助詞,接続助詞,*,*,*,*,て,テ,テ
形態素  名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析    名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
行っ    動詞,自立,*,*,五段・ワ行促音便,連用タ接続,行う,オコナッ,オコナッ
て      助詞,接続助詞,*,*,*,*,て,テ,テ
み      動詞,非自立,*,*,一段,連用形,みる,ミ,ミ
たい    助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
と      助詞,格助詞,引用,*,*,*,と,ト,ト
思う    動詞,自立,*,*,五段・ワ行促音便,基本形,思う,オモウ,オモウ
EOS

さらに別の辞書を使ってみる。UniDic辞書をインストールする。

$ brew install mecab-unidic

辞書は以下のように追加されている。

$ ls /usr/local/lib/mecab/dic
ipadic unidic

インストールしたUniDic辞書に切り替えて実行するには、-dオプションにインストールした辞書のパスを指定する。

$ mecab -d /usr/local/lib/mecab/dic/unidic
今日はいい天気だ
今日    キョー  キョウ  今日    名詞-普通名詞-副詞可能
は      ワ      ハ      は      助詞-係助詞
いい    イー    ヨイ    良い    形容詞-非自立可能       形容詞  連体形-一般
天気    テンキ  テンキ  天気    名詞-普通名詞-一般
だ      ダ      ダ      だ      助動詞  助動詞-ダ       終止形-一般
EOS

先ほどのIPA辞書の結果と比べると、今回の例では単語の分割のされ方は同じだが、フォーマット・得られる情報が違うことが分かる。当然、文によっては分割自体が異なることもあり得る。

RでMeCabを使う

続いてRからMeCabを実行してみる。RMeCabというRパッケージを使うと簡単らしい。
Rを実行し、以下のようにインストールする。

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

RMeCabの使い方は以下を参考
http://www.ic.daito.ac.jp/~mizutani/mining/rmecab_func.html


早速Rの中でMeCabを呼び出してみる。

library(RMeCab)
RMeCabC("今日はいい天気だ")
[[1]]
  名詞 
"今日" 

[[2]]
助詞 
"は" 

[[3]]
形容詞 
"いい" 

[[4]]
  名詞 
"天気" 

[[5]]
助動詞 
  "だ"

Rのlistとして、形態素解析結果が得られた。
また、他にもいくつか機能はあるが、多くはテキストファイルからの入力を前提としているので、テストファイルを用意する。

$ cat test.txt
今日はいい天気です。
明日の天気は雨の予報です。

これをRで以下のように呼び出す。

> RMeCabFreq("mecab/test.txt")
file = mecab/test.txt 
length = 10 
   Term  Info1    Info2 Freq
1  です 助動詞        *    2
2    は   助詞   係助詞    2
3    の   助詞   連体化    2
4  予報   名詞 サ変接続    1
5  天気   名詞     一般    2
6    雨   名詞     一般    1
7  今日   名詞 副詞可能    1
8  明日   名詞 副詞可能    1
9  いい 形容詞     自立    1
10   。   記号     句点    2

単語ごとの出現頻度が表示されている!

まとめ

MacにMeCabをインストールし、コマンドラインおよびRから実行できるところまで検証した。これで様々な自然言語の解析ができるようになったので、いろいろ試してみたい。

以上!

関連記事