“话语”是一种方法吗?

时间:2017-06-21 11:54:43

标签: python attributes

使用这个聊天机器人教程(https://apps.worldwritable.com/tutorials/chatbot/),我被困在第一个基地......这可能是一个非常初学的错误,抱歉。

所以我把这段代码放在Ipython中:

import numpy as np 
phrase = ["hello"] 
np_phrase = np.array(phrase) 
check_for_greeting(np_phrase)

然后用:

来调用它
'this "kind" of string'

还尝试了不同类型但总是相同的答案:'x'对象没有属性'words'

'words'是一种方法吗?它是如何工作的?

我非常感谢你,我一直在寻找答案,我保证。

2 个答案:

答案 0 :(得分:4)

你错过了教程中至关重要的内容:

parsed = TextBlob(cleaned)

然后将该对象传递给check_for_greeting()函数:

resp = check_for_greeting(parsed)

TextBlob的实例有words attribute。该教程实际上教你关于该对象,链接到project documentation

  

使用NLP的Python程序员有两个很棒的高级库可供选择:TextBlobspaCyspaCy易于使用且速度快,但它可能是内存密集型的,并不会尝试覆盖整个统计NLP。 TextBlob将庞大的NLTK库包装在一个非常平易近人的API中,所以尽管速度较慢,但​​它非常全面。我将在这里使用TextBlob,但请参阅我的文章生成文章以获取使用spaCy的示例。

如果您想在本地使用相同的代码,您也必须使用TextBlob调整功能以将sentence视为序列单词(删除.words属性)。

答案 1 :(得分:0)

通常当你循环一个列表或在这种情况下是一个numpy.ndarray时,你会解释它如何定义它。

在这种情况下,你设置句子并循环翻译单词。这不适用于此示例,表示我们无法查看该聊天机器人的所有代码。

如果我在下面打印,它会打印出来并发现它'但它不打印随机响应,我怀疑random.choice是我看不到的脚本中的某个函数。

def check_for_greeting(sentence):
print type(sentence)
for word in sentence:
    if word.lower() in GREETING_KEYWORDS:
        print "Found it"
        return random.choice(GREETING_RESPONSES)

我希望这有帮助。