nltk python 3 如果名词在用户输入中,你如何 return true?

nltk python 3 how do you return true if a noun is in the user input?

我正在使用 nltk,下面显示的这个方法应该可以打印 "noun found" 如果输入中有名词。问题是它没有,有人可以展示吗 我该怎么做谢谢!

NOUN_CODES = {
    'NN',  # Noun, base form
    'NNP',  
    'NNS',  
    'NNPS',

    def Command_Noun_Check(what_person_said_l,what_person_said_l_wt):
                        Command_Noun_Result = nltk.pos_tag(what_person_said_l_wt)
                        print (Command_Noun_Result)
                        for x in Command_Noun_Result:

                            if x in NOUN_CODES:

                                print ("Noun Found")
                                return True
                            else:
                                return False

这个简单的函数应该return一个句子中的所有名词。请记住,nltk.pos_tag 需要对句子进行标记化,return 由 nltk.pos_tag 编辑的值是一个元组数组。

import nltk
from nltk.tokenize import word_tokenize as wt

NOUN_CODES = ['NN', 'NNP'] # input any codes you want here

def check_nouns(sentence):
    tokenized = wt(sentence)
    tags = nltk.pos_tag(tokenized)
    return [i[0] for i in tags if i[1] in NOUN_CODES]

在您的代码中,我假设 what_person_said_l_wt 已标记化。在这种情况下,我将按以下方式修改它(使用更好的格式并牢记缩进):

 NOUN_CODES = ['NN','NNP','NNS','NNPS']

 def Command_Noun_Check(what_person_said_l,what_person_said_l_wt):
                        Command_Noun_Result = nltk.pos_tag(what_person_said_l_wt)
                        print (Command_Noun_Result)
                        for x in Command_Noun_Result:

                            if x[1] in NOUN_CODES:

                                print ("Noun Found")
                                return True
                            else:
                                return False