我使用此代码来确定句子的主题和时间/位置。
from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
import nltk
text = input('Please enter a sentence: ')
words = text.split()
sentence = pos_tag(words)
grammar = '''
Action: {<NN.*>?<VB.*><RB.*>?}
Location: {<IN><NN.*>+}
Subject: {<DT>?<JJ>*<NN.*>}
'''
cp = nltk.RegexpParser(grammar, "Input")
result = cp.parse(sentence)
result.draw()
我如何只打印句子的主题?
答案 0 :(得分:0)
您可以使用&#34;标签&#34;属性Tree对象。在这里,我设置了一个循环来检查结果的每个元素,看它是否是一个nltk.tree.Tree实例。然后,如果标签是&#34;主题&#34;,则附加t
subject = []
for word in result:
print word
if isinstance(word, nltk.tree.Tree):
if word.label() == 'Subject':
subject.append(word)
# Sentence returned multiple subjects, including direct object, so draw first one
subject[0].draw()
当然,这假定标记为&#34;主题&#34;是你想要画的。