mecabをインストールしてみた

日本語を扱う場合、形態素解析があると何かといろいろできて便利です。

そこで、サーバインストール型のmecabをインストールしてみました。途中なかなかうまくいきませんでしたが、それらも含めて載せたいと思います。

おおまかな流れは以下のようになります。

  • MeCab本体と辞書データをダウンロード

  • それぞれ展開してインストール

  • 動作検証

MeCab本体と辞書データをダウンロード

こちら(mecab.sourceforge.net)からMeCab本体(mecab-0.97.tar.gz)と辞書データ(mecab-ipadic 2.7.0-20070801)をダウンロードします。

展開してインストール

$ tar xzvf mecab-0.97.tar.gz

$ cd mecab-0.97

$ ./configure

$ make

まずは何もオプションを付けずに、インストールできるかどうか試みました。

$ make check

問題がないか調べます。すると、なにやらエラーが起こっているようで、以下のようなメッセージが現れました。

・・・

2 of 3 tests failed

・・・

上下の「・・・」は省略してます。

どうやらテストに失敗しているようです。早速調べると以下のような参考記事を発見。

mecab のインストール

無視してもよいのかな?と思い、そのままinstallを試みます。

make install

また、辞書データも同様にインスール。

$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz

$ cd mecab-ipadic-2.7.0-20070801

$ ./configure

$ make

$ su

make install

すると一応mecabコマンドがコマンド補足ででてくるようになったので、早速たたいてみます。

が、以下のようなエラーがでました。

$ mecab

tagger.cpp(147) [load_dictionary_resource(param)] param.cpp(71) [ifs] no such file or directory: /usr/lib/mecab/dic/ipadic/dicrc

うーん、なにか、まずい設定でもあったな?と思い、悪かったとこがなかったかを振り返ってみました。

そこで気になったが2点。

  • mecab本体の ./configure したときに、「no」が多発してた箇所があった

  • make test したときに、ライブラリが見つからないエラーメッセージがあった

./configure時の「no」の多発

「no」が集中的に出ていた部分の始まりは、「g77」というのもでした。

g77

なので、とりあえずこいつをいれてみます。

まず、yumで探してみると、パッケージを発見。

#yum search g77

・・・

compat-gcc-34-g77.i386

・・・

インストールします。

#yum install compat-gcc-34-g77.i386

これで再度、./configure を実行すると集中的な「no」は無くなりました。

make test時にライブラリが見つからない

エラー内容は以下

/usr/local/src/mecab-0.97/src/.libs/lt-mecab-dict-index: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

/usr/local/src/mecab-0.97/src/.libs/lt-mecab: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

どうも libiconv.so.2 が見つかっていないようです。そこで、このライブラリが無いのか、あるいは単に認識できていないのかを調べるため、探してみます。

$ find / -name libiconv.so.2

・・・

/usr/local/src/libiconv-1.12/lib/.libs/libiconv.so.2

/usr/local/lib/libiconv.so.2

・・・

お、ありました。ということは認識できてなさそうですね。そこで、一旦ライブラリのパスを環境に設定します。

$ export LD_LIBRARY_PATH=/usr/local/lib

念のため、再度、mecab本体を ./configure からやりなおし、make、make checkを実行してみると、

・・・

1 of 3 tests failed

・・・

お、どうやら一つ失敗が減ったようです。まだ少し気持ち悪いですが、まずこれで動作確認してみます。

% make install

・・・

$ mecab

tagger.cpp(147) [load_dictionary_resource(param)] param.cpp(71) [ifs] no such file or directory: /usr/lib/mecab/dic/ipadic/dicrc

おぅ・・・やはり同じエラーがでますね。

折れそうな心をなんとかしながら、冷静になってエラーを見てみます。

するとディレクトリが見つからないというエラーであることに気づきました。さらに「ipadic」というのはmecabの辞書データの名前だということも気づきました。辞書データはインストールしていたので、どこにあるか調べてみると、 /usr**/local**/lib/mecab/dic/ipadic/dicrc に存在していることが判明。「/local」がある分、階層が違いますね。

そりゃー見つからないわけだ。

では、次に、ここに辞書データがあることをmecabプログラムがどうやったら認識するか?が問題になります。

mecabプログラムに辞書ライブラリの場所を認識させる

まず、コンパイルオプションで上記のライブラリの場所を設定できないか、と考えたのですが、せっかくうまくいった(であろう)インストールをやり直すのが嫌だったのと、その他のソース系ファイル郡の管理がばらばらになりそうだったので、この方法はパス。

つぎに考えたのが、mecabコマンドに辞書ライブラリのパス指定が無いか?と思い、ヘルプを見てみました。

$ mecab —help

すると、なにやらそれっぽい「-d」オプションというものを発見!早速実行!

$ mecab -d /usr/local/lib/mecab/dic/ipadic/

するとエラーも出ずに、コマンド待ち状態のようになりました。

ついに成功!?

動作検証

ついにキタ!!と思い、適当に文章を打ってみたのですが。。。結果は、うまくいかず文字化けして返ってきました。。。。

ここ(mecab.sourceforge.net)によると、mecabのデフォルトはeuc-jpとのことなので、おそらく私のutf-8環境が原因だろうと思い、どこかで文字コードの指定ができないか、再調査。

mecabコマンドオプションにはそういったものは無かったので、 mecab本体の ./configure から見直すと、それっぽいオプション「–with-charset=utf8」「–enable-utf8-only」を発見。またまた、./configureからやり直してみました。が、結果は変わらず。。。

しかし、文字コードの問題に対する別の解決策があるようで、

また, mecab-dict-index の -t オプションを使って直接文字コードの異なる 辞書を再構築できます.

とのことなので早速実施

$ cd mecab-ipadic-2.7.0-20070801

$ /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -t utf-8

make install

さて、これで3度目の動作検証に挑みます。「すもももももももものうち」というのを打ってみます。

$ mecab -d /usr/local/lib/mecab/dic/ipadic/

すもももももももものうち

すると・・・・

すもも 名詞,一般,,,,,すもも,スモモ,スモモ

も 助詞,係助詞,,,,,も,モ,モ

もも 名詞,一般,,,,,もも,モモ,モモ

も 助詞,係助詞,,,,,も,モ,モ

もも 名詞,一般,,,,,もも,モモ,モモ

の 助詞,連体化,,,,,の,ノ,ノ

うち 名詞,非自立,副詞可能,,,*,うち,ウチ,ウチ

EOS

おーー、返ってきた><!!やっとこさ!!長かった!!

ってことで、これから日本語をごにょごにょするアプリが作れそうです。

とりあえず、PHPから呼び出せるようにするか。。。

参考サイト

http://mecab.sourceforge.net/

http://txqz.net/blog/2006/08/27/0253

http://d.hatena.ne.jp/soybeens/20080602

							Tags: [mecab](/tag/mecab), [インストール](/tag/%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab), [形態素解析](/tag/%e5%bd%a2%e6%85%8b%e7%b4%a0%e8%a7%a3%e6%9e%90)

		« [固定IPでwebサーバ公開](/92/%e5%9b%ba%e5%ae%9aip%e3%81%a7web%e3%82%b5%e3%83%bc%e3%83%90%e5%85%ac%e9%96%8b)

		[phpとmecabの連携](/105/php_mecab) »

	[画像未復旧: similar.png](http://blog.playispeace.com/img/similar.png) 関連ありそうなエントリー