Python如何實現機器人聊天
阿新 • • 發佈:2020-09-11
今天午休的時候,無意之中看了一篇部落格,名字叫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 實現機器人聊天的資料請關注我們其它相關文章!