facebook twitter hatena line email

Mecab

提供: 初心者エンジニアの簡易メモ
2015年5月20日 (水) 03:17時点における127.0.0.1 (トーク)による版 (ページの作成:「==windows版ダウンロード&インストール== #http://mecab.sourceforge.net/ #mecab-0.98.exe実行 ==linux版ダウンロード&インストール== 本体 $ cd /...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

windows版ダウンロード&インストール

  1. http://mecab.sourceforge.net/
  2. mecab-0.98.exe実行

linux版ダウンロード&インストール

本体

$ cd /usr/local/src
$ wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz
$ tar zxfv mecab-0.996.tar.gz
$ cd mecab-0.996
$ ./configure --with-charset=utf8
$ make
$ make check
$ sudo make install

エラー(configure: error: no acceptable C compiler found in $PATH

$ sudo yum -y install gcc
$ sudo yum install gcc-c++


辞書

% tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz
% mecab-ipadic-2.7.0-XXXX
% ./configure --with-charset=utf8
% make
% su
# make install

以下エラー時

param.cpp(69) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/dicrc

辞書のdirが違うので確認できるように

ln -s /usr/lib64/mecab /usr/local/lib/mecab

動作確認

$ echo "すもももももももものうち" | mecab
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も  助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
も  助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
の  助詞,連体化,*,*,*,*,の,ノ,ノ
うち  名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

phpで使う

pear channel-discover pecl.opendogs.org
pear remote-list -c opendogs
sudo pear install opendogs/mecab-beta
> specify pathname to mecab-config [no] : 

phpのmecabが動かない場合は一旦削除して再度入れる

sudo pear uninstall opendogs/mecab-beta
sudo pear install opendogs/mecab-beta

phpのmecab.ini設定

$ vi /etc/php.d/mecab.ini
extension=mecab.so

phpのmecab設定確認

$ php -r "phpinfo();" | grep mecab
/etc/php.d/mecab.ini,
mecab
mecab.default_dicdir => no value => no value
mecab.default_rcfile => no value => no value
mecab.default_userdic => no value => no value

動作例

print nl2br(print_r(mecab_split("すもももももももものうち"))); // Array ( [0] => すもも [1] => も [2] => もも [3] => も [4] => もも [5] => の [6] => うち )
$mecab = new MeCab_Tagger();
$str = "すもももももももものうち";
$nodes = $mecab->parseToNode($str);
foreach($nodes as $node) {
   if ($node->getStat() == 2 || $node->getStat() == 3) continue;
   echo "id=".$node->getId()."<br />";
   echo "surface=".$node->getSurface()."<br />";
   echo "stat=".$node->getStat()."<br />";
   echo "length=".$node->getLength()."<br />";
   echo "feature=".$node->getFeature()."<br />";
}
id=9
surface=すもも
stat=0
length=9
feature=名詞,一般,*,*,*,*,すもも,スモモ,スモモ
id=19
surface=も
stat=0
length=3
feature=助詞,係助詞,*,*,*,*,も,モ,モ
id=24
surface=もも
stat=0
length=6
feature=名詞,一般,*,*,*,*,もも,モモ,モモ
id=31
surface=も
stat=0
length=3
feature=助詞,係助詞,*,*,*,*,も,モ,モ
id=36
surface=もも
stat=0
length=6
feature=名詞,一般,*,*,*,*,もも,モモ,モモ
id=47
surface=の
stat=0
length=3
feature=助詞,連体化,*,*,*,*,の,ノ,ノ
id=57
surface=うち
stat=0
length=6
feature=名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

apacheで動かす場合は再起動

/etc/rc.d/init.d/httpd restart