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