php MeCab(形態素解析)のインストール

2011/04/08

やりたいことは、PHPで「わかち」ってヤツをやりたい。

結論からいうとeclipseでのやり方は不明…きっと何か方法はあるはず。

まずは「windows版」ってのがあったのでDLとインスト

参考:http://www.ipentec.com/document/document.aspx?page=windows-mecab-install

http://mecab.sourceforge.net/」からダウンロード。
ダウンロードしたファイルを実行。

インストール完了後、起動してみたけど…求めているものと根本的に違う。
やりたいことは、PHPで文章を投げたら各単語がどうのこうのってしたい。

「windows版」ってやつはPHPの機能拡張というより独立したアプリっぽい。

「windows版」ってヤツがPHPでも使えるとか…

http://handsrecs2nd.seesaa.net/article/140090025.html
http://handsrecs2nd.seesaa.net/article/140172059.html

Xamppにコピペ。

よくわかんないけど…ダメっぽい。

PHP版ってヤツのDLとインストール

http://mecab.sourceforge.net/

MeCab本体のダウンロード

http://mecab.sourceforge.net/src」から「mecab」の「0.98」と中に入っていき「mecab-0.98.tar.gz」をダウンロード。

MeCab用の辞書のダウンロード

「IPA 辞書」を推奨しているので、同じく「http://mecab.sourceforge.net/src」から「mecab-ipadic」の「2.7.0-20070801」と中に入っていき「mecab-ipadic-2.7.0-20070801.tar.gz」をダウンロード。

ファイルのアップ

teratermでインスト作業するために適当なフォルダへコピー。

[xxx]$ tar zxfv mecab-0.98.tar.gz
[xxx]$ cd mecab-0.98
[xxx mecab-0.98]$ phpize

とすると

Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module

この人はダレ?

http://kona.tonakaj.org/sc430/x2.html
で同じエラー発見。

phpizeって何者?

phpizeとは、拡張モジュールをビルドする低レベルなビルドツール。
autoconfやautomake m4等のビルドツールが別途必要になる。
これを使用することにより、PHPをソースから再コンパイルすることなく拡張モジュールをビルドすることができる。

意味わかんね…。わかんないけど下記をやればよさげ。

[xxx mecab-0.98]$ yum -y install php-devel

実行したらエラーが出てきた。

Loaded plugins: fastestmirror
You need to be root to perform this command.

ルート権限がいるっぽい。

[xxx mecab-0.98]$ sudo yum -y install php-devel

なんか成功したっぽいので再度「phpize」をしてみる。

[xxx mecab-0.98]$ phpize

結果は同じくダメ。

Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module

PECL 拡張モジュールをインストールしてみる。

まずはダウンロード(pdflib-2.1.8.tgz)。
http://pecl.php.net/package/pdflib

teratermでインスト作業するために適当なフォルダへコピー。

[xxx mecab-0.98]$ cd ../
[xxx]$ tar zxfv pdflib-2.1.8.tgz
[xxx]$ cd pdflib-2.1.8
[xxx pdflib-2.1.8]$ ./configure

また、エラー…。

-bash: ./configure: そのようなファイルやディレクトリはありません

調べると今度は「libxml2-devel」ってのがいるらしい。
参考:http://d.hatena.ne.jp/yohei-a/20100426/1272275098

[xxx pdflib-2.1.8]$ sudo yum install libxml2-devel

「y/N」って聞かれたから「y」と。
「Complete」したので気を取り直して「configure」。

[xxx pdflib-2.1.8]$ cd ../
[xxx]$ ./configure

また、エラー…。

-bash: configure: command not found

もうイヤだ…ってか先に「phpize」をしなくちゃ…。

[xxx]$ cd pdflib-2.1.8
[xxx pdflib-2.1.8]$ phpize
[xxx pdflib-2.1.8]$ ./configure

最後に「error」って文字が出てる。

configure: error:
PDFlib extension requires at least pdflib 4.0.x.
See config.log for more information.

