perlでMeCab -utf8
某twitter-botに使われているという事で気になっていたMeCab(MeCab: Yet Another Part-of-Speech and Morphological Analyzer)
CPANにText::MeCabというのがあるらしく,ちょっとだけ使ってみました
まずは上記に書いて所からMeCab本体とipa辞書をダウンロード.
両方ともこんな感じでインストール
> tar zxfv mecab-X.X.tar.gz > cd mecab-X.X > ./configure > make all > make check > sudo make install
そんでもってまずはターミナル上で実行
> mecab 今日は良い天気です。 ? ̾??,????,*,*,*,*,?,???????,??????? ?日? ????,????,*,*,*,*,* ?? ̾??,??ͭ̾??,?ȿ?,*,*,*,* ??い? ????,????,*,*,*,*,* ?? ̾??,????,*,*,*,*,* ? ̾??,????,*,*,*,*,* ?です。 ????,????,*,*,*,*,* EOS
文字化けが酷い…
mecab/dic/dicrcに書いてる通りにどうやら文字コードがeuc-jpになっている模様
基本的にutf8使ってるのでそっちになおします
> make uninstall
そこから双方ともこんな感じでutf8に
> ./configure --with-charset=utf8 > make clean > make all > make check > sudo make install
ひとまずターミナル上で
> mecab 今日は良い天気です。 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー は 助詞,係助詞,*,*,*,*,は,ハ,ワ 良い 形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ 天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS
良い感じです.
一応perlでやるつもりだったんでCPANからText::MeCabを入れます
途中で文字コードどうするかとか聞かれたんですが,なんか知らないけどeuc-jpでも問題無いです.
一応utf8にしておこう…
テストコード : mecabtest.pl
use utf8; use strict; use Text::MeCab; my $mecab = Text::MeCab->new(); my $text = '今日は良い天気です。'; for(my $node = $mecab->parse($text); $node; $node = $node->next){ printf("%-3s\t%s\t%d\n", $node->surface, $node->feature, $node->cost ); } __END__
結果
bash-3.2$ perl mecabtest.pl 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー 3947 は 助詞,係助詞,*,*,*,*,は,ハ,ワ 4822 良い 形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ 3508 天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ 7322 です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 8635 。 記号,句点,*,*,*,*,。,。,。 5245
普通に使えそうな感じになりました.