我想用Stanford CoreNLP在Java代码中提取句子的主语,谓语和宾语,并找出哪些形容词去往主语,谓语或宾语。
我试图使用依赖解析器来解决此问题,方法是找到依赖索引,检查依赖标记是否等于amod,然后将其添加到ArrayList中,但是使用此方法有时,形容词的依赖标记不是amod且是nmod和其他标签可能会出现。
在确定对象和谓词时,我使用了与上述类似的方法。我检查了它是否为det,以及是否有其他任何标记表示它是谓词或对象。但是,有时会出现不同的标签,必须解析每个标签效率不高,这在某种程度上意味着它是指向对象的谓词。
所以我的问题是,如何获得一个句子的主语,谓语和宾语以及每个形容词而不需要检查每个标记?
对于上述尝试,我使用了Stanford CoreNLP Simple API,但如果确实需要标准API,我可以。
答案 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