来做一个聊天机器人吧[1]

  • 前言
  • 准备
  • GUI开发
  • 聊天模块1.0版本
  • 语音合成1.0版本
  • 版本1.0

前言

课程设计自己选了这个课题,因为之前就对NLP(Natural Language Processing)有一些兴趣,英语文献综述也是以这个为主题来写的。虽然只学了一点点皮毛,哈哈其实还是挺有趣的

准备

本项目用到的开发环境

  • python3.6 版本

  • mySQL数据库,教程

  • MongoDB数据库,教程

使用软件

  • PyCharm,写python
  • Navicat premium 15,数据库图形化工具
  • Visual Studio Code,嘿嘿

GUI开发

python的GUI开发,最简洁的当然是Tkinter了,但是我觉得应该牛批高级一些,就选用了PyQt5库来开发机器人的图形化界面。

首先,感谢大佬的文章python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例

我的程序也是基于这个框架来改的

看看效果先

聊天模块1.0版本

聊天模块想到最简单的方法就是调用API接口了,

  1. 首先可以去图灵机器人注册一个账号
  2. 登录后点击 创建机器人
  3. 在机器人设置界面找到你的 apikey

创建req.json文件

{"perception":{"inputText":{"text": ""},"selfInfo":{"location":{"city": "北京","province": "北京","street": "天安门"}}},"userInfo":{"apiKey": "你的","userId": "你的"}
}

建立python文件

#coding=utf-8import json
import urllib.requestapi_url = "http://openapi.tuling123.com/openapi/api/v2"
json_path = 'req.json'class TuringDome(object):def __init__(self,json_path="",api_url=""):self.json_path = json_pathself.api_url = api_urlself.text_input = input('请输入我的问话\n我:')def readJson(self):'''获取json文件'''with open(self.json_path,'r',encoding='utf-8') as f_json:json_data = json.load(f_json)return json_datadef textInput(self):'''用变量text_input替换text的value值'''req = self.readJson()req['perception']['inputText']['text'] = self.text_inputreturn reqdef dumpsJson(self):'''将json字符串转化成dict格式'''req = self.textInput()req = json.dumps(req,sort_keys=True,indent=4,).encode('utf8')return reqdef urllibRequestResponse(self):req = self.dumpsJson()http_post = urllib.request.Request(self.api_url, data=req, headers={'content-type': 'application/json'})response = urllib.request.urlopen(http_post)# 在urlopen()方法中传入字符串格式的url地址,则此方法会访问目标网址,然后返回访问的结果。response_str = response.read().decode('utf8')response_dict = json.loads(response_str) # 将字符串response_str转成字典return response_dictdef getTuringResponse(self):'''取得机器人返回的语句并输出'''response_dict = self.urllibRequestResponse()intent_code = response_dict.get('intent')['code']results_text = response_dict.get('results')[0]['values']['text']print('Turing的回答:')print('code:' + str(intent_code))print('text:' + results_text)def talkToTheTuring(self):#self.text_input = input('请输入我的问话\n我:')while True:if self.text_input != "exit:":self.getTuringResponse()self.text_input = input('请输入我的问话\n我:')else:print("*****结束对话!*****")breakif __name__ == '__main__':#passtd = TuringDome(json_path=json_path,api_url=api_url)td.talkToTheTuring()

差不多就可以合并到GUI里面了

效果还不错

语音合成1.0版本

语音合成模块如果不调用API,同时又不想自己训练的话,可以有两个选择

  1. win32com.client

    import win32com.clientspeaker = win32com.client.Dispatch("SAPI.SpVoice")speaker.Speak("Hello, it works!")
    
  2. pyttsx

    # coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')import pyttsxengine = pyttsx.init()engine.say('hello world')engine.runAndWait()# 朗读一次engine.endLoop()
    

    版本1.0

    就这样,程序的初级框架功能就基本上有了,但是还是有些地方不尽如人意,比如聊天机器人是调用的接口而不是自己训练的,语音合成功能声音不好听,语音识别的录音功能还没有实装,其他小功能也还为实现。

    所以接下来会再写一篇程序优化和完善的聊天机器人版本2.0。

    代码还在完善,有需要可以私信哦

