PHPで形態素解析エンジンであるMeCabを使えるようにする為の手順をメモしておく。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
環境
OS:Ubuntu19.10
Apache 2.4.41
PHP 7.3.11-1+ubuntu19.10.1+deb.sury.org+6
※PHP8.3でも動作することは確認済み
Server API FPM/FastCGI
上記以外で重要な値
Loaded Configuration File:/etc/php/7.3/fpm/php.ini
Scan this dir for additional .ini files:/etc/php/7.3/fpm/conf.d
アプリケーションサーバを構築した時の手順
MeCabのインストール
sudo apt install mecab sudo apt install libmecab-dev sudo apt install mecab-ipadic-utf8 #インストールの確認 mecab -v #MeCabを試して、何かの文章を打ち込んでみる mecab #次の行で「今日は晴天なり」等を入力してみる。下記のような結果が返ってくる /***************************************/ 今日は晴天なり 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー は 助詞,係助詞,*,*,*,*,は,ハ,ワ 晴天 名詞,一般,*,*,*,*,晴天,セイテン,セイテン なり 助動詞,*,*,*,文語・ナリ,基本形,なり,ナリ,ナリ /***************************************/ #MeCabで使用する辞書の変更 git clone https://github.com/neologd/mecab-ipadic-neologd.git cd mecab-ipadic-neologd sudo bin/install-mecab-ipadic-neologd sudo nano /etc/mecabrc #mecabrcを開いたら下記のように変更 dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd #MeCabを試して、何かの文章を打ち込んでみる mecab #次の行で「今日は晴天なり」等を入力してみる
※ubuntu 18.10 に mecab をインストール - Qiitaを参考
php-mecabをインストール
sudo apt-get install php7.3-dev git clone https://github.com/rsky/php-mecab.git cd php-mecab/mecab/ phpize sudo ./configure sudo make sudo make test sudo make install sudo nano /etc/php/7.3/mods-available/mecab.ini #エディタを開いたら、下記の値を入力 /***************************************/ extension=mecab.so /***************************************/ #php-fpmで使用できるようにする sudo ln -s /etc/php/7.3/mods-available/mecab.ini /etc/php/7.3/fpm/conf.d/20-mecab.ini #CLIで使用できるようにする sudo ln -s /etc/php/7.3/mods-available/mecab.ini /etc/php/7.3/cli/conf.d/20-mecab.ini sudo /etc/init.d/apache2 restart
※GitHub - rsky/php-mecab: MeCab binding for PHPを参考
下記のコードでテスト
/ドキュメントルート/index.php
<?php
$str = "今日は晴天なり";
$t = new \MeCab\Tagger();
$m = explode("\n", $t->parse($str));
var_dump($m);
ブラウザで開いて見ると、
array(6) {
[0]=>
string(61) "今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー"
[1]=>
string(40) "は 助詞,係助詞,*,*,*,*,は,ハ,ワ"
[2]=>
string(61) "晴天 名詞,一般,*,*,*,*,晴天,セイテン,セイテン"
[3]=>
string(69) "なり 助動詞,*,*,*,文語・ナリ,基本形,なり,ナリ,ナリ"
[4]=>
string(3) "EOS"
[5]=>
string(0) ""
}
端末から実行してみると、
php /var/www/html/index.php
array(6) {
[0]=>
string(61) "今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー"
[1]=>
string(40) "は 助詞,係助詞,*,*,*,*,は,ハ,ワ"
[2]=>
string(61) "晴天 名詞,一般,*,*,*,*,晴天,セイテン,セイテン"
[3]=>
string(69) "なり 助動詞,*,*,*,文語・ナリ,基本形,なり,ナリ,ナリ"
[4]=>
string(3) "EOS"
[5]=>
string(0) ""
}





