Python如何实现机器人聊天


Posted in Python onSeptember 10, 2020

今天午休的时候,无意之中看了一篇博客,名字叫Python实现机器人,感觉挺有的意思的。
于是用其写了一个简单的Python聊天,源码如下所示:

# -*- coding: utf-8 -*-
import aiml
import sys
import os
 
 
def get_module_dir(name):
 print("module", sys.modules[name])
 path = getattr(sys.modules[name], '__file__', None)
 print(path)
 if not path:
 raise AttributeError('module %s has not attribute __file__' % name)
 return os.path.dirname(os.path.abspath(path))
 
 
alice_path = get_module_dir('aiml') + '\\botdata\\alice'
 
os.chdir(alice_path) # 切换到语料库所在工作目录
 
alice = aiml.Kernel() # 创建机器人alice对象
alice.learn("startup.xml") # 加载...\\botdata\\alice\\startup.xml
alice.respond('LOAD ALICE') # 加载...\\botdata\\alice目录下的语料库
 
while True:
 message = input("Enter your message >> ")
 if("exit" == message):
 exit()
 response = alice.respond(message) # 机器人应答
 print(response)

注意:如果出现某某模块找不到的时候,记得使用pip安装对应的模块。

效果图如下所示:

Python如何实现机器人聊天

唯一美中不足的是英文,不过没关系,国内有图灵机器人。

代码如下所示:

from urllib.request import urlopen,Request
from urllib.error import URLError
from urllib.parse import urlencode
import json

class TuringChatMode(object):
  """this mode base on turing robot"""

  def __init__(self):
    # API接口地址
    self.turing_url = 'http://www.tuling123.com/openapi/api?'

  def get_turing_text(self,text):
    ''' 请求方式:  HTTP POST
      请求参数:  参数   是否必须    长度     说明
            key    必须     32      APIkey
            info    必须     1-32     请求内容,编码方式为"utf-8"
            userid   必须     32      MAC地址或ID
    '''
    turing_url_data = dict(
      key = 'fcbf9efe277e493993e889eabca5b331',
      info = text,
      userid = '60-14-B3-BA-E1-4D',

    )
    # print("The things to Request is:",self.turing_url + urlencode(turing_url_data))
    self.request = Request(self.turing_url + urlencode(turing_url_data))
    # print("The result of Request is:",self.request)

    try:
      w_data = urlopen(self.request)
      # print("Type of the data from urlopen:",type(w_data))
      # print("The data from urlopen is:",w_data)
    except URLError:
      raise IndexError("No internet connection available to transfer txt data")
      # 如果发生网络错误,断言提示没有可用的网络连接来传输文本信息
    except:
      raise KeyError("Server wouldn't respond (invalid key or quota has been maxed out)")
      # 其他情况断言提示服务相应次数已经达到上限

    response_text = w_data.read().decode('utf-8')
    # print("Type of the response_text :",type(response_text))
    # print("response_text :",response_text)

    json_result = json.loads(response_text)
    # print("Type of the json_result :",type(json_result))
    return json_result['text']

if __name__ == '__main__':
  print("Now u can type in something & input q to quit")

  turing = TuringChatMode()

  while True:
    msg = input("\nMaster:")
    if msg == 'q':
      exit("u r quit the chat !")     # 设定输入q,退出聊天。
    else:
      turing_data = turing.get_turing_text(msg)
      print("Robot:",turing_data)

效果图如下:

Python如何实现机器人聊天

可能由于机器人智能太低了,有点答非所问。

更多精彩可以去图灵机器人官网了解:http://www.tuling123.com

编程的世界是有趣的,你去探索,你会发现很多有意思的事情。

以上就是Python如何实现机器人聊天的详细内容,更多关于python 实现机器人聊天的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
浅谈Python单向链表的实现
Dec 24 Python
Python如何实现文本转语音
Aug 08 Python
Python中import机制详解
Nov 14 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
python直接获取API传递回来的参数方法
Dec 17 Python
python制作图片缩略图
Apr 30 Python
python3在同一行内输入n个数并用列表保存的例子
Jul 20 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
python爬虫---requests库的用法详解
Sep 28 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 Python
Pytorch可视化的几种实现方法
Jun 10 Python
Python 必须了解的5种高级特征
Sep 10 #Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 #Python
利用python 读写csv文件
Sep 10 #Python
如何用Python 加密文件
Sep 10 #Python
Python 高效编程技巧分享
Sep 10 #Python
python操作redis数据库的三种方法
Sep 10 #Python
Python计算矩阵的和积的实例详解
Sep 10 #Python
You might like
一个ftp类(ini.php)
2006/10/09 PHP
php 正则表达式小结
2009/08/31 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
js判断密码强度的方法
2020/03/18 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python简单程序读取串口信息的方法
2015/03/13 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
装修五一活动策划案
2014/01/23 职场文书
职务聘任书范文
2014/03/29 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
Java集成swagger文档组件
2021/06/28 Java/Android