Python NLP时钟机器人-如何使用NLTK从文本输入中正确提取信息并运行某些功能?

Python NLP时钟机器人-如何使用NLTK从文本输入中正确提取信息并运行某些功能?,python,nlp,artificial-intelligence,nltk,bots,Python,Nlp,Artificial Intelligence,Nltk,Bots,我正在尝试使用NLTK(natural language toolkit)在python中构建一个机器人,它可以告诉用户何时输入问题:现在几点 我提出了以下两种解决方案(我不确定这是否是正确的方法,没有太多的示例/文档可以帮助我了解NLTK) 在第一种方法中,我检查问题中的“时间”一词,如果在那里,我显示当前时间: sent_tokenized = word_tokenize('What time it is?') train_sents = [] file = ["What/WP time/

我正在尝试使用NLTK(natural language toolkit)在python中构建一个机器人,它可以告诉用户何时输入问题:现在几点

我提出了以下两种解决方案(我不确定这是否是正确的方法,没有太多的示例/文档可以帮助我了解NLTK)

在第一种方法中,我检查问题中的“时间”一词,如果在那里,我显示当前时间:

sent_tokenized = word_tokenize('What time it is?')

train_sents = []
file = ["What/WP time/NN it/PRP is/VBZ ?/."]
for line in file:
    train_sents.append([nltk.tag.str2tuple(t) for t in line.split()])


unigram_tagger = nltk.UnigramTagger(train_sents)
tagged_sentence = unigram_tagger.tag(sent_tokenized)

for token in tagged_sentence:
    if token[0] == "time" and token[1] == "NN":
        print "The time is: " + strftime("%H:%M:%S", gmtime())
第二种方法是使用自定义标记(如“INTENT”)标记单词“time”,并训练上述
unigram\u tagger
,因此当在循环中遇到标记“INTENT”时,bot将再次显示时间:

train_sent = "What/WP time/INTENT it/PRP is/VBZ ?/."
这些方法中有哪一种指向正确的方向,或者我如何以正确的方式做到这一点


谢谢

为什么“现在几点?”而不是“现在几点?”@Tagc这只是一个输入错误。我的意思是,你想让你的机器人回应用户问“现在几点?”(预期)、“现在几点?”(奇怪)还是两者都问?那么,你的问题是什么?你的代码在我的机器上运行良好。。。如果你问“我做得对吗?”这似乎主要是基于观点的,但假设我有20个函数:tellTime()、playMusic()、turnOnLights()等等,如果使用上述方法(第一个),我会继续写if语句,事情会变得有点混乱。我想知道的是,如何像职业选手那样处理这个问题。