Python如何实现机器人聊天

更多编程教程请到:菜鸟教程 https://www.piaodoo.com/

友情链接:好看站 http://www.nrso.net/

高州阳光论坛https://www.hnthzk.com/

今天午休的时候,无意之中看了一篇博客,名字叫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如何实现机器人聊天_第1张图片

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

代码如下所示:

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如何实现机器人聊天_第2张图片

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

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

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

以上就是Python如何实现机器人聊天的详细内容,更多关于python 实现机器人聊天的资料请关注菜鸟教程www.piaodoo.com其它相关文章!

你可能感兴趣的