使用openIE提取否定
Using openIE to extract negation
我正在尝试使用 Stanford CoreNLP 测试 OpenIE
http://nlp.stanford.edu/software/openie.html
我根据 http://stanfordnlp.github.io/CoreNLP/openie.html
上可用的演示之一使用以下代码
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");
props.setProperty("openie.triple.strict", "false");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
// Annotate an example document.
//File inputFile = new File("src/test/resources/0.txt");
//String text = Files.toString(inputFile, Charset.forName("UTF-8"));
String text = "Cats do not drink milk.";
Annotation doc = new Annotation(text);
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());
}
}
}
这违反直觉导致三元组
1.0| cat| drink| milk
被提取,这与我使用输入文本 "Cats drink milk." 得到的结果相同如果我将 "openie.triple.strict" 设置为 "true" 则根本不会提取任何三元组。有没有办法提取像猫一样的三元组 |不要喝 |牛奶?
我想你想将 "openie.triple.strict" 设置为 true 以确保逻辑上有保证的三元组。 OpenIE 不提取负面关系,它只是为了寻找正面关系而设计的。
因此,当 "openie.triple.strict" 设置为 true 时,您会得到正确的行为(即没有关系被提取)。请注意,当 "openie.triple.strict" 设置为真时,会为 "Cats drink milk." 提取关系。
我正在尝试使用 Stanford CoreNLP 测试 OpenIE http://nlp.stanford.edu/software/openie.html
我根据 http://stanfordnlp.github.io/CoreNLP/openie.html
上可用的演示之一使用以下代码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");
props.setProperty("openie.triple.strict", "false");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
// Annotate an example document.
//File inputFile = new File("src/test/resources/0.txt");
//String text = Files.toString(inputFile, Charset.forName("UTF-8"));
String text = "Cats do not drink milk.";
Annotation doc = new Annotation(text);
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());
}
}
}
这违反直觉导致三元组
1.0| cat| drink| milk
被提取,这与我使用输入文本 "Cats drink milk." 得到的结果相同如果我将 "openie.triple.strict" 设置为 "true" 则根本不会提取任何三元组。有没有办法提取像猫一样的三元组 |不要喝 |牛奶?
我想你想将 "openie.triple.strict" 设置为 true 以确保逻辑上有保证的三元组。 OpenIE 不提取负面关系,它只是为了寻找正面关系而设计的。
因此,当 "openie.triple.strict" 设置为 true 时,您会得到正确的行为(即没有关系被提取)。请注意,当 "openie.triple.strict" 设置为真时,会为 "Cats drink milk." 提取关系。