「pdflib」ってのが必要?
気を取り直して…「pdflib-2.1.8」を削除して再度やり直す。

[xxx]$ tar zxfv pdflib-2.1.8.tgz
[xxx]$ cd pdflib-2.1.8
[xxx pdflib-2.1.8]$ phpize
[xxx pdflib-2.1.8]$ ./configure –enable-64bit

だらだら~と何かがでてきて最後の3行にエラーがでてる。

configure: error:
PDFlib extension requires at least pdflib 4.0.x.
See config.log for more information.

関係ないかもしれないけどapachの再起動。

[xxx pdflib-2.1.8]$ sudo /sbin/service httpd restart

再起動後、こりずに「configure」をやってみる。

[xxx pdflib-2.1.8]$ ./configure

まだ…だらだら~と何かがでてきて最後の3行にエラーがでてる。

configure: error:
PDFlib extension requires at least pdflib 4.0.x.
See config.log for more information.

投げやりにMeCabに戻ってみる。

[xxx pdflib-2.1.8]$ cd ../mecab-0.98
[xxx mecab-0.98]$ ./configure –with-charset=utf8
[xxx mecab-0.98]$ make

…?
なんかエラーが出なくなってる…。

[xxx mecab-0.98]$ make check
[xxx mecab-0.98]$ su –
[xxx]$ cd /xxx/mecab-0.98
[xxx mecab-0.98]$ make install

続けて辞書もインストール。

[xxx mecab-0.98]$ cd ../
[xxx]$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
[xxx]$ cd mecab-ipadic-2.7.0-20070801
[xxx mecab-ipadic-2.7.0-20070801]$ ./configure –with-charset=utf8

インストール終了したっぽい?

[xxx]$ mecab

っていれて、適当な文字をいれたら形態素分析してくれた…。
とりあえず完了。

MeCab extensionのインストール

http://page2.xrea.jp/#php_mecab
にデータがあるらしいけどページが表示されない…。
しょうがないのでGoogleで検索してキャッシュを表示。
対象箇所を探してきてダウンロード。こっちはあった…?
どういうことだろう…まぁ気にしないさ。

ダウンロードしたファイルをteratermでインスト作業するために適当なフォルダへコピー。

再度、teratermにもどって解凍・インストール。

[xxx]$ tar xfvz php_mecab-0.2.0.tgz
[xxx]$ cd php_mecab-0.2.0
[xxx php_mecab-0.2.0]$ phpize
[xxx php_mecab-0.2.0]$ ./configure –with-php-config=/usr/bin/php-config –with-mecab=/usr/local/bin/mecab-config
[xxx php_mecab-0.2.0]$ make

とりあえずココまでは順調。

Don't forget to run 'make test'.

「make test」の実行を忘れるなっていうから忘れずに実行してみる。

[xxx php_mecab-0.2.0]$ make test
[xxx php_mecab-0.2.0]$ make install

何かまたエラー…。

Installing shared extensions: /usr/lib/php/modules/
cp: cannot create regular file '/usr/lib/php/modules/#INST@28439#': Permission denied
make: *** [install-modules] エラー 1

「Permission denied」ってある。
「/usr/lib/」に「cp」をしようとして「Permission denied」って意味かな…。

[xxx php_mecab-0.2.0]$ sudo make install

php.iniの編集

「php.ini」の居場所不明…。
phpinfoで所在確認。
バックアップをとって「extension=mecab.so」を追加。

[xxx php_mecab-0.2.0]$ sudo –
[xxx]$ vi /***/php.ini

「extension=mecab.so」を最後の行に追加、保存・終了。

[xxx]$ service httpd restart

PHPで形態素分析のテスト

下記ファイルを「mecabtest.php」って名前で作成。
http://www.programming-magic.com/20080808173652/

<?php
$str = "MeCab extensionは、MeCabを使って文章の形態素解析をするPHP用の拡張モジュールです。";
$result = mecab_split($str);
print_r($result);
?>

teratermで試してみる。

[xxx]$ php xxx/mecabtest.php

成功した…。

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい