May 21, 2006

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の読み込みに問題があったようです。変更の仕方は以前にも行ったことがあるので、参考にどうぞ。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/488
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。