如何在CoreNLP 3.6.0中提取共享?缺少文件?

时间:2017-04-11 18:53:54

标签: stanford-nlp

我正在尝试运行此处的代码:https://stanfordnlp.github.io/CoreNLP/coref.html

public class CorefExample {
  public static void main(String[] args) throws Exception {
    Annotation document = new Annotation("Barack Obama was born in Hawaii.  He is the president. Obama was elected in 2008.");
    Properties props = new Properties();
    props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,parse,mention,coref");
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
    pipeline.annotate(document);
    System.out.println("---");
    System.out.println("coref chains");
    for (CorefChain cc : document.get(CorefCoreAnnotations.CorefChainAnnotation.class).values()) {
      System.out.println("\t" + cc);
    }
    for (CoreMap sentence : document.get(CoreAnnotations.SentencesAnnotation.class)) {
      System.out.println("---");
      System.out.println("mentions");
      for (Mention m : sentence.get(CorefCoreAnnotations.CorefMentionsAnnotation.class)) {
        System.out.println("\t" + m);
       }
    }
  }
}

但是,我找不到这三个所需的导入:

import edu.stanford.nlp.coref.CorefCoreAnnotations;
import edu.stanford.nlp.coref.data.CorefChain;
import edu.stanford.nlp.coref.data.Mention;

我可以改用这些导入:

import edu.stanford.nlp.dcoref.CorefCoreAnnotations;
import edu.stanford.nlp.dcoref.CorefChain;
import edu.stanford.nlp.dcoref.Mention;

但是缺少注释,特别是:

CorefCoreAnnotations.CorefMentionsAnnotation.class

此外,CorefCoreAnnotations.CorefChainAnnotation.class).values()返回null ...

我认为问题在于我使用的是CoreNLP版本3.6.0。本教程适用于3.7.0我相信。是否有使用版本3.6.0的类似示例?如果没有,我需要做出哪些改变?我有一个大型管道设置,我不确定升级有多难。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您好我建议只升级到Stanford CoreNLP 3.7.0,它不应该导致太多事情要破解。

其中一个主要变化是我们创建了一个名为edu.stanford.nlp.coref的新包,并将edu.stanford.nlp.hcoref中的代码放入其中。

在大多数情况下,如果升级,事情应该是相同的。