インストールは色々方法がありそうだけどMacPortsでできるみたいなのでそれを使う。
$ port search mecab mecab @0.96 (textproc, japanese) MeCab is a yet another part-of-speech and morphological analyzer. mecab-ipadic-eucjp @2.7.0-20070610 (textproc, japanese) Alternate dictionary for MeCab (ipadic/euc-jp) mecab-ipadic-sjis @2.7.0-20070610 (textproc, japanese) Alternate dictionary for MeCab (ipadic/shift_jis) mecab-ipadic-utf8 @2.7.0-20070610 (textproc, japanese) Alternate dictionary for MeCab (ipadic/utf8) mecab-jumandic-eucjp @5.1-20070304 (textproc, japanese) Alternate dictionary for MeCab (jumandic/euc-jp) mecab-jumandic-sjis @5.1-20070304 (textproc, japanese) Alternate dictionary for MeCab (jumandic/shift_jis) mecab-jumandic-utf8 @5.1-20070304 (textproc, japanese) Alternate dictionary for MeCab (jumandic/utf8) p5-mecab @0.96 (perl, textproc, japanese) a Perl module for MeCab py-mecab @0.96 (python, textproc, japanese) a Python module for MeCab py25-mecab @0.96 (python, textproc, japanese) a Python module for MeCab rb-mecab @0.96 (ruby, textproc, japanese) a Ruby module for MeCab Found 11 ports. $ sudo port install p5-mecab
perl用のがあるようなのでp5-mecabとやらを入れてみた。
コマンド実行してみると文字化けする。どうやら標準の文字コードがeuc-jpか何かになっているようだ。
$ sudo port install mecab-ipadic-utf8 $ sudo vi /opt/local/etc/mecabrc # 編集してdicdirを変更 $ cat /opt/local/etc/mecabrc ; ; Configuration file of MeCab ; ; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $; ; # dicdir = /opt/local/lib/mecab/dic/ipadic dicdir = /opt/local/lib/mecab/dic/ipadic-utf8 ; userdic = /home/foo/bar/user.dic ; output-format-type = wakati ; input-buffer-size = 8192 ; node-format = %m\n ; bos-format = %S\n ; eos-format = EOS\n
これで普通に使えるようになったっぽい。
$ mecab 盗んだバイクで走り出す行く先も解らぬまま 盗ん 動詞,自立,*,*,五段・マ行,連用タ接続,盗む,ヌスン,ヌスン だ 助動詞,*,*,*,特殊・タ,基本形,だ,ダ,ダ バイク 名詞,一般,*,*,*,*,バイク,バイク,バイク で 助詞,格助詞,一般,*,*,*,で,デ,デ 走り出す 動詞,自立,*,*,五段・サ行,基本形,走り出す,ハシリダス,ハシリダス 行く先 名詞,副詞可能,*,*,*,*,行く先,ユクサキ,ユクサキ も 助詞,係助詞,*,*,*,*,も,モ,モ 解ら 動詞,自立,*,*,五段・ラ行,未然形,解る,ワカラ,ワカラ ぬ 助動詞,*,*,*,特殊・ヌ,基本形,ぬ,ヌ,ヌ まま 名詞,非自立,副詞可能,*,*,*,まま,ママ,ママ
Perlで使うためにText::MeCabというモジュールがあるらしい。
$ which mecab-config /opt/local/bin/mecab-config # これをインストール時に使用する $ sudo cpan -i Text::MeCab ... Path to mecab config? [/usr/bin/mecab-config] # which mecab-configの結果をコピペ Encoding of your mecab dictionary? (shift_jis, euc-jp, utf-8) [utf-8] # utf-8 で ...
でも何かテストで失敗してうまくインストールできない ><
強制インストールする。あんまりよくないかな…。
$ sudo cpan -fi Text::MeCab
で、書いてみる。
$ perl -MText::MeCab -le'$n=Text::MeCab->new->parse(pop);do{print$n->surface}while($n=$n->next)' "盗んだバイクで走り出す行く先も解らぬまま" zsh: segmentation fault perl -MText::MeCab
んん??
$ perl -MText::MeCab -le'$n=($m=Text::MeCab->new)->parse(pop);do{print$n->surface}while($n=$n->next)' " 盗んだバイクで走り出す行く先も解らぬまま" 盗ん だ バイク で 走り出す 行く先 も 解ら ぬ まま
newからそのまま繋いでparseするとsegmentation faultになっちゃうの??なんでだ…?
普通に書くとこうか?
#!/opt/local/bin/perl use strict; use warnings; use Text::MeCab; my $mecab = Text::MeCab->new(); my $n = $mecab->parse($ARGV[0]); do { print $n->surface, "\n"; } while ($n = $n->next);
実行。
./mecab.pl '盗んだバイクで走り出す行く先も解らぬまま' 盗ん だ バイク で 走り出す 行く先 も 解ら ぬ まま
おkっぽい。