【问题标题】:getting started with Stanford Parser in jruby在 jruby 中开始使用 Stanford Parser
【发布时间】:2011-11-23 19:46:16
【问题描述】:

我希望在我的 Rails 应用程序中添加一些文本解析,并且过去几天一直在寻找任何关于如何使其工作的教程或提示。

我对 Java 完全陌生,但没有什么比双脚跳的更好了。

我怀疑下面的代码不属于我的控制器,并且应该在模型中,但我只是想看看此时我是否将所有部分都放在了正确的位置。

我从这个 SO 问题implementing custom java class in jruby 中借用了这段代码,因为我找不到任何类型的示例代码。

#my 需要/imports/includes,包含多个版本以确保安全 需要'java' #包括Java 需要'/media/sf_Ruby192/java_progs/parser/stanford-parser.jar' #require '/media/sf_Ruby192/java_progs/parser/' 需要“红宝石” include_class 'edu.stanford.nlp.parser.lexparser.LexicalizedParser' 类 ParseController 列表 结尾 结尾

不幸的是,我得到了错误

java.lang.NullPointerException:空

当我包含

lp = LexicalizedParser.new

我做错了吗?当我注释掉 lp = ... 时,我得到了列表输出,所以 jruby 正在工作,我可以在我的 rails 应用程序中编写 java 并获取输出。

谁能指出我正确的方向,也许可以告诉我这段代码有什么问题,但希望实际上让我明白我应该如何使用 jruby 和 rails。希望对斯坦福解析器也有一些意见(我知道,有很多问题要问)。我发现的文档或示例代码似乎很少。

【问题讨论】:

    标签: ruby-on-rails jruby stanford-nlp


    【解决方案1】:

    我不这么认为。但我确实认为您需要阅读此解析器的工作原理。

    根据http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/parser/lexparser/LexicalizedParser.html,默认构造函数的工作方式如下:

    从之前序列化的序列中构造一个新的 LexicalizedParser 对象 从属性中读取的语法 edu.stanford.nlp.SerializedLexicalizedParser,或默认文件 位置。

    换句话说,您获得了 NPE,因为默认构造函数找不到足够的信息来创建解析器。

    如果您从斯坦福获取二进制发行版,则可以在grammar 目录中找到适当的语法。例如:

    $ jruby -S irb
    irb(main):001:0> require 'java'
    => true
    irb(main):002:0> require 'stanford-parser.jar'
    => true
    irb(main):003:0> java_import Java::edu.stanford.nlp.parser.lexparser.LexicalizedParser
    => Java::EduStanfordNlpParserLexparser::LexicalizedParser
    irb(main):004:0> lp = LexicalizedParser.new("grammar/englishPCFG.ser.gz")
    Loading parser from serialized file grammar/englishPCFG.ser.gz ... done [2.5 sec].
    => #<Java::EduStanfordNlpParserLexparser::LexicalizedParser:0x7d627b8b>
    

    【讨论】:

    • 感谢 banzaiman,我已经阅读了示例文档,但我不得不承认,没有代码示例,我总是发现仅通过查看文档很难弄清楚。例如,在您链接到的 lexparser 页面中,它包含多个 LexicalizedParser() 选项,其中没有一个说 .new,并且列表中的第三个指定指向语法。我经常为此苦苦挣扎,这就是为什么我更喜欢代码示例来感受这门语言。但是你得到了答案(注意,是你的代码示例为我解决了这个问题)。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2012-06-06
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    相关资源
    最近更新 更多