読者です 読者をやめる 読者になる 読者になる

Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

mecabのインストールと辞書追加

PHP ツール

こんばんは。
今回はMacmecabを入れ、PHPで使えるようにしたいと思います。
なお、私の場合はphpenvでPHPを管理しているので、以下はそちらに合わせた環境構成となります。

mecabインストール

まずはmecabのインストールです。
Homebrewで簡単に出来ます。ついでに辞書もインストールします。
辞書はipadicがデファクトスタンダードなようですのでこれをインストールします。

$ brew install mecab
$ brew install mecab-ipadic

# インストールが終わったらテストです
$ mecab
すもももももももものうち

テストしてみて結果が出ればOKです。
Homebrewでインストールした辞書は、必要最低限の構成しかないみたい(CSVとかがない)なので、ソースファイルをDLしてきて全てのファイルを移動しておきます。

$ wget http://code.google.com/p/mecab/downloads/detail?name=mecab-ipadic-2.7.0-20070801.tar.gz

$ cp ~/Downloads/mecab-ipadic-2.7.0-20070801/* /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic/

以上で必要最低限のことは終わりました。

辞書の追加

先ほどインストールしたipadicですが、今はその後継となる辞書があるようなのでそれをインストールして読み込ませます。
mecabはシステム辞書とユーザ辞書がありますが、今回はシステム辞書に追加します。

まずはこちらから最新版をDLし、解凍します(もしくはwgetで)。
その後、カレントディレクトリを解答したディレクトリにし、以下を実行。

# utf8オプションを付ける
$ ./configure --with-charset=utf8
$ make
$ make install

これで /usr/local/Cellar/mecab/0.996/lib/mecab/dicnaist-jdic がインストールされます。
以下のコマンドで確認出来ます。

$ mecab -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/naist-jdic/

naist-jdicを標準の辞書にする場合は、以下のファイルを編集します。
/usr/local/etc/mecabrc

; コメントアウト
;dicdir =  /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic
; 以下の行を追加
dicdir =  /usr/local/Cellar/mecab/0.996/lib/mecab/dic/naist-jdic

これで辞書の追加は終わりです。

php-mecabのインストール

最後に、mecabPHPで使えるようにしたいと思います。
php-mecabというスクリプトがあるので、これを使いたいと思います。

まず、こちらから最新版をDLし解凍。
その後カレントディレクトリを移動し、以下のコマンドを実行

$ phpize
$ ./configure --with-php-config=/Users/{username}/.phpenv/versions/5.6.4/bin
php-config --with-mecab=/usr/local/bin/mecab-config
$ make
$ make test
$ make install

これで以下のようなメッセージが表示されればOKです。

Installing shared extensions: /Users/{username}/.phpenv/versions/5.6.4/lib/php/extensions/

上記のディレクトリにmecab.soがあると思います。
このモジュールをPHPに読み込ませます。

# ~/.phpenv/versions/5.6.4/etc/conf.dに mecab.ini を作成します(もしくはコピーしてリネームで)。

$ vim mecab.ini
# 以下を記述
; Enable dbase extension module
extension=mecab.so

# apache 再起動
$ sudo apachectl restart

# 以下のコマンドで確認。mecabが読み込まれていればOK
$ php -i |grep -i "mecab"
$ php -m | grep mecab

一応phpinfoでも確認してみると良いと思います。
これでPHPで使えるようになったのでテストしてみましょう。

<?php
$result = mecab_split("テスト用文字列です");
print_r($result);
?>

あるいは以下のコードでも確認できるみたいです。

<?php
$mecab = new MeCab_Tagger();
$nodes = $mecab->parseToNode("テスト用文字列です");
foreach($nodes as $node){
    echo $node->getId()."<br />";
    echo $node->getSurface()."<br />";
    echo $node->getStat()."<br />";
    echo $node->getLength()."<br />";
    echo $node->getFeature()."<br />";
}
?>

以上です。
まぁ簡単でしたね!(モジュールがPHPに読み込まれなくて詰まりましたが・・・)
それでは。

参考にさせていただいたサイト

Ruby - Macにmecabインストール - Qiita

かいはつにっき

恵比寿のベンチャーで働くエンジニアのメモ帳|【mecab】mecabにnaist-jdic辞書を入れて単語を追加してみる

ローカルでCakePHPを動かしてmecab_splitを使ってみる(mac)|SystemTelescope

PHPでMecab利用 - リハビリ日記

さくらVPSにMeCabをインストールしてPHPから利用(CentOS6.4+PHP5.3.3/5.4.2) - 青春B■雑記blog‐青酸カリ カラメルシロップ味‐