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

  1. # -*- coding: utf- -*-
  2. import aiml
  3. import sys
  4. import os
  5.  
  6. def get_module_dir(name):
  7. print("module", sys.modules[name])
  8. path = getattr(sys.modules[name], '__file__', None)
  9. print(path)
  10. if not path:
  11. raise AttributeError('module %s has not attribute __file__' % name)
  12. return os.path.dirname(os.path.abspath(path))
  13.  
  14. alice_path = get_module_dir('aiml') + '\\botdata\\alice'
  15.  
  16. os.chdir(alice_path) # 切换到语料库所在工作目录
  17.  
  18. alice = aiml.Kernel() # 创建机器人alice对象
  19. alice.learn("startup.xml") # 加载...\\botdata\\alice\\startup.xml
  20. alice.respond('LOAD ALICE') # 加载...\\botdata\\alice目录下的语料库
  21.  
  22. while True:
  23. message = input("Enter your message >> ")
  24. if("exit" == message):
  25. exit()
  26. response = alice.respond(message) # 机器人应答
  27. print(response)

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

效果图如下所示:

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

代码如下所示:

  1. from urllib.request import urlopen,Request
  2. from urllib.error import URLError
  3. from urllib.parse import urlencode
  4. import json
  5.  
  6. class TuringChatMode(object):
  7. """this mode base on turing robot"""
  8.  
  9. def __init__(self):
  10. # API接口地址
  11. self.turing_url = 'http://www.tuling123.com/openapi/api?'
  12.  
  13. def get_turing_text(self,text):
  14. ''' 请求方式: HTTP POST
  15. 请求参数: 参数 是否必须 长度 说明
  16. key 必须 APIkey
  17. info 必须 - 请求内容,编码方式为"utf-8"
  18. userid 必须 MAC地址或ID
  19. '''
  20. turing_url_data = dict(
  21. key = 'fcbf9efe277e493993e889eabca5b331',
  22. info = text,
  23. userid = '60-14-B3-BA-E1-4D',
  24.  
  25. )
  26. # print("The things to Request is:",self.turing_url + urlencode(turing_url_data))
  27. self.request = Request(self.turing_url + urlencode(turing_url_data))
  28. # print("The result of Request is:",self.request)
  29.  
  30. try:
  31. w_data = urlopen(self.request)
  32. # print("Type of the data from urlopen:",type(w_data))
  33. # print("The data from urlopen is:",w_data)
  34. except URLError:
  35. raise IndexError("No internet connection available to transfer txt data")
  36. # 如果发生网络错误,断言提示没有可用的网络连接来传输文本信息
  37. except:
  38. raise KeyError("Server wouldn't respond (invalid key or quota has been maxed out)")
  39. # 其他情况断言提示服务相应次数已经达到上限
  40.  
  41. response_text = w_data.read().decode('utf-8')
  42. # print("Type of the response_text :",type(response_text))
  43. # print("response_text :",response_text)
  44.  
  45. json_result = json.loads(response_text)
  46. # print("Type of the json_result :",type(json_result))
  47. return json_result['text']
  48.  
  49. if __name__ == '__main__':
  50. print("Now u can type in something & input q to quit")
  51.  
  52. turing = TuringChatMode()
  53.  
  54. while True:
  55. msg = input("\nMaster:")
  56. if msg == 'q':
  57. exit("u r quit the chat !") # 设定输入q,退出聊天。
  58. else:
  59. turing_data = turing.get_turing_text(msg)
  60. print("Robot:",turing_data)

效果图如下:

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

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

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

