|
|
(同じ利用者による、間の1版が非表示) |
行4: |
行4: |
| | | |
| [[mecab/php7実装]] | | [[mecab/php7実装]] |
− |
| |
− | ==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インストールエラーの時==
| |
− | ERROR: `/var/tmp/mecab/configure --with-mecab=no' failed
| |
− | specify pathname to mecab-config [no] : /usr/local/bin
| |
− |
| |
− | ==phpのmecabが動かない場合は一旦削除して再度入れる==
| |
− | sudo pear uninstall opendogs/mecab-beta
| |
− | sudo pear install opendogs/mecab-beta
| |
− |
| |
− | ==phpのmecab.so設定==
| |
− | $ 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
| |
− |
| |
− | ==コンソールでの動作例==
| |
− | $ php -r "print nl2br(print_r(mecab_split("すもももももももものうち")));"
| |
− | // Array ( [0] => すもも [1] => も [2] => もも [3] => も [4] => もも [5] => の [6] => うち )
| |
− |
| |
− | ==php動作例==
| |
− | $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()."<<nowiki />br />";
| |
− | echo "surface=".$node->getSurface()."<<nowiki />br />";
| |
− | echo "stat=".$node->getStat()."<<nowiki />br />";
| |
− | echo "length=".$node->getLength()."<<nowiki />br />";
| |
− | echo "feature=".$node->getFeature()."<<nowiki />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
| |
− |
| |
− | ==php7.0でmecabを動かす==
| |
− | php7でmecabを動かそうとすると以下エラーが出る
| |
− | PHP Fatal error: Uncaught Error: Call to undefined function mecab_split()
| |
− |
| |
− | こちらにphp7で対応されてるphp_mecabがあるとのことだったので入れてみた
| |
− |
| |
− | 参考:https://twitter.com/rsky/status/672877419674468352 https://github.com/rsky/php-mecab
| |
− | $ cd /usr/local/src
| |
− | $ git clone https://github.com/rsky/php-mecab
| |
− | $ cd php-mecab/mecab
| |
− | $ phpize
| |
− | $ ./configure --with-mecab=/usr/local/bin/mecab-config
| |
− | $ make
| |
− | $ make test
| |
− | $ sudo make install
| |
− | Installing shared extensions: /usr/lib64/php/modules/
| |
− | $ php -r "print nl2br(print_r(mecab_split("すもももももももものうち")));"
| |
− | PHP Warning: Module 'mecab' already loaded in Unknown on line 0
| |
− | PHP Fatal error: Uncaught Error: Call to undefined function mecab_split() in Command line code:1
| |
− |
| |
− | mecab_split()ではなく\MeCab\split()に変更されている様子。
| |
− |
| |
− | $ php -r "print_r(\MeCab\split("すもももももももものうち"));"
| |
− | Array
| |
− | (
| |
− | [0] => すもも
| |
− | [1] => も
| |
− | [2] => もも
| |
− | [3] => も
| |
− | [4] => もも
| |
− | [5] => の
| |
− | [6] => うち
| |
− | )
| |
− | 参考:https://teratail.com/questions/27491
| |
− |
| |
− | MeCab_Taggerも変更
| |
− | Fatal error: Uncaught Error: Class 'MeCab_Tagger' not found
| |
− | // $mecab = new MeCab_Tagger(); // php5.6
| |
− | $mecab = new \MeCab\Tagger(); // php7
| |