日本在线看黄a美女久草|日本动漫亚洲在线一区|日韩人妻无码免费视频|A√有码中文字幕|日韩一级片视频热久久久|一区二区三区四区精品无码在线|亚洲AV成人无码一二三app|亚洲综合图片绯色|91极品人妻在线网站|国产成人精品一区二三区四区五区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給吳楚
發(fā)送

1

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

本文作者: 吳楚 2017-05-27 18:40
導(dǎo)語:好的聊天機(jī)器人體驗(yàn)一定是語境為王。

想掌握對(duì)話溝通,語境為王。

我們將使用Tensorflow構(gòu)建一個(gè)聊天機(jī)器人框架,向大家示范如何實(shí)現(xiàn)上下文的語境處理。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

有沒有想過為什么大多數(shù)聊天機(jī)器人缺乏會(huì)話語境?

我們將創(chuàng)建一個(gè)聊天機(jī)器人框架,為一個(gè)小島上的輕便摩托車租賃店建立一個(gè)對(duì)話模型。這家小店的聊天機(jī)器人需要處理營業(yè)時(shí)間,預(yù)訂選項(xiàng)等簡單問答。我們也希望它能處理客戶根據(jù)上下文提出的問題,例如關(guān)于同一天租金的查詢。體驗(yàn)?zāi)茏龊玫脑?,可以讓客戶的假期留下美好回憶?/p>

這將通過三個(gè)步驟實(shí)現(xiàn):

  • 將對(duì)話意圖的定義轉(zhuǎn)換為Tensorflow模型

  • 接下來,構(gòu)建一個(gè)聊天機(jī)器人框架來處理響應(yīng)

  • 將基礎(chǔ)的上下文語料,整合進(jìn)響應(yīng)處理過程

我們將使用tflearn,一個(gè)基于tensorflow的Python包。  一般用iPython notbook作為輔助工具

把會(huì)話意圖的定義,轉(zhuǎn)化為 TensorFlow 模型

第一步,完整的notebook腳本可以在這里找到。

聊天機(jī)器人框架框架需要一個(gè)能定義會(huì)話意圖的架構(gòu)。有一個(gè)簡潔的實(shí)現(xiàn)方式,是使用JSON文件。

每個(gè)會(huì)話意圖包含:

  • 一個(gè)標(biāo)簽(唯一的命名)

  • 模式組(用于神經(jīng)網(wǎng)絡(luò)文本分類器的句子模式)

  • 響應(yīng)組

稍后我們將添加一些基本的上下文元素。首先是導(dǎo)入的包:

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

如果是新手,看看“7行代碼搞定深度學(xué)習(xí)”;如果還不清楚 TensorFlow 都能干啥,就看看這個(gè)。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

加載 JSON 會(huì)話意圖文件后,現(xiàn)在可以開始設(shè)計(jì)我們的文件、詞語和分類器的類。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

我們創(chuàng)建了文件(句子)列表,每個(gè)句子是一個(gè)由詞干組成的列表,每個(gè)文件關(guān)聯(lián)一個(gè)意圖(一個(gè)類對(duì)象)。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

詞干"tak"將匹配“take”,“taking”,“takers”等。我們可以清理詞語列表,刪除無用的詞目。但現(xiàn)在這樣處理就夠了。

麻煩的是,這個(gè)數(shù)據(jù)結(jié)構(gòu)不能用到Tensorflow,需要進(jìn)一步轉(zhuǎn)換:從由詞語組成的文本轉(zhuǎn)換成由數(shù)值型變量組成的張量。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

注意我們的數(shù)據(jù)是被打亂了的。Tensorflow將取出其中一些數(shù)據(jù),并將其用作測(cè)試數(shù)據(jù),以衡量新擬合模型的精度。

如果我們看一個(gè)單一的x和y列表元素,我們會(huì)得到詞袋數(shù)組,一個(gè)用于意圖模式,另一個(gè)用于意圖類。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

現(xiàn)在可以準(zhǔn)備建模了。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

同樣的張量結(jié)構(gòu),也用在了 'toy’ 例子里的2層神經(jīng)網(wǎng)絡(luò)上,觀察理解這個(gè)模型擬合訓(xùn)練數(shù)據(jù)的過程,會(huì)一直有用。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

