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) "" }