我正在尝试运行此处的代码: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的类似示例?如果没有,我需要做出哪些改变?我有一个大型管道设置,我不确定升级有多难。
感谢您的帮助!
答案 0 :(得分:0)
您好我建议只升级到Stanford CoreNLP 3.7.0,它不应该导致太多事情要破解。
其中一个主要变化是我们创建了一个名为edu.stanford.nlp.coref
的新包,并将edu.stanford.nlp.hcoref
中的代码放入其中。
在大多数情况下,如果升级,事情应该是相同的。