来做一个聊天机器人吧[1]相关推荐

  1. python制作聊天机器人原理_用 Python 来做一个聊天机器人吧!(一)

    在我的一个回答里,我提到了用 Python 搭建聊天机器人.从今天开始,我就带着大家从0开始搭建一个聊天机器人. (顺便说一句,我喜欢把链接像上面这样加在文字里,如果找不到文中所说的资源,可以看看周围 ...

  2. 树莓派做一个聊天机器人

    首先来安装所需要的第三方库: pip3 install baidu-aip 为了播放音频,还需要安装播放器: sudo apt-get install omxplayersudo apt-get -y ...

  3. C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人

    Fighting! 一.C/S概念 1.1 什么是C/S 1.2 C/S与B/S的区别 二.主页面 三.介绍 四.特征 五.jServer 六.jMessenger 七.使用代码 7.1 导入项目后报 ...

  4. python第三方聊天机器人_用 Python 来做一个聊天机器人吧!(特别篇)

    何去何从? 原计划第三篇要写机器学习的内容,然而文章还没写完,酷Q没了. 可是,真的没有办法了吗? 我们相信冬天总会过去,不过,在春天到来之前,生一丛篝火取暖,也算是聊胜于无吧. 这篇文章,我将介绍如 ...

  5. python制作聊天机器人_如何制作一个聊天机器人?

    这样,我们岂安科技的斜杠青年用1100字教你做一个聊天机器人出来吧.关键词Zulip.Python.以下,GO~ ------- Zulip是什么 Zulip是移动和桌面办公聊天解决方案开发商 一个强 ...

  6. 机器学习做自动聊天机器人_我和一个治疗机器人聊天,缓解了我对Covid的恐惧。 这很奇怪。

    机器学习做自动聊天机器人 重点 (Top highlight) On a hot afternoon in June, I downloaded a free mental health app ca ...

  7. 当你对一个聊天机器人敞开了心扉

    ▼ 点击上方蓝字 关注网易智能 聚焦AI,读懂下一个大时代! [网易智能讯 2月2日消息]几个月前,凯特·普客给她的朋友Jasper发了一条信息,内容与她的同事有关.普客19岁,在她的家乡华盛顿州斯波 ...

  8. 如何设计一个聊天机器人?谈谈聊天机器人技术栈

    如果你正在为一个客户设计一个聊天机器人(咨询,开发,原型设计--),这段对话可能听起来很熟悉: 客户:「实现我的机器人最佳技术的是什么?」 我:「不仅仅是一项技术,而是一系列的多种技术.每项技术都可以 ...

  9. 机器学习做自动聊天机器人_您不应该使用聊天机器人的3个原因

    机器学习做自动聊天机器人 现在,基于云的聊天机器人几乎是旧技术. 他们已经有四年了. 和接待肯定是混合的 . 上周,几家合作机构的研究人员公布了正式的书面内容,称为``第二次对话智能挑战赛'',这是聊 ...

最新文章

  1. C++ algorithm中find系列函数总结
  2. 【控制】《多无人机协同控制技术》周伟老师-第2章-多无人机协同控制体系结构
  3. POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)
  4. CentOS5.6下配置rsync内网同步数据到外网
  5. 理解Linux系统中的load average
  6. 移动支付php,银联手机支付服务端PHP端代码
  7. 关于如何在BCB中使用CodeGuard
  8. 看透设计模式-行为型模式
  9. 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库
  10. 转速、电流双闭环控制的直流调速系统
  11. 一元多次方程C语言,C语言解决多元多次方程.(19页)-原创力文档
  12. if语句(判断年月日)
  13. android 百度地图
  14. iOS描述文件(.mobileprovision)一键申请
  15. linux12 -MYSQL数据库 --> 19数据库面试必备手册
  16. 链表的倒转, K个一组倒转问题
  17. 【Linux】logrotate 详细介绍,看完就会
  18. 页面相关的数据存储(缓存及Web Storage)
  19. NLP和计算机视觉在AI教育的那些年,数据桎梏一直是难点
  20. APT污水 - 使用多阶段高度混淆的PowerShell在内存中运行

热门文章

  1. 链表、结构体和数组对比
  2. 刘歌 php,【刘歌乔】姓名算命测试,刘歌乔姓名五格测试,免费名字算命测试,姓名算命最准的网站...
  3. 百度站长平台VIP俱乐部服务全面升级
  4. 如何用PS给背光的图片调亮
  5. 虹科物联网设备安全分析与防护平台——更智能的工业通信协议黑盒模糊测试
  6. 【第六章】STM32单片机+NB-IoT模组BC95采集温湿度数据发到电信平台(下)
  7. Sygate3.0 的用法
  8. 这家要上市的独角兽应该是今年最没面子的独角兽了
  9. 【渝粤教育】电大中专职业健康与安全作业 题库
  10. oracle数据库常驻内存,oracle如何让表常驻内存?