要完成這一部分的工作,我們將保存('pickle')模型和文檔,以便下一個(gè)notbook腳本可以調(diào)用。

搭建聊天機(jī)器人框架

第二步的完整notebook腳本看這里。

我們將構(gòu)建一個(gè)簡單的狀態(tài)機(jī)來處理響應(yīng),使用我們(從上一步)的意圖模型作為分類器。這就是聊天機(jī)器人的工作原理。

語境聊天機(jī)器人框架,是帶狀態(tài)機(jī)的分類器。

導(dǎo)入相同的庫之后,我們 unpickle 模型和文件,并重新加載意圖文件。注意,聊天框架與我們構(gòu)建的模型是分開的。除非意圖模式改變,否則不需要重建模型。由于有數(shù)百種意圖和數(shù)千種模式,模型可能需要幾分鐘的時(shí)間才能建立。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

接下來,我們將加載保存的Tensorflow(tflearn框架)模型。需要注意的是,首先需要定義Tensorflow模型需要的數(shù)據(jù)結(jié)構(gòu),就像上一節(jié)所述。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

在處理意圖之前,我們要想辦法把用戶輸入生成詞袋。這個(gè)技巧與我們以前使用過的訓(xùn)練文本相同。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

現(xiàn)在可以建立響應(yīng)處理器了。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

每個(gè)傳遞給response方法的句子都被分類。分類器使用model.predict()并且非???。模型返回的概率向量與我們的意圖按順序一一對(duì)應(yīng),生成潛在響應(yīng)列表。

如果一個(gè)或多個(gè)分類結(jié)果高于閾值,就可以判斷一個(gè)標(biāo)簽是否與意圖匹配,然后處理。我們將分類列表作為一個(gè)堆棧,并刪除棧頂來尋找合適的匹配意圖,直到找到一個(gè)或者棧為空。

我們來看一個(gè)分類示例,返回值中最有可能的標(biāo)簽及其概率。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

雷鋒網(wǎng)提醒,“你的店今天營業(yè)嗎?”不是這個(gè)意圖的模式之一:“模式”: [“今天營業(yè)嗎?”, “今天什么時(shí)候開業(yè)?”, “今天的營業(yè)時(shí)間?”] ;而不管對(duì)應(yīng)項(xiàng)“營業(yè)”和“今天” 多么適合模型(它們?cè)谶x擇的意圖中是突出的)。

我們現(xiàn)在可以從用戶輸入中生成聊天機(jī)器人的響應(yīng)。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

以及上下文無關(guān)的其他響應(yīng)..

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

讓我們利用一些基本的上下文,實(shí)現(xiàn)我們聊天機(jī)器人的拖欠租賃談話模型。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

語境化

我們想要處理一個(gè)關(guān)于租賃摩托車的問題,并咨詢租金是否今天到期。是非問題是一個(gè)簡單的語境響應(yīng)。如果用戶回答“今天” ,上下文是租賃的時(shí)間范圍,那么最好調(diào)取租賃公司編號(hào)1-800的問答響應(yīng)。不占用時(shí)間。

為了實(shí)現(xiàn)這一點(diǎn),我們將把“狀態(tài)”的概念加入我們的框架。這包括用來維護(hù)狀態(tài)的一個(gè)數(shù)據(jù)結(jié)構(gòu),和在處理意圖時(shí)用來操作這個(gè)數(shù)據(jù)結(jié)構(gòu)的特定代碼。

因?yàn)槲覀兊臓顟B(tài)機(jī)的狀態(tài)需要容易維護(hù),恢復(fù)和復(fù)制等等,所以很重要的是要把它全部保存在像字典這樣的數(shù)據(jù)結(jié)構(gòu)中。

這是基本語境的處理過程:

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

我們的上下文狀態(tài)是一個(gè)字典數(shù)據(jù)結(jié)構(gòu),它將包含每個(gè)用戶的狀態(tài)。我們將為每個(gè)用戶使用一些唯一的標(biāo)識(shí)(例如,元胞數(shù))。這使得我們的框架和狀態(tài)機(jī)可以同時(shí)維護(hù)多個(gè)用戶的狀態(tài)。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

