• 情人节用Python智能聊天机器人的实现|制作一个虚拟恋人


     

    首先项目需要的包

    import urllib.request
    import urllib.parse
    from tkinter import *
    import time
    PS:另外很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF等】需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步

    函数部分
    说明:调用服务器接口,实现非特定智能回复

    def get_robot_replay(question):
        '''
        函数功能:对于特定的问题进行特定的回答,对于其他非特定的问题进行智能回复
        参数描述:
        question:聊天内容或者问题
        返回值:str,回复内容
        '''
        if "你叫什么名字"in question:
            answer ="我是游游"
        elif "你多少岁"in question:
            answer="18"
        elif "你是GG还是MM"in question:
            answer="MM"
        else:
            try:
                # 调用NLP接口实现智能回复
                params=urllib.parse.urlencode({'msg':question}).encode() #将str转换成字节类型,参数接口需要进行URL编码
                req = urllib.request.Request("http://api.itmojun.com/chat_robot",params,method="POST")#创建请求对象
                answer=urllib.request.urlopen(req).read().decode()#调用接口(向目标服务器发送HTTP请求)
            except Exception as e:
                answer="AI机器人出现故障!(原因:%s)" % e
        return answer
    

    回复格式方面以及界面设计

    def msgsend():
        msg = '我' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '
    '
        txt_msglist.insert(END, msg, 'green')  # 添加时间
        txt_msglist.insert(END, txt_msgsend.get('0.0', END))  # 获取发送消息,添加文本到消息列表
        msg1 = '游游大宝贝' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '
    '
        txt_msglist.insert(END, msg1, 'green')  # 添加时间
        txt_msglist.insert(END,get_robot_replay(txt_msgsend.get('0.0', END)))
        txt_msgsend.delete('0.0', END)  # 清空发送消息
    
    def cancel():
        txt_msgsend.delete('0.0', END)  # 取消发送消息,即清空发送消息
    
    
    '''绑定up键'''
    
    def msgsendEvent(event):
        if event.keysym == 'Up':
            msgsend()
    

    聊天界面设计

    tk = Tk()
    tk.title('和游游大宝贝的秘聊')
    
    '''创建分区'''
    f_msglist = Frame(height=300, width=300)  # 创建<消息列表分区 >
    f_msgsend = Frame(height=300, width=300)  # 创建<发送消息分区 >
    f_floor = Frame(height=100, width=300)  # 创建<按钮分区>
    f_right = Frame(height=700, width=100)  # 创建<图片分区>
    
    '''创建控件'''
    txt_msglist = Text(f_msglist)  # 消息列表分区中创建文本控件
    txt_msglist.tag_config('green', foreground='blue')  # 消息列表分区中创建标签
    txt_msgsend = Text(f_msgsend)  # 发送消息分区中创建文本控件
    txt_msgsend.bind('<KeyPress-Up>', msgsendEvent)  # 发送消息分区中,绑定‘UP’键与消息发送。
    
    
    '''txt_right = Text(f_right) #图片显示分区创建文本控件'''
    button_send = Button(f_floor, text='Sendz', command=msgsend)  # 按钮分区中创建按钮并绑定发送消息函数
    button_cancel = Button(f_floor, text='Cancel', command=cancel)  # 分区中创建取消按钮并绑定取消函数
    '''分区布局'''
    f_msglist.grid(row=0, column=0)  # 消息列表分区
    f_msgsend.grid(row=1, column=0)  # 发送消息分区
    f_floor.grid(row=2, column=0)  # 按钮分区
    f_right.grid(row=0, column=1, rowspan=3)  # 图片显示分区
    txt_msglist.grid()  # 消息列表文本控件加载
    txt_msgsend.grid()  # 消息发送文本控件加载
    button_send.grid(row=0, column=0, sticky=W)  # 发送按钮控件加载
    button_cancel.grid(row=0, column=1, sticky=W)  # 取消按钮控件加载
    
    
    tk.mainloop()
    

    运行截图

    不错吧。另外很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF等】需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步
    本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 相关阅读:
    Java中new关键字和newInstance方法的区别
    一道关于简单界面设计的练习题
    一道关于接口的练习题
    SPSS与聚类分析
    Nunit中文文档
    对比MS Test与NUnit Test框架
    Unit Test单元测试时如何模拟HttpContext
    如何vs升级后10和12都能同时兼容
    LINQ 从 CSV 文件生成 XML
    使用FileSystemWatcher监视文件变化
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12307406.html
Copyright © 2020-2023  润新知