摘要:夏天太熱,又不想出門,就讓我們用的來搭建屬于自己的可以對話的老婆吧本文擬使用的開發語言實現類似于的平臺的小娜,或者是下的的。
夏天太熱,又不想出門,就讓我們用的Python來搭建屬于自己的?可以對話的AI老婆吧?
本文擬使用Python的開發語言實現類似于的WIndows平臺的“小娜”,或者是IOS下的“Siri的”。最終達到人機對話的效果。
【實現功能】
柳貓將會從下面兩個方面開始:
1.搭建人工智能 - 人機對話服務端平臺
2.實現調用服務端平臺進行人機對話交互
【實現思路】
AIML
AIML由Richard Wallace發明。他設計了一個名為ALICE(人工語言學互聯網計算機實體人工語言網計算機實體)的機器人,并獲得了多項人工智能大獎。有趣的是,圖靈測試的其中一項就在尋找這樣的人工智能:人與機器人通過文本界面展開數分鐘的交流,以此查看機器人是否會被當作人類。
本文就使用了Python的語言調用AIML庫進行智能機器人的開發。
本系統的運作方式是使用Python的搭建服務端后臺接口,供各平臺可以直接調用。然后客戶端進行對智能對話API接口的調用,服務端分析參數數據,進行語句的分析,最終返回應答結果。
當前系統前端使用HTML進行簡單地聊天室的設計與編寫,使用異步請求的方式渲染數據。
大家在學python的時候肯定會遇到很多難題,以及對于新技術的追求,這里推薦一下我們的Python學習扣qun:784,758,214,這里是python學習者聚集地
【開發及部署環境】
開發環境:Windows 7×64英文版
JetBrains PyCharm 2017.1.3 x64
測試環境:Windows 7×64
【所需技術】
小伙伴們,如果要完全理解,請熟練以下技能(不會也??沒關系啦,一起學習就好了):
Python的語言的熟練掌握,Python的版本2.7及以上
Python的服務端開發框架龍卷風的使用
AIML庫接口的簡單使用
HTML + CSS +的JavaScript(jQuery的)的熟練使用
Ajax的技術的掌握
【實現過程】
1.安裝Python aiml庫
pip install aiml
2.獲取alice資源
Python aiml安裝完成后在Python安裝目錄下的Lib / site-packages / aiml下會有alice子目錄,將此目錄復制到工作區。
或者在谷歌代碼上下載
alice brain:aiml-en-us-foundation-alice.v1-9.zip
3. Python下加載alice
取得alice資源之后就可以直接利用Python aiml庫加載alice brain了:
進口目的 os.chdir("./ src / alice")#將工作區目錄切換到剛才復制的alice文件夾 alice = aiml.Kernel() alice.learn( “startup.xml”) alice.respond("LOAD ALICE")
注意加載時需要切換工作目錄到愛麗絲(剛才復制的文件夾)下。
4.與alice聊天
加載之后就可以與愛麗絲聊天了,每次只需要調用響應接口:
alice.respond("hello")#這里的hello即為發給機器人的信息
柳貓緊接上篇,現在我們來實現AI老婆的對話(畫臉):
5.用Tornado搭建聊天機器人網站
龍卷風可以很方便地搭建一個網絡網站的服務端,并且接口風格是休閑風格,可以很方便搭建一個通用的服務端接口。
這里寫兩個方法:
得到:渲染界面 崗位:獲取請求參數,并分析,返回聊天結果
類類的代碼如下:
class ChatHandler(tornado.web.RequestHandler): def get(self): self.render( "chat.html") def post(self): 嘗試: message = self.get_argument("msg",None) 打印(STR(消息)) result = { "is_success":是的, "message":str(alice.respond(message)) } 打印(STR(結果)) respon_json = tornado.escape.json_encode(結果) self.write(respon_json) 除了例外,例如: 再版(前) 打印(STR(前)) result = { "is_success":錯, "信息": "" } self.write(STR(結果))
6.簡單搭建一個聊天界面
該界面是基于自舉的,我們簡單搭建這么一個聊天的界面用于展示我們的接口結果。同時進行簡單的聊天。
7.接口調用
我們異步請求服務端接口,并將結果渲染到界面
$就({ 類型:"post", url:AppDomain +"chat", async:true,//異步 dataType:"json", 數據:( { “味精”:request_txt }), 成功:功能(數據) { 的console.log(JSON.stringify(數據)); if(data.is_success == true){ 的setView(resUser,data.message); } }, 錯誤:功能(數據) { 的console.log(JSON.stringify(數據)); } }); //結束Ajax
這里我附上系統的完整目錄結構以及完整代碼 - >
8.目錄結構
9. Python服務端代碼
#!/ usr / bin / env python # - * - 編碼:utf-8 - * - import os.path 導入tornado.auth 導入tornado.escape import tornado.httpserver import tornado.ioloop 導入tornado.options import tornado.web 來自tornado.options導入定義,選項 進口口 進口目的 os.chdir( "./ SRC /愛麗絲") alice = aiml.Kernel() alice.learn( “startup.xml”) alice.respond("LOAD ALICE") define("port",default = 3999,help ="在給定端口上運行",type = int) class Application(tornado.web.Application): def __init __(self): 處理程序= [ (r"/",MainHandler), (r"/ chat",ChatHandler), ] settings = dict( template_path = os.path.join(os.path.dirname(__ file __),"templates"), static_path = os.path.join(os.path.dirname(__ file __),"static"), 調試=真, ) #conn = pymongo.Connection("localhost",12345) #self.db = conn ["demo"] tornado.web.Application .__ init __(自我,處理程序,**設置) class MainHandler(tornado.web.RequestHandler): def get(self): self.render( "的index.html") def post(self): result = { "is_success":是的, "message":"123" } respon_json = tornado.escape.json_encode(結果) self.write(STR(respon_json)) def put(self): respon_json = tornado.escape.json_encode(“{"name":"qixiao","age":123}”) self.write(respon_json) class ChatHandler(tornado.web.RequestHandler): def get(self): self.render( "chat.html") def post(self): 嘗試: message = self.get_argument("msg",None) 打印(STR(消息)) result = { "is_success":是的, "message":str(alice.respond(message)) } 打印(STR(結果)) respon_json = tornado.escape.json_encode(結果) self.write(respon_json) 除了例外,例如: 再版(前) 打印(STR(前)) result = { "is_success":錯, "信息": "" } self.write(STR(結果)) def main(): tornado.options.parse_command_line() http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(options.port) tornado.ioloop.IOLoop.instance()。開始() 如果__name__ =="__ main__": print("HTTP服務器啟動...") 主要()
10. Html前端代碼
<!DOCTYPE html>qixiao tools title> 2.調用測試
? 然后我們進行前臺界面的調用
這里我們可以看到,我們的項目完美運行,并且達到預期效果。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43998.html
摘要:讓你收獲滿滿碼個蛋從年月日推送第篇文章一年過去了已累積推文近篇文章,本文為年度精選,共計篇,按照類別整理便于讀者主題閱讀。本篇文章是今年的最后一篇技術文章,為了讓大家在家也能好好學習,特此花了幾個小時整理了這些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 讓你收獲滿滿! 碼個蛋從2017年02月20...
摘要:蠎周刊年度最贊親俺們又來回顧又一個偉大的年份兒包去年最受歡迎的文章和項目如果你錯過了幾期就這一期不會丟失最好的嗯哼還為你和你的準備了一批紀念裇從這兒獲取任何時候如果想分享好物給大家在這兒提交喜歡我們收集的任何意見建議通過來吧原文 Title: 蠎周刊 2015 年度最贊Date: 2016-01-09 Tags: Weekly,Pycoder,Zh Slug: issue-198-to...
摘要:背景介紹智能語音助手作為物聯網領域的一個重要生態成員,是一種全新的交互方式,它能夠解放雙手,隨時提供服務,無須借助任何按鍵。學完該案例讓你對智能語音助手有一個全新的認識。快來打造你的智能語音助手吧 1. 背景介紹 智能語音助手作為物聯網領域的一個重要生態成員,是一種全新的交互方式,它能夠解...
摘要:負責構建分布式壓力測試框架,穩定性測試框架。但同時,這些獨立的模塊最終會形成這一個整體。分布式一致性算法,現在無非就是兩類,和,我們選擇了。對各個模塊進行詳細的測試,使用等對系統進行注入測試。設計并實現性能回歸測試平臺。 上周我們推送了?TiDB 團隊職位解讀文章,當天就有很多簡歷砸來,我們深深感受到了小伙伴們的熱情~ 趁熱打鐵,今天我司首席架構師唐劉老師將帶大家了解一下傳說中「面試通...
閱讀 1486·2019-08-30 15:44
閱讀 1949·2019-08-30 14:07
閱讀 2876·2019-08-30 13:56
閱讀 2343·2019-08-29 17:06
閱讀 1330·2019-08-29 14:13
閱讀 2085·2019-08-29 11:28
閱讀 3230·2019-08-26 13:56
閱讀 1950·2019-08-26 12:11