Python 聊天机器人:如何正确确定意图?

Python 聊天机器人:如何正确确定意图?,python,chatbot,Python,Chatbot,例如,确定以下意图之间差异的常用技术是什么 现在的温度是多少? 在这种情况下,直接向上响应将是当前温度 现在的温度是22度吗? 在这种情况下,适当的回答是“是”或“否” 我正在构建一个封闭域聊天机器人(例如Siri),我想知道Python中是否有任何技术可以让我了解。我曾经开始编程,试图了解机器人是如何工作的。多么小的世界啊。我几乎不记得我是怎么做的,但让我们假设你根据你的机器人可以读取的事件构建聊天。确定每个事件的答案的一个非常基本的方法是一个包含嵌套行为(理想情况下分为多个方法)的IF-EL

例如,确定以下意图之间差异的常用技术是什么

  • 现在的温度是多少? 在这种情况下,直接向上响应将是当前温度

  • 现在的温度是22度吗? 在这种情况下,适当的回答是“是”或“否”


  • 我正在构建一个封闭域聊天机器人(例如Siri),我想知道Python中是否有任何技术可以让我了解。

    我曾经开始编程,试图了解机器人是如何工作的。多么小的世界啊。我几乎不记得我是怎么做的,但让我们假设你根据你的机器人可以读取的事件构建聊天。确定每个事件的答案的一个非常基本的方法是一个包含嵌套行为(理想情况下分为多个方法)的IF-ELIF内容的庞大列表

    然后,您必须对每个具体情况进行如下编码:

    def specific_temp_asked(message):
        temperature = None
        split_message = message.split(" ")
        for i in split_message:
            try:
                int(i)
                temperature = i
                break
            except:
                pass
        if not temperature == None:
            real_temperature = check_temp(somehow)
            if real_temperature == temperature:
                send_text_to_chat("Yes")
            else:
                send_text_to_chat("Nope")
    

    最后一点注意:这绝不是最好的方法,但如果您正在学习,我会在不太复杂的情况下完成工作,然后您会慢慢改进代码。

    检查itI中是否有数字。这只是一个示例。这可能是一个没有任何数字的问题,但它仍然是一个类型2问题。对于堆栈溢出问题来说,这太宽泛了。感谢您抽出时间回答。发帖后,我在Siri上试了一下(不知道Cortana(或其他机器人)的表现如何),但它对这两个问题的回答都是一样的。所以,可能是我想得太多了,也可能不是。一个机器人会给你的答案和你的代码一样精确。我的机器人有2500个可能的答案,然后我就厌倦了。但对于这2500人中的每一个人,它都有一个具体的理由来回答。诀窍是使用关键字。例如,如果检测到“温度”,他会告诉你温度,不管你真正问什么。您还可以存储同一问题的多个答案,并随机选择其中一个。
    def specific_temp_asked(message):
        temperature = None
        split_message = message.split(" ")
        for i in split_message:
            try:
                int(i)
                temperature = i
                break
            except:
                pass
        if not temperature == None:
            real_temperature = check_temp(somehow)
            if real_temperature == temperature:
                send_text_to_chat("Yes")
            else:
                send_text_to_chat("Nope")