11步,教你創建深度學習聊天機器人 - 今天頭條

文章推薦指數: 80 %
投票人數:10人

深度學習聊天機器人通過「深度學習」這一過程從零開始學習。

在此過程中,聊天機器人通過機器學習算法被創造出來。

深度學習機器人從自身數據和人與人的對話 ... 首頁 讀芯術 11步,教你創建深度學習聊天機器人 2019-09-24  讀芯術 全文共4687字,預計學習時長9分鐘創建一款聊天機器人時,目標應該是令其僅需最少的人類干預甚至無需人類干預。

這一目標可通過兩種方法實現。

第一種方法是,客服團隊接收來自人工智慧的建議,以改進客戶服務方式。

第二種方法是應用一款深度學習聊天機器人,它能自行處理所有對話,無需客服團隊。

聊天機器人的力量如此之大,以至於僅一年內,FacebookMessenger上聊天機器人的數量就從10萬個增長到了30萬個。

諸多受歡迎的品牌,如萬事達卡,也都迅速推出了自己的聊天機器人。

但是,在深入了解品牌如何利用聊天機器人之前,需要先搞清楚深度學習機器人到底是什麼。

什麼是深度學習機器人?深度學習聊天機器人通過「深度學習」這一過程從零開始學習。

在此過程中,聊天機器人通過機器學習算法被創造出來。

深度學習機器人從自身數據和人與人的對話中學習一切內容。

圖源Pinterest 聊天機器人經過訓練後,對於文本有其自己的意識,可以教它如何與人類交談。

也可以用電影對白或劇本教學。

然而,人類對話是創造最佳深度學習聊天機器人的首選方式。

請記住,所擁有的數據越多,機器學習的效果越好。

既然已經知道了深度學習聊天機器人是什麼,接下來試著理解如何構建一款深度學習聊天機器人。

構建一款深度學習聊天機器人1.準備數據任何機器學習相關流程的第一步都是準備數據。

至少有數以千計客服與客戶之間的歷史對話,才足夠用來訓練聊天機器人。

這些對話應儘可能的詳細且多樣化,以便為深度學習聊天機器人提供充足的數據點。

這一特定過程叫做本體構建。

此步驟中,唯一的目標應是收集儘可能多的對話。

2.數據重構開發者可以根據數據源判斷是否需要這一步驟。

如果數據沒有被很好地分離,則需將數據重構為一個個獨立觀察行。

這些觀察也可叫做「消息-回復對」,它們將被添入分類器中。

此步驟旨在確定/明確對話中的回覆方。

所有接下來發生的對話都可用作文本指標,以助預測回復。

創建消息-回復對時可能需要設置一些限制條件,比如:對話應僅發生於兩人之間——這樣可以清楚地知道消息是發給誰的。

一分鐘之內發送的幾條消息可以合併為一條。

只有五分鐘內發送的回覆才可以與相應的消息配對。

重構過後,消息-回復對看起來可能像這樣:嗨,最近如何?沒啥特別的,最近一直下雨。

今天我好累。

我也是。

我今天忙成狗。

一旦積累了上面這種數據,就需要對數據進行清理。

要移除網址、圖片來源信息、停用詞等等。

圖源Medium3.預處理下一步是進行預處理。

這一步中需要為機器學習添加語法,以便聊天機器人正確理解拼寫錯誤。

此步驟還涉及到令牌化、詞幹化和詞形化的過程。

這使得對話對聊天機器人來說具有可讀性。

這一步驟中還可以使用免費的NTLK工具。

在預處理的最後一步,可以為機器人創建對話分析樹作為參考。

4.選擇機器人類型完成本體構建和預處理後,需要選擇所要創建的聊天機器人類型。

有以下兩種主要類型:·生成式——在生成模型中,聊天機器人無需任何類型的預定義儲存庫。

這種形式十分高級,聊天機器人能利用深度學習回復詢問。

·檢索式——此種形式下,聊天機器人擁有應對不同詢問的回覆儲存庫。

需要根據問題選擇合適的回覆,機器人會遵從這一模式。

檢索模型很少出錯,因其完全基於檢索數據。

然而,它自身有局限性——過於死板,而且回復也很不人性化。

相反地,深度學習聊天機器人可以輕鬆地根據客戶的問題和需求改變回復風格。

然而,即使是這類聊天機器人也無法完美地模仿人類對話。

聊天機器人的生成模型也很難完善,由於該領域的知識相當有限。

