如何识别一个句子的主语?

问题描述 投票:14回答:4

可以的Python + NLTK被用来识别一个句子的主语?从我所学到至今是一个句子可分为头部和其家属。对于如“我拍大象”。就这一句话,我和大象是家属出手。但我怎么辨别出这句话的主语是I.

python nlp nltk
4个回答
14
投票

作为NLTK book(练习29)说,“在定义一个英语句子S的主题的一种常见方式是名词短语是S的孩子和VP的兄弟。”

看看tree example:的确,“我”是名词短语,是S是VP的兄弟姐妹的孩子,而“大象”是没有的。


18
投票

您可以使用Spacy

import spacy
nlp = spacy.load('en')
sent = "I shot an elephant"
doc=nlp(sent)

sub_toks = [tok for tok in doc if (tok.dep_ == "nsubj") ]

print(sub_toks) 

7
投票

英语有两种声音:主动和被动语态。让我们最常用的声音:主动语态。

它遵循subject-verb-object模型。为了纪念这一主题,编写规则与POS标签设置。标签句子I[NOUN] shot[VERB] an elephant[NOUN]。如果您看到的第一个名词是主题,然后有一个动词,然后有一个对象。

如果你想使问题更加复杂,是句子I shot an elephant with a gun。这里的介词或从属连词像,在中,可以给角色。这里的判决将被标记为I[NOUN] shot[VERB] an elephant[NOUN] with[IN] a gun[NOUN]。您可以轻松地说这个词用得instrumentative作用。你可以建立一个基于规则的系统,以获得在句子中每个单词的作用。

另外,也要看看在相同的被动语态和编写规则的模式。


-1
投票

您可以按做类似doc = nlp(text.decode('utf8'))问题纸,但这很可能会带给你未来更多的错误。

积分:https://github.com/explosion/spaCy/issues/380

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