文字列からエンティティを抽出するために、文字列に対して CRFClassifier を実行しようとしています。ここからスタンフォード NLP エンティティ認識エンジンの Ruby バインディングを使用しています: https://github.com/tiendung/ruby-nlp
独自のクラス (nlp.rb) で完全に正常に動作します。実行すると正常に動作ruby nlp.rb
します。ただし、Rails アプリのコントローラーの 1 つにこのクラスのオブジェクトを作成しようとすると、何らかの理由で次のエラーが発生します。
java.lang.NoClassDefFoundError: edu/stanford/nlp/ie/crf/CRFClassifier
これは、単独では問題なく動作しますが、コントローラー内では動作しないコードです。
def initialize
Rjb::load('stanford-postagger.jar:stanford-ner.jar', ['-Xmx200m'])
crfclassifier = Rjb::import('edu.stanford.nlp.ie.crf.CRFClassifier')
maxentTagger = Rjb::import('edu.stanford.nlp.tagger.maxent.MaxentTagger')
maxentTagger.init("left3words-wsj-0-18.tagger")
sentence = Rjb::import('edu.stanford.nlp.ling.Sentence')
@classifier = crfclassifier.getClassifierNoExceptions("ner-eng-ie.crf-4-conll.ser.gz")
end
def get_entities(sentence)
sent = sentence
@classifier.testStringInlineXML( sent )
end
どちらの場合もまったく同じコードです。ここで何が起こっているのか、誰にもわかりません!?
前もって感謝します!