如何使用NLP Java提取主题动词对象?每句话

问题描述 投票:0回答:1

我想为每个句子找到一个主题,动词和宾语]​​>,然后将其传递给自然语言生成库simpleNLG以形成一个句子。

我尝试了多个库,例如Cornlp,opennlp,Standford解析器

。但我无法准确找到它们。

现在,在最坏的情况下,我将不得不编写一整套if-else来从每个句子中找到主语,动词和宾语,这对于simpleNLG并不总是准确的

like,

  • NN,nsub等归于主语,VB,VBZ归于动词。
  • 我尝试过词法分析器

LexicalizedParser lp = **new LexicalizedParser("englishPCFG.ser.gz");**
String[] sent = { "This", "is", "an", "easy", "sentence", "." };
Tree parse = (Tree) lp.apply(Arrays.asList(sent));
parse.pennPrint();
System.out.println();
TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed");
tp.print(parse);

提供此输出,

nsubj(use-2, I-1)
root(ROOT-0, use-2)
det(parser-4, a-3)
dobj(use-2, parser-4)

我想要这样的东西

subject = I
verb = use
det = a
object = parser

是否有更简单的方法可以在JAVA中找到它,还是应该使用if-else?请帮助我。

我想为每个句子找到一个主语,动词和宾语,然后将其传递给自然语言生成库simpleNLG以构成一个句子。我尝试了多个库,例如Cornlp,...

stanford-nlp opennlp pos-tagger part-of-speech simplenlg
1个回答
0
投票

您可以使用openie注释器获取三元组。您可以在命令行上运行它,也可以使用这些注释器构建管道。

© www.soinside.com 2019 - 2024. All rights reserved.