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设置检查点简单实现代码
Jul 01 Python
python的re模块应用实例
Sep 26 Python
Python生成器(Generator)详解
Apr 13 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
Python网络编程 Python套接字编程
Sep 13 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
python自定义时钟类、定时任务类
Feb 22 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
Apr 21 Python
如何基于Python实现word文档重新排版
Sep 29 Python
python实现图片转字符画的完整代码
Feb 21 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(6) 面向对象
2010/02/16 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
bootstrap table小案例
2016/10/21 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
高中班长自我鉴定
2013/12/20 职场文书
《分一分》教学反思
2014/04/13 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
食品销售计划书
2014/04/26 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
故意伤害辩护词
2015/05/21 职场文书
追悼词范文大全
2015/06/23 职场文书
MYSQL如何查看操作日志详解
2022/05/30 MySQL