MeCabのPerlバインディング

MeCabPerlバインディングに少々問題があります。

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本体の問題ではなく、MeCabPerlバインディングであるmecab-perlの問題であることがわかっています。一応、SWIGの仕様ということになっているらしく、回避策を検討しています。test4で行ったことも対処療法の一つではあったのですが、根本的な解決ではなく不完全であるため、問題が生じています。
だれかうまく回避できる方法があったら教えてください。


ダメダメな回避策として、mecab本体は最新版でもかまわないが「mecab-perlは0.90rc9を使え」というのものです。会社のサーバはこれで逃げています。