【问题标题】:StanfordNLP OpenIE 4 errorStanfordNLP OpenIE 4 错误
【发布时间】:2017-04-22 14:08:25
【问题描述】:

我一直遇到这个错误:

我运行了 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) 

我查了一些资料,发现以前也有这个问题的杨锐的评论。但是没有解决方案。我检查了我的 openie.4.1.jar 文件并且 com.googlecode.clearnlp.tokenization.EnglishTokenizer.protectEmoticon 存在。

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

【问题讨论】:

  • 只是指出斯坦福 OpenIE 和 OpenIE 4 是不同的项目。看起来根本问题出在 ClearNLP 的标记器中?也许在将文本传递到 OpenIE 4 之前尝试预处理表情符号?

标签: java nlp stanford-nlp


【解决方案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}

注意:如果您将 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());
    }

我希望这对将来的某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多