我正在尝试使用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