almalinux9にmecab本体をインストール
EPELリポジトリを有効化
sudo dnf install epel-release
インストールできることの確認
sudo dnf list mecab mecab-ipadic
mecabをインストール
sudo dnf install mecab mecab-ipadic
インストールできたことの確認
mecab -v
PHP用のMeCab拡張をインストール
peclをインストール
sudo dnf install php-pear php-devel gcc make
インストールできたことの確認
pecl version
PECL経由でMeCab PHP拡張がインストール可能か確認
pecl search mecab
結果
no packages found that match pattern "mecab", for channel pecl.php.net.
MeCab拡張がPECLで見つからないので、ソースから手動でインストールする
git cloneするためのディレクトリに移動(どこでもいい)
cd ~/projects
cloneする。今の環境になってるものを利用すること!
git clone https://github.com/ranvis/php-mecab.git
以下は古いのでダメ↓
git clone https://github.com/rsky/php-mecab.git
ディレクトリに移動
cd ~/projects/php-mecab/mecab
phpize を実行
phpize
configure スクリプトができたことを確認
できた configure
スクリプトを実行
./configure
エラー。mecab-configがない
checking for mecab-config… configure: error: not found
mecab-config は mecab-devel パッケージに含まれているので、mecab-devel をインストールしたい
mecab-develが既にインストールされているかを確認
sudo dnf list installed mecab-devel
リポジトリからインストールが可能かを確認
$ sudo dnf list available mecab-devel
Last metadata expiration check: 0:56:58 ago on Tue 08 Oct 2024 08:41:18 AM JST.
Error: No matching Packages to list
groongaというリポジトリにあるようなので追加
参考サイト
AlmaLinux8でneologdを入れるまで
利用者のみなさん
リポジトリを追加
sudo dnf install https://packages.groonga.org/almalinux/9/groonga-release-latest.noarch.rpm
Groongaのインストール(必要か?)
sudo dnf install groonga
↑エラーが出てうまくインストールできなかった。
sudo dnf install groonga --skip-broken
これならできた。リポジトリリストにはgroongaが追加されていれば、上記コマンドは不要かも
有効なリポジトリの一覧
sudo dnf repolist
mecab-develがインストール可能かどうか
sudo dnf list available mecab-devel
可能になっているはずなのでインストール
sudo dnf install mecab-devel
再度実行
cd ~/projects/php-mecab/mecab
phpize
./configure
make
make test(めちゃスキップされる)
make install
mecab.soがあることの確認
ls /usr/lib64/php/modules/ | grep mecab
php.iniの最終行に以下の一行を追加
extension=mecab.so
変更を反映
sudo systemctl restart php-fpm
mecabの動作テストファイル
<?php
// インスタンスを生成
$mecab = new \MeCab\Tagger();
// 解析
$nodes = $mecab->parseToNode( 'MeCabを試してみました' );
// 解析結果の取得例
foreach ( $nodes as $node ) {
// BOS/EOSはスキップ
if ( $node->getStat() >= 2 ) {
continue;
}
// 分解された文字列 (例:試し)
echo $node->getSurface(), "\n";
// 品詞ID (例:31)
echo $node->getPosId(), "\n";
// 区分(0.通常、1.不明(未知語)、2.BOS(文頭)、3.EOS(文末) ※BOS、EOSはヘッダとフッタ)
echo $node->getStat(), "\n";
// 情報をまとめた文字列 (例:動詞,自立,*,*,五段・サ行,連用形,試す,タメシ,タメシ)
echo $node->getFeature(), "\n";
}
ファイルの元データ
PHP+MeCabで形態素解析 #2 | make is.dev
MeCabを使って形態素解析を試してみる。PHPとMeCabの連携にはphp_mecabを使う。 ソースからビルドしないといけないのでやや面倒だったりハマッたり。環境によってはビルドからのインストール自体が難しかったり。