Python实现机器人聊天的更多相关文章

  1. 用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  2. Python实现机器人语音聊天

    一.前言说明 1.功能简述 登录后进入聊天界面,如果服务器都在同一个地址,则都进入同一个房间 进入/离开/发消息同一房间用户都可以看到,输入“tuling”或“chatbot”可以切换为和Tuling ...

  3. Python微信机器人

    Python微信机器人 本文目录 一 简介 二 登录微信 三 微信好友男女比例 四 微信好友地域分布 五 微信聊天机器人 一 简介 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量 ...

  4. Java接入图灵机器人,实现与机器人聊天

    很多人都玩过微信,其中就有与机器人聊天的功能:

  5. Vue2 全家桶仿 微信App 项目,支持多人在线聊天和机器人聊天

    前言 这个项目是利用工作之余写的一个模仿微信app的单页面应用,整个项目包含27个页面,涉及实时群聊,机器人聊天,同学录,朋友圈等等,后续页面还是开发中.写这个项目主要目的是练习和熟悉vue和vuex ...

  6. Python实现文字聊天室

    你是否想过用所学的Python开发一个图形界面的聊天室程序啊? 像这样的: 如果你想开发这样一个有点怀旧风格的聊天程序,那么可以接着看: 要开发这个聊天程序,你需要具备以下知识点: asyncore ...

  7. python写机器人玩僵尸骰子

    python写机器人玩僵尸骰子由Al Sweigart用python发布注意:我正在为我的僵尸骰子模拟器寻找反馈,以及这一套指令.如果你觉得有什么地方可以改进,请发邮件到al@inventwithpy ...

  8. python模拟QQ聊天室(tcp加多线程)

    python模拟QQ聊天室(tcp加多线程) 服务器代码: from socket import * from threading import * s = socket(AF_INET,SOCK_S ...

  9. 一个使用 Python 的人工智能聊天机器人框架

    一个Python 的 AI Chatbot框架 建立一个聊天室可以听起来很棒,但它是完全可行的. IKY是一个内置于Python中的AI动力对话对话界面. 使用IKY,很容易创建自然语言会话场景,无需 ...

随机推荐

  1. js 处理金额各个位数上的值

    //金额处理 var number = 1234567.35; if (parseInt(number) == number) { var money = number.toString().spli ...

  2. 2018-11-21 手工翻译Vue.js源码第一步:14个文件重命名

    背景 对现有开源项目的代码进行翻译(文件名/命名/注释) · Issue #107 · program-in-chinese/overview 简单地说, 通过翻译源码, 提高项目代码可读性(对于母语 ...

  3. Ehcache配置详解及CacheManager使用

    <?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="http://w ...

  4. Android IPC机制(四)用ContentProvider进行进程间通信

    前言 ContentProvider为存储和获取数据提供统一的接口,它可以在不同的应用程序之间共享数据,本身就是适合进程间通信的.ContentProvider底层实现也是Binder,但是使用起来比 ...

  5. C# 开启一个新进程并为新进程设置工作目录

    Process p = new System.Diagnostics.Process(); //设置新进程的工作目录,如果不设置那么新进程的工作目录为开启这个进程的工作目录 p.StartInfo.W ...

  6. Android 内存管理中的 Shallow heap Retained heap

    所有包含Heap Profling功能的工具(MAT,Yourkit,JProfiler,TPTP等)都会使用到两个名词,一个是Shallow heap Size,另一个是 Retained heap ...

  7. 根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面

    纯js,直接分享,直接使用: var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVe ...

  8. Android 模块构建错误不能下载依赖包

    在模块的build.gradle里面添加了 implementation 'com.android.support:design:26.1.0' 构建的时候一直报这个错 Unable to resol ...

  9. 【audio】耳机插拔 线控按键识别流程【转】

    耳机插拔/线控按键识别流程 耳机插拔/线控按键识别流程 1.文档概述 本文以msm8909平台,android N为例,介绍了通用情况下,耳机插拔的流程步骤,以及对耳机类型的识别逻辑.以方便在项目工作 ...

  10. win8.1安装win64_11gR2_database_2of2 【INS-13001]】环境不满足最低要求问题

    1. 如图问题: 2. 修改 database\stage\cvu\cvu_prereq.xml, 添加windows 8.1 <OPERATING_SYSTEM RELEASE="6 ...