UbuntuにMeCabをインストールしてPHPで使うまで。

 なんかMeCab何回も入れなおして、そのたびに必ずなにか起こってたのですが、もうさすがにうんざりなのでまとめときます。

MeCabを入れる

 MeCabのファイルをとってくる

 http://mecab.googlecode.com/files/mecab-0.98.tar.gz

 0.98でないとPHPでよめない!!みたいな記事を散々見てきたので0.98です。wget で取ります。

 hoge$ wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz

 で、解凍します

hoge$ tar zxfv mecab-0.98.tar.gz

 解凍したMeCabの中に移動

hoge$ cd mecab-0.98

 公式には何も書いてないのですが、UTF-8でインストールしないと後でphpとかと連携するときにめんどくさい処理をかまさなければ
ならなくなるので、

mecab-0.98$ ./configure --with-charset=utf8

をつける。実行。

checking if g++ supports stl <list> (required)... configure: WARNING: g++ stl <list> does not work

checking if g++ supports stl <map> (required)... configure: WARNING: g++ stl <map> does not work

checking if g++ supports stl <set> (required)... configure: WARNING: g++ stl <set> does not work

checking if g++ supports stl <queue> (required)... configure: WARNING: g++ stl <queue> does not work

checking if g++ supports stl <functional> (required)... configure: WARNING: g++ stl <functional> does not work

checking if g++ supports stl <algorithm> (required)... configure: WARNING: g++ stl <algorithm> does not work

んん?

最後に

configure: error: Your compiler is not powerful enough to compile MeCab.         If it should be, see config.log for more information of why it failed.

とエラー。

g++コンパイラがなかったのでこんなことになるのでした。install。

mecab-0.98$ sudo apt-get install g++

終わったらもう一度

mecab-0.98$ ./configure --with-charset=utf8

そしてmake

mecab-0.98$ make

なんかズラズラとコンソールが流れますがしばらく放置。私のPCでは30秒ぐらいだった。

makeinstallする

mecab-0.98$ sudo make install

すぐ終わります。

mecab-0.98$ sudo ldconfig

これでmecab本体は終わり。

IPA辞書を入れる

でもこのままでは動かない。次は辞書をいれます。

いまmecabのディレクトリにいるので上へ。

mecab-0.98$ cd ..

辞書の場所は

http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz

これなので、またwgetで取る。

hoge$ wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz

解凍

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

解凍した辞書の中へ。

hoge$ cd mecab-ipadic-2.7.0-20070801/

こちらもutf8をつける

mecab-ipadic-2.7.0-20070801$ ./configure --with-charset=utf8

ちゃんと出来るはず。

そしてmake

mecab-ipadic-2.7.0-20070801$ make

インストール

mecab-ipadic-2.7.0-20070801$ sudo make install

できた!

実行してみる

ディレクトリはどこでもいいのでmecabって打ってみましょう。

mecab-ipadic-2.7.0-20070801$ mecab

これで入力モードになります。適当に文字を打ってみる。

いいぜ、てめえがなんでも思い通りに出来るってなら、まずはそのふざけた幻想をぶち殺す

いい     形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
ぜ     助詞,終助詞,*,*,*,*,ぜ,ゼ,ゼ
、     記号,読点,*,*,*,*,、,、,、
てめえ     名詞,代名詞,一般,*,*,*,てめえ,テメエ,テメー
が     助詞,格助詞,一般,*,*,*,が,ガ,ガ
なん     名詞,代名詞,一般,*,*,*,なん,ナン,ナン
でも     助詞,副助詞,*,*,*,*,でも,デモ,デモ
思い通り     副詞,助詞類接続,*,*,*,*,思い通り,オモイドオリ,オモイドーリ
に     助詞,副詞化,*,*,*,*,に,ニ,ニ
出来る     動詞,自立,*,*,一段,基本形,出来る,デキル,デキル
って     助詞,格助詞,連語,*,*,*,って,ッテ,ッテ
なら     接続詞,*,*,*,*,*,なら,ナラ,ナラ
、     記号,読点,*,*,*,*,、,、,、
まずは     接続詞,*,*,*,*,*,まずは,マズハ,マズワ
その     連体詞,*,*,*,*,*,その,ソノ,ソノ
ふざけ     動詞,自立,*,*,一段,連用形,ふざける,フザケ,フザケ
た     助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
幻想     名詞,サ変接続,*,*,*,*,幻想,ゲンソウ,ゲンソー
を     助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
ぶち     接頭詞,動詞接続,*,*,*,*,ぶち,ブチ,ブチ
殺す     動詞,自立,*,*,五段・サ行,基本形,殺す,コロス,コロス
EOS

わぁい

PHPでMeCabを使えるようにする

まずはpearを入れる必要がある。

hoge$ sudo apt-get install php-pear


そしてMeCabをPHPから使えるようにするやつを入れるため、pearのチャンネルを設定。

hoge$ pear channel-discover pecl.opendogs.orgAdding
 
not create lock file: fopen(/usr/share/php/.lock): failed to open stream: Permission denied

えっまじで?sudoつけてもう一度。

hoge$ sudo pear channel-discover pecl.opendogs.orgAdding 

Channel "pecl.opendogs.org" succeeded
Discovery of channel "pecl.opendogs.org" succeeded

いけた。

hoge$ pear remote-list -c open dogs
hoge$ pear install opendogs/mecab-beta

Cannot install, php_dir for channel "pecl.opendogs.org" is not writeable by the current user

ウイッス。sudoつけてもう一度

hoge$ sudo pear install opendogs/mecab-beta

downloading mecab-0.5.0.tgz …
Starting to download mecab-0.5.0.tgz (51,723 bytes)
.............done: 51,723 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
specify pathname to mecab-config [no] : 

こんなのが出てくるのでそのままenter

ズラズラっとログがでてきて最後に…

Build process completed successfully
Installing '/usr/lib/php5/20090626+lfs/mecab.so'
install ok: channel://pecl.opendogs.org/mecab-0.5.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=mecab.so" to php.ini

おk!!で、extension=mecab.soってのをphp.iniに追加します。

hoge$ vi /etc/php5/apache2/php.ini

追加する場所はどこでもいいです。わかりやすいので先頭につけてやりました。

apacheを再起動

$ sudo /etc/init.d/apache2 restart

phpが動く場所にmecabを呼び出すphpを書きましょう。私の場合は

/var/www$ vi mecabtest.php

にこう書きました。

<html>
<head><meta charset="utf8"></head>
        <body> 
        <?php  
        $str = "そんな上手い方法があるなら、僕たちインキュベイターの戦略も、もっと違ったものになっただろうね";
        $result = mecab_split($str);
        print_r($result);
        ?>     
        </body>
</html>

インデントおかしいですよね。すいません。このサーバまだvi設定してなかったのでこんなことに。

そしてブラウザから読み込んでみる!!!

Array ( [0] => そんな [1] => 上手い [2] => 方法 [3] => が [4] => ある [5] => なら [6] => 、 [7] => 僕 [8] => たち [9] => インキュベイター [10] => の [11] => 戦略 [12] => も [13] => 、 [14] => もっと [15] => 違っ [16] => た [17] => もの [18] => に [19] => なっ [20] => た [21] => だろ [22] => う [23] => ね )

完了です。