MeCabのPerlバインディング
test3より
- MeCab-0.90rc10以降では次のようなエラーが出て、分かち書きが失敗する。 TypeError in method 'Tagger_parse', argument 2 of type 'char const *' どうしてか? まだ、深く追いかけていないが、mecab-perlのMeCab_wrap.cxxが吐き出した エラーであるところまではわかった。
test4より
- バグの修正 -- MeCab-0.90rc10以降ではエラーが出ていた件を修正した。
test4では対処療法としてdecode_utf8を加えただけです。本来はこれを行わなくても問題ないはずなのですが。
sub tokenize { my $self = shift; my $text = shift; my $utf8 = Encode::decode_utf8($text); my $tokenized = $mecab->parse($utf8); return $tokenized; }
一応、これで私の環境(Fedora Core 5/i386)ではエラーはでなくなりました。しかし、会社のサーバ(RHEL4 Update3/ppc)では相変わらずエラーが出ます。
MeCab本体の問題ではなく、MeCabのPerlバインディングであるmecab-perlの問題であることがわかっています。一応、SWIGの仕様ということになっているらしく、回避策を検討しています。test4で行ったことも対処療法の一つではあったのですが、根本的な解決ではなく不完全であるため、問題が生じています。
だれかうまく回避できる方法があったら教えてください。
ダメダメな回避策として、mecab本体は最新版でもかまわないが「mecab-perlは0.90rc9を使え」というのものです。会社のサーバはこれで逃げています。