如何在句子中挑选主语,谓语,宾语和形容词

时间:2018-11-22 16:39:57

标签: java nlp stanford-nlp

我想用Stanford CoreNLP在Java代码中提取句子的主语,谓语和宾语,并找出哪些形容词去往主语,谓语或宾语。

我试图使用依赖解析器来解决此问题,方法是找到依赖索引,检查依赖标记是否等于amod,然后将其添加到ArrayList中,但是使用此方法有时,形容词的依赖标记不是amod且是nmod和其他标签可能会出现。

在确定对象和谓词时,我使用了与上述类似的方法。我检查了它是否为det,以及是否有其他任何标记表示它是谓词或对象。但是,有时会出现不同的标签,必须解析每个标签效率不高,这在某种程度上意味着它是指向对象的谓词。

所以我的问题是,如何获得一个句子的主语,谓语和宾语以及每个形容词而不需要检查每个标记?

对于上述尝试,我使用了Stanford CoreNLP Simple API,但如果确实需要标准API,我可以。

1 个答案:

答案 0 :(得分:1)

您应该尝试使用openie注释器来查找(主题,谓词,对象)三元组。

示例命令:

java -Xmx5g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,depparse,coref,natlog,openie -file basic-example.txt -outputFormat text

示例:

The tall man ate the delicious pizza.

示例输出:

1.0     man     ate     pizza
1.0     man     ate     delicious pizza
1.0     tall man        ate     pizza
1.0     tall man        ate     delicious pizza