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