SDUWH2019-2020寒假python实训--my_chat

本文详细介绍了一种基于人工智能的对话系统设计与实现过程,包括对话流程管理、命令解析、图像下载等功能,以及如何通过对话历史记录的学习来提升系统的响应能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import my_chat_function as cf
import my_baidu_img_dwn as bd_dwn

# 做对话
chat_list = ['你好', '你也好,有什么可以效劳的?', '天气怎么样', '西北风偏多', '拜拜']
cmd_list = ['画六边形','画小猪佩奇','打开百度','下载或搜索']
i = 0
# 下载“李小龙”
'''
床前明月光
1. 检测匹配度 0
2. 这是知道,没有这个问题
    处理:
        给用户说明一下,这个问题,我的存储中没有,还没学会,能不能告诉我怎么回答,
        我把这个回答,加入到我的存储中  chat_list
        如果用户准了,用户回答这个问题
        小明就要,加入这个问题及回答
# 保存对话内容
1. 在刚开始运行的时候,先读取
2. 添加新内容的时候,写入文件
'''
# chat_list更新
try:
    # FileNotFoundError: [Errno 2] No such file or directory: 'mychat.txt'
    with open('mychat.txt','r',encoding='utf8') as f:
        # chat_list = f.readlines()  1-2-3  分隔符’-‘  得到的结果 [1,2,3]
        chat_list = f.read().split('\n')  # .join的反向操作
    # 假设在尾部都多一个换行符’\n‘, 去掉最后一个换行符
    # chat_list = [i[:-1] for i in chat_list]
except FileNotFoundError:
    print('没有外部对话内容!')


print('小明:', '你好')
while True:
    a = input('老陈:')
    # 停止语句
    if a == '退出':
        break
    # 完成a与chat_list中的所有字符串进行比较,选择相似度最大的那个作为目标索引
    # print('小明:', chat_list[chat_list.index(a) + 1])
    #
    cur_index_chat, cur_rate_chat = cf.get_chat_str_index(a, chat_list)
    cur_index_cmd, cur_rate_cmd = cf.get_chat_str_index(a, cmd_list)
    # 看一下谁最大,cmd chat
    if cur_rate_cmd>cur_rate_chat:
        cur_rate = cur_rate_cmd
        cur_index = cur_index_cmd
        if cmd_list[cur_index] == '画六边形':
            from RobotOnclass import chp34
            chp34.my_draw_six()
            print('小明:', '已经为您画了很多六边形,您还满意。')
        elif cmd_list[cur_index] == '画小猪佩奇':
            import peiqi
            peiqi.my_draw_peiqi()
            print('小明:', '已经为您画了很多小猪佩奇,您还满意。')
        elif cmd_list[cur_index] == '打开百度':
            import webbrowser
            webbrowser.open('www.baidu.com')
            print('小明:', '已经为您打开了百度,您还满意。')
        elif cmd_list[cur_index] == '下载或搜索':
            # 下载“李小龙”
            word = a[a.index('“')+1:a.index('”')]
            page_num = 2
            img_list = bd_dwn.my_download(word,page_num)
            bd_dwn.my_save_img(f'download/{word}', img_list, word)
            print('小明:', f'已经为您下载好了{word},存放到了download/{word}路径下,您还满意。')
    else:
        cur_rate = cur_rate_chat
        cur_index = cur_index_chat
        if cur_rate < 1:
            print('小明:', '这个问题,我的存储中没有,还没学会,能不能告诉我怎么回答?1:是,2:否')
            b = input('老陈:')
            if b == '1':
                print('小明:', '我准备好接收了,请讲:')
                c = input('老陈:')
                # 保存
                chat_list.append(a)
                chat_list.append(c)
                print('小明:', '我已经接收了,谢谢。')
                # 添加完成后,需要保存一下
                with open('mychat.txt', 'w', encoding='utf8') as f:
                    f.write('\n'.join(chat_list))  # 使用字符串’\n‘的拼接里列表中的所有元素,构成一个长字符串
                    # f.writelines(chat_list)
            else:
                cur_index = -1
        print('小明:', chat_list[(cur_index + 1) % chat_list.__len__()])




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KingoKing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值