用户:
小萝卜cXsQ查看:25 回复:3 评论:25 创建时间:2022-12-26T14:59:14
AI,也就是人工智能,总让人觉得很难很高级
而今天,我们就来揭开它的面纱的一部分
制作一个聊天机器人
第一步,编写聊天框架
代码,上!
def main():
read_data()
while 1:
msg = input()
if msg == 'bye':
break
main()
print('bye')
不用我说,点进来的各位都看得懂吧?
第二步,获取数据
一个聊天机器人,怎么能离开海量的数据呢?
不过
我不太会写爬虫
所以
我只能手写
格式如下,有实力的自己写爬虫
消息
回复
我给份现成的
你好
你好
你是谁
我是你的AI聊天机器人
在你的代码目录下新建data文件夹,在底下新建文件data.txt,把数据放进去
第三步,获取数据
上代码
def read_data():
f = open("./data/data.txt", "r", encoding='utf-8')
line1 = f.readline()
line2 = f.readline()
while line1 and line2:
dtmp[line1] = line2
line1 = f.readline()
line2 = f.readline()
把代码放进data.py里,开头写一句dtmp = {}
第四步,实现回复匹配
我们可以这样实现这个功能
首先,使用dtmp.keys()获取所有有回复的消息
然后
获取用户消息与各个回复的相似度
取相似度最大的消息的回复输出
上代码
def get_xsd(str1, str2):
a = 1
a -= abs(len(str1)-len(str2))/max(len(str1), len(str2))
for i in range(min(len(str1), len(str2))):
if (str1[i] != str2[i]):
a -= 1/max(len(str1), len(str2))
return a
def get_response(msg):
max = 0
ans = ""
for i in dtmp.keys():
t = get_xsd(msg, i)
if t > max:
max = t
ans = dtmp[i]
if max<0.01:
return "我不懂你在说什么\n"
return ans
一样的,放data.py里
代码很简单,不用我解释吧?
最后,完善框架
from data.data import *
def main():
read_data()
while 1:
msg = input()
if msg == 'bye':
break
print(get_response(msg), end='')
main()
print('bye')
运行

完结撒花!