gpt4 book ai didi

java - 使用斯坦福 OpenIE 进行子句分割

转载 作者:行者123 更新时间:2023-11-30 06:48:26 26 4
gpt4 key购买 nike

我正在寻找一个将复杂句子分割成子句的好工具。由于我使用CoreNLP工具进行解析,我了解到OpenIE在从句子中提取关系三元组的过程中处理子句切分。目前,我使用 github repository 中 OpenIEDemo 类中提供的示例代码。但它没有正确地将句子分割成从句。这是代码:

// Create the Stanford CoreNLP pipeline
Properties props = PropertiesUtils.asProperties(
"annotators", "tokenize,ssplit,pos,lemma,parse,natlog,openie");

StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
//Annotate sample sentence
text = "I don't think he will be able to handle this.";

Annotation doc = new Annotation(text);
pipeline.annotate(doc);

// Loop over sentences in the document
int sentNo = 0;
for (CoreMap sentence : doc.get(CoreAnnotations.SentencesAnnotation.class)) {
List<SentenceFragment> clauses = new OpenIE(props).clausesInSentence(sentence);
for (SentenceFragment clause : clauses) {
System.out.println("Clause: "+clause.toString());
}
}

我期望 get 作为输出三个子句:

  • 我不认为
  • 他将能够
  • 处理这个问题

相反,代码返回完全相同的输入:

  • 我认为他无法处理这件事

但是,这句话

Obama is born in Hawaii and he is no longer our president.

得到两个子句:

  • 奥巴马出生于夏威夷,他不再是我们的总统
  • 他不再是我们的总统

(看来并列连词是一个很好的分段指标)

OpenIE 通常用于子句​​分段吗?如果是,如何正确执行?

欢迎任何其他实用的子句分割方法/工具。提前致谢。

最佳答案

因此,子句分段器与 OpenIE 的集成比其名称所暗示的更加紧密。该模块的目标是生成逻辑蕴含的子句,然后可以将其缩短为逻辑蕴含的句子片段。看看你的两个例子:

  1. I don't think he will be able to handle this.

    我认为这三个子句都不是源自原句:

    • “我不认为”——即使您不认为某件事是真的,您可能仍然会“认为”。
    • “他能够”——如果你“认为世界是平的”,并不意味着世界是平的。同样,如果您“认为他能够”,并不意味着他能够。
    • “处理这个”——我不确定这是一个从句...我会将其与“他将能够处理这个”组合在一起,而“能够”被视为单个动词。
  2. Obama is born in Hawaii and he is no longer our president.

    这两个子句自然应该是“奥巴马出生在夏威夷”和“他不再是我们的总统”。尽管如此,子句分割器会输出原始句子来代替第一个子句,期望 OpenIE 提取器的下一步将剥离“conj:and”边缘。

关于java - 使用斯坦福 OpenIE 进行子句分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43279085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com