事實上,深度學習聊天機器人尚未通過圖靈測試。

雖然在詢問較為簡單時檢索式聊天機器人非常有用,但應對複雜詢問則需要生成式聊天機器人,尤其是在聊天機器人需要記錄先前消息內容的情況下。

檢索式聊天機器人只能回答簡單直接且易於回答的詢問。

5.生成詞向量當頻繁使用一些詞彙時(比如LOL——大笑,和LMAO——笑死我了,這類網絡用語),就需要用到詞向量。

它們是社交媒體上常用的詞彙,但很少存在於數據集中。

雖然使用預訓練過的向量更容易,但是當有些詞不在其他的詞向量列表中時,就需要創建自己的詞向量。

想要生成自己的詞向量,需要採用Word2Vec模型的方法。

Word2Vec模型是根據單詞如何出現在句子中來創建詞向量的。

具有相似上下文的詞在向量空間中會被放置的更近。

可以使用Python腳本訓練Word2Vec模型。

或者使用TensorFlowSeq2Seq函數也會達到相同效果。

6.構建Seq2Seq模型想要構建Seq2Seq模型,可以使用Tensorflow。

為此,需要使用與此類似的Python腳本。

遵循代碼並嘗試為深度學習聊天機器人創建Python腳本。

此模型最重要的部分就是Tensorflow中的embedding_rnn_seq2seq()函數。

7.追蹤進程創建了Seq2Seq模型後,需要追蹤訓練過程。

從某種意義上說,這部分充滿樂趣,因為可以看到深度學習聊天機器人的訓練過程。

應該通過輸入字符串在循環中的不同點測試聊天機器人。

在輸出中會獲得無填充和非EOS令牌。

起初,大多數回復都是空白,因為聊天機器人只會輸出填充和EOS令牌。

接下來,聊天機器人將開始使用輸入數據中頻繁出現的短小的輸出字符串,如LOL,進行回復。

慢慢地,聊天機器人將開始形成自己的回覆並給出更長更完整的句子。

隨著時間的推移,答案的結構和語法都會變得越來越好。

8.添入應用Seq2Seq模型準備就緒並經過測試後,在人們可以與其互動的應用中啟動它。

為便於解釋,此處以FacebookMessenger為例,因為這是添加聊天機器人最簡便的應用之一。

第一步是設置Heroku伺服器,下載Herokutoolbelt即可。

接下來,需要安裝Node,創建一個新文件夾,然後啟動一個新的Node項目。

還必須安裝其他全部Nodedependencies。

這可以通過以下方式完成: npminstallexpressrequestbody-parser–saveThenextstepistocreateanindex.jsfileandauthenticatethebotby:『usestrict』constexpress=require(『express』)constbodyParser=require(『body-parser』)constrequest=require(『request』)constapp=express()app.set(『port』,(process.env.PORT||5000))//Processapplication/x-www-form-urlencodedapp.use(bodyParser.urlencoded({extended:false}))//Processapplication/jsonapp.use(bodyParser.json())//Indexrouteapp.get(『/』,function(req,res){res.send(『Helloworld,Iamachatbot』)})//forFacebookverificationapp.get(『/webhook/』,function(req,res){if(req.query[『hub.verify_token』]===『my_voice_is_my_password_verify_me』){res.send(req.query[『hub.challenge』])}res.send(『Error,wrongtoken』)})//Spinuptheserverapp.listen(app.get(『port』),function(){console.log(『runningonport』,app.get(『port』))})CreateafileandnameitProcfile.Pastethefollowinginit:web:nodeindex.jsAftercommittingallthecodewithGit,youcancreateanewHerokuinstanceby:gitinitgitadd.gitcommit–message「helloworld」herokucreategitpushherokumaster需要按照此推文中(https://shanebarker.com/blog/facebook-messenger-chatbot/)提到的方式設置Facebook應用程式。

之後,設置聊天機器人並自定義內容。

