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的包管理器pip更换软件源的方法详解
Jun 20 Python
Python中函数及默认参数的定义与调用操作实例分析
Jul 25 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
python实现二叉查找树实例代码
Feb 08 Python
Python地图绘制实操详解
Mar 04 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
Python获取对象属性的几种方式小结
Mar 12 Python
Python中有几个关键字
Jun 04 Python
Keras设置以及获取权重的实现
Jun 19 Python
django和flask哪个值得研究学习
Jul 31 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
js实现简单的秒表
2020/01/16 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
Python解决鸡兔同笼问题的方法
2014/12/20 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
python实现简单颜色识别程序
2020/02/19 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
日语专业个人的求职信
2013/12/03 职场文书
关于运动会的稿件
2014/02/02 职场文书
大四学生个人总结
2015/02/15 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android