decadence

個人のメモ帳

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使ってるのでそっちになおします

まずはMeCabipa辞書の所に戻って

> 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

普通に使えそうな感じになりました.