2008年10月28日火曜日

結局MeCabをportsでいれた.

あいも変わらず頭の悪い文章ですみません.


前回いろいろ書いたがあきらめてportsでinstallをしてみた.
> sudo port install mecab
で入る.
Text-Mecab-0.20007
> perl Makefile.PL
Path to mecab config? /opt/local/bin/mecab-config
…あれこれ…
Encoding of your mecab dictionary? (shift_jis, euc-jp, utf-8) [utf-8]
…あれこれ…
Writing Makefile for Text::MeCab
> make
> sudo make install
で入った(っぽい).あっさり…(うがーあの無駄な努力はぁー).

で,テスト.こちらを参考に(バックスラッシュに注意)させていただきました.感謝.
とりあえずMacだからUTF-8だよねぇText-Mecabもそれで入れた(上記クォート内でデフォルト値:utf-8をそのまま通した.)しということでそれで作成(ファイルの文字コードや改行の扱い(LFだよ)に注意.また出力もターミナルなどでutf-8にしておいた).
しかし,ぶっぶー.文字化けです.

???.ということで調べると辞書がeuc-jpだから基本euc-jpらしい.
MeCab: Yet Another Part-of-Speech and Morphological Analyze/高度な使い方/文字コード変更
(euc-jpでサンプルを作成し,euc-jpのターミナルで実行すると化けないことも確認.)

そこで上記サイトに書いてある通り辞書のコードを修正してみた.
> cp /opt/local/var/macports/distfiles/mecab/mecab-ipadic-2.7.0-20070610.tar.gz ~/Desktop
> cd ~/Desktop
> tar xvzf mecab-ipadic-2.7.0-20070610.tar.gz
> cd mecab-ipadic-2.7.0-20070610
> ./configure --with-charset=utf8
> make
> sudo make install

ということで変更終了
再度テストで成功.
こう見える.
> perl test.pl
も 助詞,係助詞,*,*,*,*,も,モ,モ 2988
し 動詞,自立,*,*,サ変・スル,未然形,する,シ,シ 8930
ない 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ 2424
と 助詞,接続助詞,*,*,*,*,と,ト,ト 3476
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ 8929
BOS/EOS,*,*,*,*,*,*,*,* 7034
...あれ?最初のワードは?
ということで何が異なるかいまいち理解できていないが(Text-MeCabのversionも異なるし)修正修正.
use Text::MeCab;
my $m = Text::MeCab->new();
my $str = "今日もしないとね";
my $n = $m->parse($str);
until ($n==undef) {
printf("%s\t%s\t%d\n",
$n->surface, # 表層
$n->feature, # 現在の品詞
$n->cost # その形態素までのコスト
);
$n = $n->next;
}
で,再実行.
> perl test.pl
今日 名詞,副詞可能,*,*,*,*,今日,コンニチ,コンニチ 1611
も 助詞,係助詞,*,*,*,*,も,モ,モ 2988
し 動詞,自立,*,*,サ変・スル,未然形,する,シ,シ 8930
ない 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ 2424
と 助詞,接続助詞,*,*,*,*,と,ト,ト 3476
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ 8929
BOS/EOS,*,*,*,*,*,*,*,* 7034
よさげ♪

ということで間違い等ありましたらご指摘いただけると幸いです.

0 件のコメント: