你能不能在下面的stanford-nlp OpenIE中帮助我

时间:2018-04-13 16:10:15

标签: java nlp stanford-nlp

我在网站上使用以下句子运行相同的演示示例: "哈德森出生在伦敦郊区的汉普斯特德。"

并告诉我以下内容,

Hudson be bear

我期待以下关系:

(哈德森,出生于汉普斯特德)

(汉普斯特德,是伦敦的一个郊区)

  



import edu.stanford.nlp.ie.util.RelationTriple;
import edu.stanford.nlp.ling.CoreAnnotations;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import edu.stanford.nlp.naturalli.NaturalLogicAnnotations;
import edu.stanford.nlp.util.CoreMap;

import java.util.Collection;
import java.util.Properties;

/** A demo illustrating how to call the OpenIE system programmatically.
 */
public class OpenIEDemo {

  public static void main(String[] args) throws Exception {
    // Create the Stanford CoreNLP pipeline
    Properties props = new Properties();
    props.setProperty("annotators", "tokenize,ssplit,pos,lemma,depparse,natlog,openie");
    //tokenize,ssplit,pos,lemma,depparse,natlog,openie
    //tokenize,ssplit,pos,lemma,ner,regexner,parse,mention,entitymentions,coref,kbp
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

    // Annotate an example document.
    Annotation doc = new Annotation(args[0]);
    pipeline.annotate(doc);
   // Loop over sentences in the document
    for (CoreMap sentence : doc.get(CoreAnnotations.SentencesAnnotation.class)) {
      // Get the OpenIE triples for the sentence
      Collection<RelationTriple> triples =
	          sentence.get(NaturalLogicAnnotations.RelationTriplesAnnotation.class);
      // Print the triples
      for (RelationTriple triple : triples) {
        System.out.println(triple.confidence + "\t" +
            triple.subjectLemmaGloss() + "\t" +
            triple.relationLemmaGloss() + "\t" +
            triple.objectLemmaGloss());
      }
    }
  }
}
&#13;
&#13;
&#13;

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

所以,系统并没有错,但肯定会产生可能的关系。 Hudson be bear只是断言哈德森出生(一个真实的事实)。这特别是由Hampstead-ref->的反射边缘引起的。哪一个。这应该在代码的后续版本中修复。

一般而言,与所有NLP系统一样,OpenIE的准确率低于100%,您绝不应该期望系统产生完全正确的输出。特别是像Open IE这样的任务,甚至可以就什么&#34;纠正&#34;手段很难。