首页 >> 大全

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

2023-06-24 大全 40 作者:考证青年

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

前言

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

准备

本项目用到的开发环境

使用软件

GUI开发

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

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

img

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

看看效果先

聊天模块1.0版本

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

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

创建req.json文件

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

建立文件

#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,同时又不想自己训练的话,可以有两个选择

.

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

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

版本1.0

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

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

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

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了