可以的Python + NLTK被用来识别一个句子的主语?从我所学到至今是一个句子可分为头部和其家属。对于如“我拍大象”。就这一句话,我和大象是家属出手。但我怎么辨别出这句话的主语是I.
作为NLTK book(练习29)说,“在定义一个英语句子S的主题的一种常见方式是名词短语是S的孩子和VP的兄弟。”
看看tree example:的确,“我”是名词短语,是S是VP的兄弟姐妹的孩子,而“大象”是没有的。
您可以使用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)
英语有两种声音:主动和被动语态。让我们最常用的声音:主动语态。
它遵循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作用。你可以建立一个基于规则的系统,以获得在句子中每个单词的作用。
另外,也要看看在相同的被动语态和编写规则的模式。
您可以按做类似doc = nlp(text.decode('utf8'))
问题纸,但这很可能会带给你未来更多的错误。