もういっちょエラーエントリ。
英語の文章を形態素解析するために、The Stanford NLP (Natural Language Processing) Groupを使ってみたいなと思った訳ですよ。で、リンクにruby bindingというのがあったから、お、gemあんじゃんと思ったら、単にjar呼んでるだけなのね。
で、Ruby Java Bridgeをgemでインストールする訳だけど、
gem install rjb
して、bindingにあった、
equire 'rjb' Rjb::load('stanford-postagger.jar:stanford-ner.jar', ['-Xmx200m']) MaxentTagger = Rjb::import('edu.stanford.nlp.tagger.maxent.MaxentTagger') tagger = MaxentTagger.new("models/left3words-wsj-0-18.tagger") sent = 'Rails3 / Ryan\'s Scraps: What\'s New in Edge Rails: Cleaner RESTful Controllers w/ respond_with' puts tagger.tagString( sent )
な、サンプルコードを動かすと、見事に
bash-3.2$ ruby tagger.rb [BUG] cross-thread violation on rb_gc() (null) Abort trap
なエラーが。OSX+Ruby一筋縄ではいかないね…
で、エラーでググってもよくわからなかったけど OSX, RubyGems and cross-thread violations in rb_gcによれば、別環境用のバイナリがあるとこのエラーが出るみたいなことが書いてある。
ふむ、と思って
gem list rjb
すると、
rjb (1.3.4 universal-darwin-10)
とのこと。よくわからん。darwin先生はuniversalなのにだめらしい。
とりあえず、rjbをアンインストールして、
gem install rjb --platform=ruby
再度インストール。
gem list rjb rjb (1.3.4)
環境の指定がとれた。
気を取り直して再実行。
bash-3.2$ ruby tagger.rb
Loading default properties from trained tagger models/left3words-wsj-0-18.tagger
Reading POS tagger model from models/left3words-wsj-0-18.tagger ... done [0.9 sec].
Rails3/NNP \//NNP Ryan/NNP 's/POS Scraps/NNS :/: What/WP 's/VBZ New/NNP in/IN Edge/NNP Rails/NNPS :/: Cleaner/NNP RESTful/NNP Controllers/NNPS w/VBD \//CD respond_with/NN
動いた!
どうでもいいけど、エラーメッセージって大事ですね…。