StanfordNLP OpenIE 4错误

时间:2016-12-07 14:59:33

标签: java nlp stanford-nlp

我遇到了这个错误:

我运行了OpenIE 4.1二进制文件但出现了以下错误:

Exception in thread "main" java.lang.NullPointerException at 
com.googlecode.clearnlp.tokenization.EnglishTokenizer.protec‌​tEmoticons
(EnglishTokenizer.java:335) at 
com.googlecode.clearnlp.tokenization.EnglishTokenizer.getTok‌​enList(En 
glishTokenizer.java:109) at 
com.googlecode.clearnlp.tokenization.AbstractTokenizer.getTo‌​kens(AbstractTokenizer.java:58) at 
edu.knowitall.tool.tokenize.ClearTokenizer.tokenize(ClearTok‌​enizer.sc ala:22) 

我查了几个消息来源并发现Yangrui的评论,过去也有这个问题。但是没有解决方案。我检查了我的openie.4.1.jar文件,并且存在com.googlecode.clearnlp.tokenization.EnglishTokenizer.protectEmoticon。

希望有人可以帮助阐明这一点。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我设法解决了这个错误。问题在于我从官方网站下载的OpenIE 4.0 JAR和OpenIE 4.1 JAR文件的编译。 (http://knowitall.github.io/openie/)。

如何解决?自己编译类。

  1. 转到https://github.com/knowitall/openie/releases
  2. 选择一个版本。 (我选择4.1.3)
  3. 下载zip文件并解压缩文件。
  4. 使用终端并重定向到文件夹目录。
  5. 运行' sbt package'它将开始编译。
  6. 您的最终JAR文件将在目标文件夹/ scala-2.10 / {openie-assembly-VERSION.jar}中找到
  7. 注意:如果您将OpenIE作为依赖项运行,则可能需要对代码进行一些更改。测试代码如下:

        OpenIE openIE = new OpenIE(new ClearParser(new ClearPostagger(new ClearTokenizer())), new ClearSrl(), false, false);
    
        Seq<Instance> extractions = openIE.extract("Obama is the president of the United States");
        Iterator<Instance> iterator = extractions.iterator();
        while (iterator.hasNext()) {
            Instance inst = iterator.next();
            StringBuilder sb = new StringBuilder();
             sb.append(inst.confidence()).append("\t\t")
             .append(inst.extr().arg1().text()).append("\t\t")
             .append(inst.extr().rel().text()).append("\t\t");
    
            Iterator<Argument> argIter = inst.extr().arg2s().iterator();
            while (argIter.hasNext()) {
                Part arg = argIter.next();
                sb.append(arg.text()).append("; ");
            }
             System.out.println(sb.toString());
        }
    

    我希望这将有助于将来。