我的代码是这样的,它只能识别特定的问题……否则它会问你答案。但我希望它能够学习并尝试自我回答我的新问题。
示例:
input("hello")
output("Hi, how are you?")在不教ai聊天机器人如何响应"hi“的情况下,我希望它也能够响应。
像这样:
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") 发布于 2019-11-07 20:16:29
如果您有一组预先构建的响应,例如"Hi,how are you",您可以为这些响应构建一组适当的提示问题,并比较用户输入和已知提示问题之间的相似性(例如,使用spacy nlp)。
您可以采用最高的相似提示问题,以便识别之前映射到响应的最相似的问题-然后回答该问题的答案,作为响应。
例如,"Hello“和"Hi”的相似度(0.9左右)比"Hello“和"What is a scary animal?”要高得多。do (接近0)..
所以如果你有
“什么是可怕的动物?”==>“老虎”
“嗨”=>“你好,你好吗?”
"Hello“会将0.9映射为"Hi”,而将接近0的值映射为"What is a scary animal",因此请选择“Hello”的答案,即"Hello,how are you?“
“什么是凶猛的动物”会更接近于“什么是可怕的动物”,所以选择老虎吧。
为了允许您的程序改进,您需要将映射保存在某个位置并添加更多映射。这就是GOFAI聊天机器人的工作原理
发布于 2020-09-27 17:45:00
机器学习是一种统计机制。这里有一个有点相关的链接:"Estimate" the amount of training needed in advance
就我个人而言,这不是“智慧”。想象一下,当用户说了一些要在将来的问题中重用的事情时,必须在现场重新训练机器人。
还有另一种以聊天机器人的方式回答问题的方法,称为自然语言处理(请查看stackoverflow标签NLP)。特别是,逻辑/语义处理可以将用户输入分解为其组成部分,并从中开发出适当的响应。
https://stackoverflow.com/questions/58748516
复制相似问题