如何识别句子的主语?

sin*_*alc 15 python nlp nltk

Python + NLTK可以用来识别句子的主语吗?从我所学到的,到现在为止,一句话可以被分解成一个头及其家属.例如"我拍了一头大象".在这句话中,我和大象是家属拍摄的.但我怎么辨别这句话中的主语是我.

Soh*_*han 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) 
Run Code Online (Sandbox Code Playgroud)


Nik*_*sev 14

正如NLTK书(练习29)所说,"在英语中定义句子S的主题的一种常见方式是作为S的孩子和VP的兄弟的名词短语."

看一下树的例子:的确,"我"是名词短语,它是S的孩子,是VP的兄弟,而"大象"则不是.

  • 谢谢你指点我的相应部分.我能够使用书中的例子来识别NP,但我现在明白,识别该主题将是两个标准的组合--S的孩子和VP的兄弟.你能否指出我在一个句子中识别主语的代码示例?谢谢. (2认同)
  • 这是旧文章,但是如何在不手动定义树的情况下生成树?我还没看 (2认同)

ris*_*shi 7

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

它遵循subject-verb-object模型.要标记主题,请编写带有POS标记的规则集.标记句子I[NOUN] shot[VERB] an elephant[NOUN].如果你看到第一个名词是主语,那么就有一个动词然后有一个对象.

如果你想让它更复杂,一句话 - I shot an elephant with a gun.在这里,介词或从属连词如with,at,in可以被赋予角色.这句话将被标记为I[NOUN] shot[VERB] an elephant[NOUN] with[IN] a gun[NOUN].你可以很容易地说这个词有助于发挥作用.您可以构建一个基于规则的系统来获取句子中每个单词的作用.

还要看一下被动语态中的模式和写入规则.