我正在尝试实现名为stanfordparser的宝石,可在此处找到:http://stanfordparser.rubyforge.org/
它是java自然语言解析器的ruby包装器
我正在使用windows 7机器上的rails / jruby上的ruby开发netbeans。我的网络应用程序工作正常,但当我尝试添加解析器包装时,它会中断。
以下是导致问题的代码:
gem 'stanfordparser'
def show
parser = StanfordParser::LexicalizedParser.new
@words = parser.apply("This is a sentence.")
end
这是在taskscontroller
中当我去任务/显示(如果我删除此代码,工作正常)我得到以下错误
uninitialized constant TasksController::StanfordParser
我确保gem已安装在netbeans
中我对铁轨上的红宝石很新,并自学,所以它可能是显而易见的
谢谢!
编辑:我检查了我的glassfish服务器日志,并说
SEVERE: Missing these required gems:
stanfordparser
这很奇怪,因为我已经使用netbeans安装了gem,我已经完成了rake gems:install和netbeans说安装了gem。我已经检查了netbeans gems文件夹,并在那里安装了gem。
编辑2:
所以,经过大量的研究和敲击后,我决定通过尝试使用jruby来实现java类来简化一些事情,现在我需要弄清楚如何导入stanfordparser java类(那里)至少50),我想我需要将所有类压缩到一个jar中,以便jruby可以加载它。也许。
答案 0 :(得分:0)
如果您使用的是Rails 3,则需要在项目根目录下的Bundler的 Gemfile 中指定gem 'stanfordparser'
语句。否则,对于Rails 2.x,您需要在 config / environment.rb 中添加config.gem 'stanfordparser'
语句。
答案 1 :(得分:0)
我能够通过以下方式解决我的问题:
而不是使用stanfordparser ruby包装器(实现java ruby bridge将java stanford解析器连接到纯ruby),我使用jruby来实现stanford解析器中的java。
最终工作的代码:
include Java
require 'C:\\Stanford-Parser\\Current\\stanford-parser.jar'
require 'rubygems'
include_class 'edu.stanford.nlp.parser.lexparser.LexicalizedParser'
lp = LexicalizedParser.new(args) #args is the arguments, not copied here