来做一个聊天机器人吧[1]
来做一个聊天机器人吧[1]
- 前言
- 准备
- GUI开发
- 聊天模块1.0版本
- 语音合成1.0版本
- 版本1.0
前言
课程设计自己选了这个课题,因为之前就对NLP(Natural Language Processing)有一些兴趣,英语文献综述也是以这个为主题来写的。虽然只学了一点点皮毛,哈哈其实还是挺有趣的
准备
本项目用到的开发环境
python3.6
版本
mySQL
数据库,教程
MongoDB
数据库,教程
使用软件
PyCharm
,写pythonNavicat premium 15
,数据库图形化工具Visual Studio Code
,嘿嘿
GUI开发
python的GUI开发,最简洁的当然是Tkinter
了,但是我觉得应该牛批高级一些,就选用了PyQt5
库来开发机器人的图形化界面。
首先,感谢大佬的文章python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
我的程序也是基于这个框架来改的
看看效果先
聊天模块1.0版本
聊天模块想到最简单的方法就是调用API接口了,
- 首先可以去图灵机器人注册一个账号
- 登录后点击 创建机器人
- 在机器人设置界面找到你的 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,同时又不想自己训练的话,可以有两个选择
win32com.client
import win32com.clientspeaker = win32com.client.Dispatch("SAPI.SpVoice")speaker.Speak("Hello, it works!")
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]相关推荐
- python制作聊天机器人原理_用 Python 来做一个聊天机器人吧!(一)
在我的一个回答里,我提到了用 Python 搭建聊天机器人.从今天开始,我就带着大家从0开始搭建一个聊天机器人. (顺便说一句,我喜欢把链接像上面这样加在文字里,如果找不到文中所说的资源,可以看看周围 ...
- 树莓派做一个聊天机器人
首先来安装所需要的第三方库: pip3 install baidu-aip 为了播放音频,还需要安装播放器: sudo apt-get install omxplayersudo apt-get -y ...
- C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人
Fighting! 一.C/S概念 1.1 什么是C/S 1.2 C/S与B/S的区别 二.主页面 三.介绍 四.特征 五.jServer 六.jMessenger 七.使用代码 7.1 导入项目后报 ...
- python第三方聊天机器人_用 Python 来做一个聊天机器人吧!(特别篇)
何去何从? 原计划第三篇要写机器学习的内容,然而文章还没写完,酷Q没了. 可是,真的没有办法了吗? 我们相信冬天总会过去,不过,在春天到来之前,生一丛篝火取暖,也算是聊胜于无吧. 这篇文章,我将介绍如 ...
- python制作聊天机器人_如何制作一个聊天机器人?
这样,我们岂安科技的斜杠青年用1100字教你做一个聊天机器人出来吧.关键词Zulip.Python.以下,GO~ ------- Zulip是什么 Zulip是移动和桌面办公聊天解决方案开发商 一个强 ...
- 机器学习做自动聊天机器人_我和一个治疗机器人聊天,缓解了我对Covid的恐惧。 这很奇怪。
机器学习做自动聊天机器人 重点 (Top highlight) On a hot afternoon in June, I downloaded a free mental health app ca ...
- 当你对一个聊天机器人敞开了心扉
▼ 点击上方蓝字 关注网易智能 聚焦AI,读懂下一个大时代! [网易智能讯 2月2日消息]几个月前,凯特·普客给她的朋友Jasper发了一条信息,内容与她的同事有关.普客19岁,在她的家乡华盛顿州斯波 ...
- 如何设计一个聊天机器人?谈谈聊天机器人技术栈
如果你正在为一个客户设计一个聊天机器人(咨询,开发,原型设计--),这段对话可能听起来很熟悉: 客户:「实现我的机器人最佳技术的是什么?」 我:「不仅仅是一项技术,而是一系列的多种技术.每项技术都可以 ...
- 机器学习做自动聊天机器人_您不应该使用聊天机器人的3个原因
机器学习做自动聊天机器人 现在,基于云的聊天机器人几乎是旧技术. 他们已经有四年了. 和接待肯定是混合的 . 上周,几家合作机构的研究人员公布了正式的书面内容,称为``第二次对话智能挑战赛'',这是聊 ...
最新文章
- C++ algorithm中find系列函数总结
- 【控制】《多无人机协同控制技术》周伟老师-第2章-多无人机协同控制体系结构
- POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)
- CentOS5.6下配置rsync内网同步数据到外网
- 理解Linux系统中的load average
- 移动支付php,银联手机支付服务端PHP端代码
- 关于如何在BCB中使用CodeGuard
- 看透设计模式-行为型模式
- 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库
- 转速、电流双闭环控制的直流调速系统
- 一元多次方程C语言,C语言解决多元多次方程.(19页)-原创力文档
- if语句(判断年月日)
- android 百度地图
- iOS描述文件(.mobileprovision)一键申请
- linux12 -MYSQL数据库 --> 19数据库面试必备手册
- 链表的倒转, K个一组倒转问题
- 【Linux】logrotate 详细介绍,看完就会
- 页面相关的数据存储(缓存及Web Storage)
- NLP和计算机视觉在AI教育的那些年,数据桎梏一直是难点
- APT污水 - 使用多阶段高度混淆的PowerShell在内存中运行
热门文章
- 链表、结构体和数组对比
- 刘歌 php,【刘歌乔】姓名算命测试,刘歌乔姓名五格测试,免费名字算命测试,姓名算命最准的网站...
- 百度站长平台VIP俱乐部服务全面升级
- 如何用PS给背光的图片调亮
- 虹科物联网设备安全分析与防护平台——更智能的工业通信协议黑盒模糊测试
- 【第六章】STM32单片机+NB-IoT模组BC95采集温湿度数据发到电信平台(下)
- Sygate3.0 的用法
- 这家要上市的独角兽应该是今年最没面子的独角兽了
- 【渝粤教育】电大中专职业健康与安全作业 题库
- oracle数据库常驻内存,oracle如何让表常驻内存?