`从脚本调用时,stanfordparser`ruby gem在`gsub`(TypeError)上失败?

`从脚本调用时,stanfordparser`ruby gem在`gsub`(TypeError)上失败?,ruby,stanford-nlp,Ruby,Stanford Nlp,我试图在一个简单的ruby脚本中使用stanfordparser(gem install stanfordparser),但是我遇到了一些问题。我确实需要先安装一些依赖项(rjb&treebank),但是我没有遇到我认为是这个gem时代造成的问题,也许是因为它不支持ruby 1.9 我得到的错误是: /Users/username/.rvm/gems/ruby-1.9.3-p362@all/gems/stanfordparser-2.2.0/lib/stanfordparser.rb:150:在

我试图在一个简单的ruby脚本中使用
stanfordparser
gem install stanfordparser
),但是我遇到了一些问题。我确实需要先安装一些依赖项(
rjb
&
treebank
),但是我没有遇到我认为是这个gem时代造成的问题,也许是因为它不支持ruby 1.9

我得到的错误是:
/Users/username/.rvm/gems/ruby-1.9.3-p362@all/gems/stanfordparser-2.2.0/lib/stanfordparser.rb:150:在“gsub”中:无法将路径名转换为字符串(TypeError)

看起来好像我需要修改任何被称为这样的gsub实例

def initialize(grammar = ENGLISH_PCFG_MODEL, options = [])
  @grammar = Pathname.new(grammar.gsub(/\$\(ROOT\)/, ROOT))
  super("edu.stanford.nlp.parser.lexparser.LexicalizedParser", @grammar.to_s)
  @java_object.setOptionFlags(options)
end
根据评论中的请求,
语法
为零,因此这肯定是一个问题,但我不确定如何解决这个问题

如果您转到的文档并尝试按照irb中的说明进行操作,则会得到以下结果:

>> require "stanfordparser"
=> true
>> preproc = StanfordParser::DocumentPreprocessor.new
NoClassDefFoundError: edu/stanford/nlp/process/DocumentPreprocessor
    from /Users/username/.rvm/gems/ruby-1.9.3-p362@all/gems/stanfordparser-2.2.0/lib/java_object.rb:40:in `import'
    from /Users/username/.rvm/gems/ruby-1.9.3-p362@all/gems/stanfordparser-2.2.0/lib/java_object.rb:40:in `initialize'
    from /Users/username/.rvm/gems/ruby-1.9.3-p362@all/gems/stanfordparser-2.2.0/lib/stanfordparser.rb:240:in `initialize'
    from (irb):2:in `new'
    from (irb):2
    from /Users/username/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
>需要“stanfordparser”
=>正确
>>preproc=StanfordParser::DocumentPreprocessor.new
NoClassDefFoundError:edu/stanford/nlp/process/DocumentPreprocessor
来自/Users/username/.rvm/gems/ruby-1.9.3-p362@all/gems/stanfordparser-2.2.0/lib/java_object.rb:40:in'import'
来自/Users/username/.rvm/gems/ruby-1.9.3-p362@all/gems/stanfordparser-2.2.0/lib/java_object.rb:40:in'initialize'
来自/Users/username/.rvm/gems/ruby-1.9.3-p362@all/gems/stanfordparser-2.2.0/lib/stanfordparser.rb:240:in'initialize'
发件人(irb):2:在“new”中
来自(irb):2
from/Users/username/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in`'

还有其他人有幸做到这一点吗?

什么是
@grammar.class
?嗯,是的,这确实是一个问题,当它出现时,它显然是Nil(NilClass)!语法课怎么样?我想我会一直跟踪问题,直到我们发现问题出在哪里,你明白吗?这似乎是调试的噩梦,因为这一切似乎归结为java问题,因为这是建立在它之上的。现在,我决定研究
Treat
或者其他一些东西,让我能够在一个更为Ruby原生的实现中分析句子和自然语言模式。谢谢你!我认为您只需要使用基于JVM的ruby,您的问题就会消失。尝试一下,但我也同意,如果您更熟悉ruby,您应该使用基于MRI的实现。