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网络编程之读取网站根目录实例
Sep 30 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
python如何为创建大量实例节省内存
Mar 20 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
解决 jupyter notebook 回车换两行问题
Apr 15 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 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 获取远程文件内容的函数代码
2010/03/24 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
python发送邮件实例分享
2017/07/28 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
使用python爬取B站千万级数据
2018/06/08 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
同学聚会老师邀请函
2014/01/28 职场文书
学生思想表现的评语
2014/01/30 职场文书
股份转让协议书
2014/04/12 职场文书
会员活动策划方案
2014/08/19 职场文书
小孩不笨观后感
2015/06/03 职场文书
幸福来敲门观后感
2015/06/04 职场文书
解除合同协议书范本
2016/03/21 职场文书
靠谱准确的求职信
2019/04/02 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL