MeCab-0.91をCygwin Rubyで

日本語の文章をコンピュータで解析する形態素解析というツールがあります。ちょっと使う用途がでてきたので色々と触ってみているのですが、そのツールをRubyから使うためのバィンディングがうまく動いてくれません。

事の発端は以前Chasenを使っていたのですが、Chasenはあまり早くないのでより早いMeCabを使ってみることにしました。最終的にはおそらくどこかのサーバになるので、実行する環境は*NIX系のOSを想定すればいいのでしょうが、とりあえず実験環境ということでWindows+Cygwin上にMeCab-0.91をインストールしてみることにしました。

MeCab本体のインストール自体はMeCabのインストールページにあるとおりでうまくいったのですが、MeCabをRubyからコントロールするためのバィンディングがうまく動いてくれません。バィンディングのインストールは数箇所修正することでコンパイルが通っているのですが、いざサンプルコードを動かしてみようとするとコアを吐いて落ちます。

続きをどうぞ。

Rubyバィンディングのコンパイルは、extconf.rb

$LDFLAGS = '-L/usr/local/lib'
を加えることと、ruby extconf.rbをした後に生成されるMakefileの一部を
LDSHARED gcc -shared -s
から
LDSHARED $(CXX) -shared -s
に変更すれば、コンパイルが通るようになります。

しかしサンプルコードのtest.rbを実行しようとすると、Segmentation Fault, Abortedでruby 1.8.4が落ちてしまいます。原因として考えられるのは

  • MeCabの共有ライブラリがおかしい
  • Rubyバィンディングを生成しているswigがおかしい
  • 共有ライブラリの場所等の設定ミス?
等が可能性が高い順に考えられます。

どなたか同じトラブルにあわれている方はいないでしょうか? 何かありましたら是非ご一報いただきたく思います。

※その後、Cygwinのdllを2006/6/2のスナップショットに変更したらコアを吐かなくなりました。結局、dllの読み込みに問題があったようです。変更の仕方は以前にも行ったことがあるので、参考にどうぞ。

May 21, 2006 23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

コメントする