可以按照此處教程(https://github.com/jw84/messenger-bot-tutorial),它會幫助快速完成設置。

9.部署TensorFlow模型聊天機器人已準備就緒,現在要將所有內容放在一起並部署TensorFlow模型。

需要使用Flask伺服器進行部署,因為TensorFlow和Node之間沒有很多良好的接口。

深度學習聊天機器人的Express應用程式與Flask伺服器進行交互。

獲取Flask伺服器代碼:https://github.com/adeshpande3/Chatbot-Flask-Server獲取深度學習聊天機器人的index.js文件:https://github.com/adeshpande3/Facebook-Messenger-Bot/blob/master/index.js10.測試深度學習聊天機器人構建深度學習聊天機器人的最後一步是進行實時測試。

前往Facebook並找到個人頁面。

只需向個人頁面發送消息,聊天機器人就會開始回復。

但首次回復時,聊天機器人可能回復得有點慢,因為伺服器需要時間啟動。

然後就可以在查看深度學習聊天機器人回復消息時表現如何了。

如果回復不準確或有語法問題,則可能需要向聊天機器人添加更多數據集。

11.改善方法在與深度學習聊天機器人交流後,將深入了解如何提高其性能。

可以對聊天機器人進行如下更改:添加更多數據集以幫助其從更多對話中更好地學習。

這有助於提高其會話技能,並幫助它對詢問提供更好的多種回復。

還需要處理編碼器和解碼器消息完全不相關的情況。

例如,如果某人有一天與聊天機器人進行了對話,然後在第二天就完全不相關的主題開始另一個對話,那麼機器人應該知道。

要依據實際情況有針對性地訓練機器人。

使用雙向長短期記憶(LSTMs)、分組和注意力機制。

還應該考慮調整超參數,例如LSTM層數、LSTM單位、訓練疊代、優化器選擇等。

總結深度學習聊天機器人能從對話中學習並最終幫助解決顧客的詢問。

目標應該是儘可能徹底地對其進行訓練,以提高準確性。

雖然開發深度學習聊天機器人不像開發檢索式聊天機器人那麼容易,但它可以幫助自動回復大多數客戶的支持需求。

確保花費了足夠的時間和精力用於重構數據並將其置入消息-回復對中。

預處理是開發一款可靠的深度學習聊天機器人的關鍵。

在設計此聊天機器人時,一些Python知識是必需的,會使用TensorFlow,Express和Node也是必要技能。

留言點贊關注我們一起分享AI學習與發展的乾貨編譯組:胡昕彤、章文斐相關連結:https://hackernoon.com/deep-learning-chatbot-everything-you-need-to-know-r11jm30bc如需轉載,請後台留言,遵守轉載規範文章來源:https://twgreatdaily.com/cwI7Y20BJleJMoPMQCml.html 宇宙是否穩定?如果時間夠長,質子本身是否也會衰變? 2020-11-03 全球首個「算法章程」:應對算法偏見,紐西蘭使出殺手鐧 2020-08-31 參加頂級科技公司面試前需要掌握的10個基本算法 2020-08-28 備戰解決方案架構師考試,你需要哪些知識和技能? 2020-08-26 數據之美:可視化會給你意想不到的答案 2020-08-25 ARM晶片取代Intel:這對iOS的開發人員意味著什麼? 2020-08-24 GPT-3主導編程:最新的AI會扼殺編碼工作嗎? 2020-08-21 如何定義和搭建可靠人工智慧系統的規則? 2020-08-14 算法之「算法」:所有機器學習算法都可以表示為神經網絡 2020-08-14 拋棄VSCode,轉向終端,我「移情別戀」的理由是什麼? 2020-08-12 迷你器官的大作用:微型實驗室人腦揭示新冠影響 2020-08-12 數據素養的7大判斷標準:看你骨骼清奇,來當數據科學家吧 2020-08-10 數據科學終極求職指南:在這場較量中脫穎而出的藍海策略是? 2020-08-10 顛覆已知:基礎物理學的下一次大革命將如何開啟? 2020-08-07 不用再掐點兒搶號!遠程醫療帶來求醫新體驗 2020-08-05 今日芯聲|巴西副總統:不懼美方威脅,歡迎華為參與5G建設競標 2020-08-05 這才是真正的共享!區塊鏈技術是如何幫助共享經濟崛起的? 2020-08-03 疫情衝擊經濟放緩:我們需要全自動奢侈型共產主義 2020-08-03 今日芯聲|雷軍小米十周年:一碗滾燙的小米粥,開啟了沸騰的十年 2020-08-03 軟體開發人員的「定投」:把知識當作生意來對待 2020-07-30 一種簡單而智能的方法:Python也能進行面部識別 2020-07-30 減少污染和溫室氣體排放,數據科學家在行動 2020-07-29 態度決定與上限的距離:培養對數據科學的良好態度 2020-07-29 25個最佳的VSCode擴展!帶你領略VSCode的獨特魅力 2020-05-03



請為這篇文章評分?