【问题标题】:How to pick out a the subject, predicate, and object and adjectives in a sentence如何在句子中挑选主语、谓语、宾语和形容词
【发布时间】:2018-11-22 16:39:56
【问题描述】:

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

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

在确定宾语和谓语时,我使用了与上述类似的方法。我检查了它是否是 det,如果它是任何其他标签,这意味着它是一个谓词或对象。然而,有时会出现不同的标签,并且必须解析每个标签,这在某种程度上意味着它是一个指向对象的谓词,效率不高。

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

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

【问题讨论】:

  • 在 CoreNLP 的模型中,句子并不像“主语、宾语、谓语”那么简单。没有比拥有许多寻找您感兴趣的句型的规则或一个训练有素的模型来选择您关心的树更有效的过程了。
  • 有图书馆可以做到吗?

标签: java nlp stanford-nlp


【解决方案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

【讨论】:

  • OpenIE 为什么需要 14 GB 内存?
  • 它不需要 14Gb 内存。我希望它可以使用 1-2GB(如果包含 coref 注释器,则为 2-3),对于大多数应用程序来说,4GB 是相当安全的。
  • 我们的每个注释器的整个管道都需要 14GB 这样的空间,所以这是我默认设置的,但是我确信它的工作量要少得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多