在意圖處理流程中添加了上下文處理流程,如下所示:

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

如果一個(gè)意圖想設(shè)值相應(yīng)的上下文,則可以這樣做:

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

如果其他意圖想要與上下文相關(guān)聯(lián),則可以這樣做:

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

以這種方式,如果用戶剛剛輸入“today”而與藍(lán)色沒有關(guān)聯(lián)(無上下文信息),則我們的“today”意圖將不被處理。如果他們輸入“today” 作為對(duì)我們的Y/N問題(意圖標(biāo)簽:“rental”)的回應(yīng),則意圖被處理。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

上下文狀態(tài)更新了。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

我們定義了“greeting”意圖來簡化上下文,就像通常的短對(duì)話一樣。添加一個(gè)“show_details”參數(shù)來幫助我們理解其中的含義。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

再試試輸入“today”,這里有一些值得注意的...

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

首先,我們對(duì)無上下文相關(guān)的“today”的回應(yīng)是不同的。我們的分類產(chǎn)生了2個(gè)合適的意圖,而“opentoday”被選中,因?yàn)椤敖裉臁钡囊鈭D雖然較高的概率,而被限制在不再適用的上下文中。語境很有用!

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

有一些事情需要考慮了,那就是下面的語境化...

帶狀態(tài)的狀態(tài)模型

沒錯(cuò),你的聊天機(jī)器人將不再像無狀態(tài)的服務(wù)端那么輕松愉快了。

除非要重置狀態(tài),重新加載模型和文檔 - 每次調(diào)用您的聊天機(jī)器人框架時(shí),那你都需要引入"狀態(tài)"概念。

這個(gè)不難??梢栽谄溥M(jìn)程中運(yùn)行一個(gè)有狀態(tài)的聊天框架,并使用RPC(遠(yuǎn)程過程調(diào)用)或RMI(遠(yuǎn)程方法調(diào)用)來調(diào)用,我推薦Pyro。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

用戶界面(客戶端)通常是無狀態(tài)的,例如。HTTP或SMS。

聊天機(jī)器人的客戶端將調(diào)用Pyro函數(shù),有狀態(tài)服務(wù)來處理。看,驚不驚喜,意不意外!

這是一個(gè)構(gòu)建Twilio SMS聊天機(jī)器人客戶端的逐步指南,這里是FB Messenger的一個(gè)實(shí)現(xiàn)。

別把狀態(tài)存到本地變量

所有狀態(tài)信息都必須放在像字典一樣的數(shù)據(jù)結(jié)構(gòu)中,容易地持久化,重載或以原子復(fù)制。

每個(gè)用戶的會(huì)話將生成上下文,這將為帶有該用戶狀態(tài)的上下文。用戶ID可以用他們的元胞數(shù),F(xiàn)acebook用戶ID或著其他唯一標(biāo)識(shí)符。

有些情況需要(按值)復(fù)制用戶的會(huì)話狀態(tài),然后作為意圖過程來恢復(fù)。如果狀態(tài)機(jī)在框架內(nèi)帶有狀態(tài)相關(guān)的變量,那么在實(shí)際中難以有效的。

所以現(xiàn)在你有一個(gè)聊天機(jī)器人框架,一個(gè)有狀態(tài)服務(wù)的方案,以及可以添加上下文的demo。以后大多數(shù)聊天機(jī)器人框架都將無縫地銜接上下文。

想想意圖影響和反應(yīng)不同上下文(語境)設(shè)定的創(chuàng)意方式。用戶的上下文字典可以包含各種各樣的會(huì)話上下文。

來一起愉快地玩耍起來!

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

via chatbots magazine,雷鋒網(wǎng)編譯。轉(zhuǎn)載請(qǐng)聯(lián)系雷鋒網(wǎng)。

相關(guān)文章:

Facebook利用深度學(xué)習(xí)記憶網(wǎng)絡(luò)訓(xùn)練聊天機(jī)器人,與客戶自由對(duì)話 | ICLR 2017

如何讓人類上癮 淺談聊天機(jī)器人抓住用戶的藝術(shù)

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

用 Tensorflow 搭建能理解語境的聊天機(jī)器人!

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說