Python如何实现机器人聊天

 更新时间:2020年09月10日 10:49:39   作者:挑战者V  
这篇文章主要介绍了Python如何实现机器人聊天,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下

今天午休的时候,无意之中看了一篇博客,名字叫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安装对应的模块。

效果图如下所示:

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

代码如下所示:

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)

效果图如下:

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

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

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

以上就是Python如何实现机器人聊天的详细内容,更多关于python 实现机器人聊天的资料请关注脚本之家其它相关文章!

相关文章

  • 状态机的概念和在Python下使用状态机的教程

    状态机的概念和在Python下使用状态机的教程

    这篇文章主要介绍了状态机的概念和在Python下使用状态机的教程,本文来自于IBM官方开发者技术文档,需要的朋友可以参考下
    2015-04-04
  • 利用Python爬虫给孩子起个好名字

    利用Python爬虫给孩子起个好名字

    每个人一生中都会遇到一件事情,在事情出现之前不会关心,但是事情一旦来临就发现它极其重要,并且需要在很短的时间内做出重大决定,那就是给自己的新生宝宝起个名字。下面这篇文章主要介绍了如何利用Python爬虫给孩子起个好名字,需要的朋友可以参考下。
    2017-02-02
  • Django的开发步骤原来是这样的

    Django的开发步骤原来是这样的

    这篇文章主要为大家详细介绍了Django的开发步骤,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Python matplotlib实战之散点图绘制

    Python matplotlib实战之散点图绘制

    散点图,又名点图、散布图、X-Y图,是将所有的数据以点的形式展现在平面直角坐标系上的统计图表,本文主要为大家介绍了如何使用Matplotlib绘制散点图,需要的可以参考下
    2023-08-08
  • python使用os.listdir和os.walk获得文件的路径的方法

    python使用os.listdir和os.walk获得文件的路径的方法

    本篇文章主要介绍了python使用os.listdir和os.walk获得文件的路径的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • python基于itchat模块实现微信防撤回

    python基于itchat模块实现微信防撤回

    这篇文章主要为大家详细介绍了python实现微信防撤回,基于itchat模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Python成功解决读文件出现:IOError: [Errno 0] Error的错误

    Python成功解决读文件出现:IOError: [Errno 0] Error的错误

    在Python编程中,处理文件是常见的任务之一,但偶尔也会遇到各种错误,包括IOError,尽管Python 3.x中IOError已被OSError和FileNotFoundError等更具体的异常所取代,由于[Errno 0]不直接指向具体的错误类型,我们将讨论一系列可能导致IOError的常见情况,需要的朋友可以参考下
    2024-07-07
  • python中h5py开源库的使用样例详解

    python中h5py开源库的使用样例详解

    这篇文章主要介绍了python中的h5py开源库的使用,本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,需要的朋友可以参考下
    2022-05-05
  • pytorch模型保存与加载中的一些问题实战记录

    pytorch模型保存与加载中的一些问题实战记录

    一般来说,保存模型是把参数全部用model.cpu().state_dict(),然后加载模型时一般用model.load_state_dict(torch.load(model_path)),下面这篇文章主要给大家介绍了关于pytorch模型保存与加载中的一些问题实战记录,需要的朋友可以参考下
    2022-10-10
  • PYQT5 vscode联合操作qtdesigner的方法

    PYQT5 vscode联合操作qtdesigner的方法

    这篇文章主要介绍了PYQT5 vscode联合操作qtdesigner的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论