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安装对应的模块。

效果图如下所示:

2020910104741307.png?2020810104751

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

代码如下所示:

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)

效果图如下:

2020910104839594.png?2020810104848

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下Python实现简单对话机器人的方法。首先,我们需要使用自然语言处理库NLTK来处理输入的文本,然后通过简单的逻辑判断来生成回复。 以下是一个简单的示例代码: ```python import nltk import random # 定义回复库 responses = { "hi": ["Hello!", "Hi there!", "Hi!"], "how are you": ["I'm doing well, thank you.", "Not too bad, thanks for asking.", "I'm just fine, thank you."], "default": ["Sorry, I didn't understand what you said.", "Can you repeat that?", "I'm not sure what you mean."] } # 定义回复函数 def respond(input_text): # 将输入文本转换为小写并分词 tokens = nltk.word_tokenize(input_text.lower()) # 检查回复库中是否存在匹配的关键词 for key in responses.keys(): if key in tokens: return random.choice(responses[key]) # 如果没有匹配的关键词,则返回默认回复 return random.choice(responses["default"]) # 主程序 while True: user_input = input("You: ") bot_response = respond(user_input) print("Bot: " + bot_response) ``` 在这个示例中,我们定义了一个回复库,包含了一些常见的问候和询问。当用户输入一段文本时,我们使用NLTK库将其分词并转换为小写,然后检查回复库中是否存在匹配的关键词。如果存在匹配的关键词,我们就随机返回一个对应的回复。否则,我们返回默认回复。 请注意,这只是一个简单的示例,实际应用中需要更复杂的逻辑和更大的回复库。同时,还需要添加对话流程控制、语义理解和机器学习等功能来提高对话机器人的质量和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值