如何打印文本主题

时间:2016-01-31 02:02:55

标签: python python-3.x nltk

我使用此代码来确定句子的主题和时间/位置。

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()

我如何只打印句子的主题?

1 个答案:

答案 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;是你想要画的。