MAMPのPHPにphp-mecabを導入する

with コメントはまだありません

MAMPPHPphpmecabを導入する方法ってあまり載ってないようなので書いておこうと思います。
mecab自体は入っている事を前提としているので注意。

環境

OSX 10.11.6
mecab 0.996
MAMP 4.0.6
PHP 7.0.12

MAMPが4系じゃない場合はアップデートして下さい。

導入

(1)phpmecabをダウンロード

git clone https://github.com/rsky/php-mecab.git
<

>

(2)mecabディレクトリに入る
cd php-mecab/mecab

(3)phpizeを実行
ここで、MAMPで使っているPHPphpizeを実行する必要がある。
フルパスで指定する。

/Applications/MAMP/bin/php/php7.0.12/bin/phpize
<

>

(4)./configureを実行
ここでも、MAMPで使っているPHPphp-configを指定する必要がある。

./configure <span class="synSpecial">--with-php-config=/Applications/MAMP/bin/php/php7.0.12/bin/php-config</span> <span class="synSpecial">--with-mecab</span>
<

>

(5)makeの実行

make
make test
sudo make install
<

>

(6)php.iniの修正
php.iniを開いて以下の一行を加える

#php.iniを開く
vi /Applications/MAMP/bin/php/php7.0.12/conf/php.ini
#以下の行を追加
extension=mecab.so
<

>

(7)php-mecabが導入されている事の確認
phpinfoの出力を参照し、mecabで検索してみましょう。
導入が成功していれば、以下のような部分があるはずです。

f:id:deeptoneworks:20161124114037p:plain

php-mecabを使用してみる

PHP7でphp-mecab名前空間を用いられるようになったため、これまで通りmecab_split()等と書いても使えないので注意。

Ex1 形態素に区切る

単純に形態素にだけ区切る場合は\Mecab\split()を使う。

$query = "トマトを5cm大に切る。";
$result = \Mecab\split($query);
print_r($result);
<

>

実行結果

Array ( [0] => トマト [1] => を [2] => 5 [3] => cm [4] => 大 [5] => に [6] => 切る [7] => 。 )<

>

Ex2 より詳細な情報を得る

$query = "トマトを5cm大に切る。";
$mecab = new \Mecab\Tagger();
$nodes = $mecab->parseToNode($query);
foreach($nodes as $node){
echo($node->getSurface()."<br/>"); #形態素の表示
echo($node->getFeature()."<br/>"); #解析結果の表示
}
<

>

実行結果

BOS/EOS,*,*,*,*,*,*,*,*
トマト
名詞,一般,*,*,*,*,トマト,トマト,トマト

助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
5
名詞,数,*,*,*,*,*
cm
名詞,一般,*,*,*,*,*

名詞,接尾,一般,*,*,*,大,ダイ,ダイ

助詞,格助詞,一般,*,*,*,に,ニ,ニ
切る
動詞,自立,*,*,五段・ラ行,基本形,切る,キル,キル

記号,句点,*,*,*,*,。,。,。
BOS/EOS,*,*,*,*,*,*,*,*<

>

Leave a Reply

© 2017 DEEPTONEWorks