使用NLTK RegexpParser查找主语、宾语、动词组合



我正在尝试使用NLTK工具包提取主宾动词组合。这是我到目前为止的代码。我怎么能做到呢?

import nltk
from nltk.tokenize import sent_tokenize, word_tokenize
grammar = r"""
  NP:
    {<.*>+}          # Chunk everything
    }<VBD|VBZ|VBP|IN>+{      # Chink sequences of VBD and IN
  """
cp = nltk.RegexpParser(grammar)
s = "This song is the best song in the world. I really love it."
for t in sent_tokenize(s):
    text = nltk.pos_tag(word_tokenize(t))
    print cp.parse(text)

您可以尝试的一种方法是将句子分成np(名词短语)和vp(动词短语),然后在此基础上构建RBS(基于规则的系统)以建立块角色。例如,如果VP在activevvoice中,那么Subject应该是VP前面的块。如果是被动语态,则应该是下面的NP。

你也可以看一下Pattern。en。解析器包含了关系提取:http://www.clips.ua.ac.be/pages/pattern-en#parser

最新更新