はじめてのMecabは失敗に終わりました。
いや、失敗じゃないんだけど、、、phpで実行できなかった。
っつーことで、そんときの話をメモ
環境
# mac $ sw_vers ProductName: Mac OS X ProductVersion: 10.10.3 BuildVersion: 14D131 # php $ php -v PHP 5.5.20 (cli) (built: Feb 25 2015 23:30:53) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
mecab
$ tar xvzf mecab-0.996.tar.gz $ cd mecab-0.996/ $ ./configure $ make $ make check $ sudo make install
ipa-dicをインストール
$ tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz $ cd mecab-ipadic-2.7.0-20070801/ $ ./configure --with-charset=utf8 $ make $ sudo make install
動作テスト
コンソール上で実行ができます。
$ mecab すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS
おおお! すごい! (Ctrl + D で解除できます)
$ mecab ガンダムは素晴らしいモビルスーツです。 ガン 名詞,一般,*,*,*,*,ガン,ガン,ガン ダム 名詞,一般,*,*,*,*,ダム,ダム,ダム は 助詞,係助詞,*,*,*,*,は,ハ,ワ 素晴らしい 形容詞,自立,*,*,形容詞・イ段,基本形,素晴らしい,スバラシイ,スバラシイ モビルスーツ 名詞,一般,*,*,*,*,* です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS
あ、ガンダムは認識しないのね。この辺は登録すればいけるのかな?
php_mecabをインストール
続いて、PHPからつかえるようにライブラリを追加します。
$ sudo pear channel-discover pecl.opendogs.org
$ sudo pear install opendogs/mecab-beta # 途中のメッセージに??? # 的当にnoを入力 specify pathname to mecab-config [no] : no # が、noだとエラーになった。。。 checking for mecab-config... no configure: error: mecab-config not found ERROR: `/private/tmp/pear/temp/mecab/configure --with-mecab=no' failed
どうやら、mecabさんのconfigファイルを指定してあげればいいらしい。
specify pathname to mecab-config [no] : ~/mecab-0.996/mecab-config
うまくいった。
php.iniにも設定を追加
- php.ini
# どこに記述すればいいのかわからなかったので、ファイルの一番最後に記述しました。 extension=mecab.so
念のため、Webサーバは再起動(使ってなかったらいいです)
$ sudo apachectl -k restart
動作テスト(php版)
テスト用のソースをお借りしました。
https://gist.github.com/masayuki5160/4ef3606257af9a1df1d4
$ php test.php PHP Warning: MeCab_Tagger::__construct(): /SourceCache/MeCab/MeCab-666.7/src/tagger.cpp(134) [load_dictionary_resource(param)] /SourceCache/MeCab/MeCab-666.7/src/param.cpp(71) [ifs] no such file or directory: ~/mecab/dicrc in ~/mecab/test.php on line 6
・・・・?
dicrcのパスが間違っているっぽい
パスを指定してあげる。
- test.php
// 辞書ファイルをインストールしたディレクトリを指定 $options = array('-d', '~/mecab-ipadic-2.7.0-20070801'); $mecab = new MeCab_Tagger($options);
$ php test.php libc++abi.dylib: terminating with uncaught exception of type marisa::Exception teAbort trap: 6
/(^o^)\
ここから本当に地獄だ・・・・!
一度アンインストール
うまくいかない場合は、アンインストールしてみな。という記述が。
$ sudo pear uninstall opendogs/mecab-beta
今度はソースからインストールします。
$ wget https://github.com/downloads/rsky/php-mecab/php-mecab-0.5.0.tgz $ tar xzvf php-mecab-0.5.0.tgz $ cd php-mecab-0.5.0 $ phpize $ ./configure --with-php-config=${任意のディレクトリ} --with-mecab=${mecabをインストールしたところのconfig path} $ make $ sudo make install
ふつうに難なくインストールできました。
もう一度テスト
$ php test.php libc++abi.dylib: terminating with uncaught exception of type marisa::Exception teAbort trap: 6
\(^o^)/
なーぜぇー?
色々調べてみたけど、どうやらmacでしか発生しない問題っぽい。
同士がいないか、生まれて初めて、QAサイトを利用してみました。
頼む。解決した人でてきてください!(その間、私も悪あがいてみる)
こんなに探したのに、いっぱつで解決できる方がいたら、俺は無能でしょうorz