猫史档案馆


【硬核】python制作匹配式聊天机器人

用户:小萝卜cXsQ小萝卜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')

运行

center_image

完结撒花!


回复

上一页1 页 / 共 1下一页
小萝卜cXsQ小萝卜cXsQ

打个广告,最新模型在一些与数据相似度不高的问题中,与人类相似度达到了83.3%,相较于文中模型的33.3%,提高了50%!

上图

center_image

 

点赞0


评论


小萝卜cXsQ小萝卜cXsQ

顶顶顶

点赞0


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

调用api有什么好说的()()()

点赞0


评论