繁体   English   中英

创建一个 AI 聊天机器人,无需学习如何回答用户提出的每个问题即可学习如何聊天

[英]Create a AI chatbot that learns how to chat without learning how to answer every question given by the user

我的代码只是这个,它只会识别特定的问题......否则它会要求答案......但我希望它能够学习并尝试自我回答我的新问题。

例子:

input("hello")

output("Hi, how are you?")

在不教人工智能聊天机器人如何回应“嗨”的情况下,我希望它也能够回应

喜欢:

 input("Hi")

 output("Hello, how are you?")

这对我来说非常困难,这就是为什么我要求回答

我当前的代码:

said = []
output = []
text = ""

global n

while True:
    text = input("Say something: ")
    if not(text == ""):
        if not(text == "print(input, output)"):
            input_contain = text.lower() in said

            if input_contain:
                n = 0
                found = False
                while not found:
                    if said[n] == str(text.lower()):
                        print(output[n])
                        found = True
                    else:
                        n = n + 1
            else:

                output_add = input("What should I respond to that? ")
                if not output_add == "":
                    said.append(text.lower())
                    output.append(output_add)
                else:
                    print("Error in output")
        else:

            for qn in said:
                if not qn == int(len(said)) - 1:
                    print(str(qn), end=", ")
                else:
                    print(qn)

            for out in output:
                if not out == int(len(output)) - 1:
                    print(str(out), end=", ")
                else:
                    print(out)

    else:
        print("Error in input") 

如果您有一组预先构建的响应,例如“嗨,你好吗”,您可以为此类响应构建一组适当的提示问题,并比较用户输入和您已知的相似度(例如使用spacy nlp )提示问题。

您可以采用相似度最高的提示问题,以识别先前已映射到响应的最相似问题 - 然后回答该问题的答案作为响应。


例如,“你好”和“嗨”的相似度比“你好”和“什么是可怕的动物?”具有更高的相似度(0.9 左右)。 做(接近0)..

所以如果你有

“什么是可怕的动物?” ==> "老虎",

“嗨” => “你好,你好吗”?

“你好”会 map 0.9 到“嗨”,接近 0 到“什么是可怕的动物”,所以选择“你好”的答案,即“你好,你好吗?”

“什么是凶猛的动物”会 map 更接近“什么是可怕的动物”,所以选择老虎。


为了让您的程序改进,您需要将映射保存在某处并添加更多.. 这大致是 GOFAI 聊天机器人的工作方式

机器学习是一种统计机制。 这是一个有点相关的链接: “估计”提前需要的培训量

就个人而言,这不是“智能”。 想象一下,当用户说出要在未来问题中重复使用的内容时,必须在现场重新训练机器人。

还有另一种以聊天机器人方式回答问题的方法,称为自然语言处理(检查 stackoverflow 标签 NLP)。 特别是逻辑/语义处理可以将用户输入分解为其组成部分,并从那里开发出适当的响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM