網(wǎng)上有很多關(guān)于網(wǎng)絡(luò)pos機(jī)源代碼文檔介紹內(nèi)容,馬踏飛訂票機(jī)器人實(shí)現(xiàn)方案介紹的知識(shí),也有很多人為大家解答關(guān)于網(wǎng)絡(luò)pos機(jī)源代碼文檔介紹內(nèi)容的問(wèn)題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!
本文目錄一覽:
1、網(wǎng)絡(luò)pos機(jī)源代碼文檔介紹內(nèi)容
網(wǎng)絡(luò)pos機(jī)源代碼文檔介紹內(nèi)容
馬踏飛(Matafy)訂票機(jī)器人組
當(dāng)今互聯(lián)網(wǎng)隨處可見(jiàn)各種語(yǔ)音助手,從手機(jī)到智能音響,從機(jī)器人到手機(jī)app語(yǔ)音助手。隨著公司業(yè)務(wù)的發(fā)展,今年我們也決定搭建自己的智能客服系統(tǒng),同時(shí)結(jié)合公司自身業(yè)務(wù),馬踏飛燕App 旅游比價(jià)業(yè)務(wù)場(chǎng)景 同時(shí)參考了國(guó)外的一些Task bot 我們覺(jué)得預(yù)訂機(jī)票 火車票 酒店這類任務(wù)型的機(jī)器人可以落地 而且符合我們自身的業(yè)務(wù)特點(diǎn),再結(jié)合推薦系統(tǒng),以期給用戶全新的使用體驗(yàn)。經(jīng)過(guò)前期的調(diào)研,我們確定了技術(shù)類型和實(shí)現(xiàn)目標(biāo)
市面上的文章很多 我們主要是通過(guò)自身產(chǎn)品場(chǎng)景 介紹一些里面的工作 大家自己完成類似產(chǎn)品的時(shí)候,希望可以有一些借鑒的地方
對(duì)話系統(tǒng)簡(jiǎn)介
目前市面上對(duì)話系統(tǒng)大概分為三類。
第一類問(wèn)答型,類似阿里小蜜、美團(tuán)、去哪兒等的業(yè)務(wù)問(wèn)答型助手。他們主要用來(lái)解答用戶特定業(yè)務(wù)類型知識(shí)需求,比如住店須知,退款事項(xiàng),活動(dòng)規(guī)則解讀等等。
第二種任務(wù)對(duì)話型機(jī)器人,這類的機(jī)器人能在單輪或者多輪對(duì)話之后滿足用戶需求或完成特定的任務(wù)。這類的對(duì)話機(jī)器人也已經(jīng)很廣泛了。比如各種語(yǔ)音助手和智能音響。馬踏飛就是這種任務(wù)型的對(duì)話機(jī)器人
第三類就是我們常說(shuō)的閑聊機(jī)器人,這類機(jī)器人的回答沒(méi)有標(biāo)準(zhǔn)的答案,回答方式、回復(fù)內(nèi)容也可以豐富多樣。大名鼎鼎的微軟小冰就屬于這類的。當(dāng)然號(hào)稱美少女的小冰可不止有這些功能,據(jù)悉第七代的小冰已經(jīng)發(fā)布,大家可以使用體驗(yàn)一下當(dāng)今最強(qiáng)對(duì)話機(jī)器人。
對(duì)話系統(tǒng)完整的交互流程
如圖,語(yǔ)音對(duì)話機(jī)器人的一般流程就是這樣:
首先是用戶的語(yǔ)音被識(shí)別成文字,通過(guò)語(yǔ)言模型對(duì)對(duì)話進(jìn)行理解,實(shí)際上這里是做了一些意圖識(shí)別、實(shí)體標(biāo)注、情感分類等工作。對(duì)話管理作為整個(gè)機(jī)器人動(dòng)作控制核心部分,控制著機(jī)器人如何應(yīng)答,它是直接影響著用戶的使用體驗(yàn)的。
語(yǔ)言生成部分目前分為兩種方式,
一種是生成式,它是直接通過(guò)模型生成機(jī)器人回復(fù)的語(yǔ)句
另一種則是通過(guò)模板的形式直接生成,各自都有自己的優(yōu)缺點(diǎn),最后的語(yǔ)音合成就是將生成的文字播報(bào)出來(lái)。
技術(shù)選型
好了扯了那么多,我就來(lái)說(shuō)說(shuō)我們是如何實(shí)現(xiàn)自己的智能客服助手吧。我們訂票機(jī)器人組只有三個(gè)人, 在短時(shí)間內(nèi)完成這樣的一個(gè)系統(tǒng)并且商用化,確實(shí)有些困難。因此我們商量之后,決定聚焦在NLP方面.ASR TTS 還是調(diào)用現(xiàn)成的云服務(wù),在百度和科大訊飛之間 我們還是選擇了科大訊飛 相關(guān)的云服務(wù)還是更加的成熟技術(shù)上,我們做了如下選擇??拼笥嶏w的云服務(wù)在語(yǔ)音識(shí)別,語(yǔ)音播報(bào),關(guān)鍵詞喚醒、人物選擇等功能上都做得非常好。它很好的滿足了我們的產(chǎn)品需求。對(duì)話管理系統(tǒng)作為控制機(jī)器人應(yīng)答的核心。我們做了如下選擇,語(yǔ)言理解(NLU)這塊,最開(kāi)始的時(shí)候 我們使用的是Rasa NLU模塊。即使是開(kāi)源的項(xiàng)目,修改源代碼也是一件很麻煩的事情,而且不夠靈活,模型修改都不是很方便。 因此我們修改了Rasa Core Interpreter,切換成了自己實(shí)現(xiàn)的NLU。自己實(shí)現(xiàn)NLU模塊的時(shí)候,最開(kāi)始使用的PyText框架,PyText實(shí)現(xiàn)涵蓋了NLP工作流聲明周期中的基本環(huán)節(jié),能快速的為我們處理原始數(shù)據(jù)、指標(biāo)統(tǒng)計(jì)、訓(xùn)練和部署模型,里面有現(xiàn)成的Multi-task Intent Classification(意圖識(shí)別) and Slot Filling(槽填充), 但是還是面臨著要修改PyText的麻煩, 動(dòng)不動(dòng)就要讀源代碼, 不便于模型修改。最后采用了PyTorch框架自己實(shí)現(xiàn)模型, 網(wǎng)上有很多現(xiàn)成的地方可以參考。
在后面優(yōu)化模型的時(shí)候,加入了BERT。BERT作為2018年大力出奇跡的模型,一經(jīng)推出就名聲大噪,其在10項(xiàng)語(yǔ)言任務(wù)當(dāng)中獲得SOTA效果,實(shí)際的使用當(dāng)中也是確實(shí)比其他模型的效果要好。對(duì)話管理我們選擇了Rasa Core這套框架,其為我們提供比較完備的組件功能,詳盡的使用文檔上手也很快。不過(guò)rasa-core更新是挺快的,要用的還要做好準(zhǔn)備。
下面詳細(xì)說(shuō)下DM和NLU這兩個(gè)模塊的細(xì)節(jié)
DM(Dialogue Management)
對(duì)話管理 我們使用的是開(kāi)源的Rasa Core
在rasa_core中我們有如下幾個(gè)關(guān)鍵概念
stories:官方在文檔中稱一個(gè)訓(xùn)練例子作為一個(gè)故事,實(shí)際就是將一個(gè)例子作為一種可能對(duì)話方式。一問(wèn)一答的寫(xiě)出來(lái),
domain:其對(duì)應(yīng)一個(gè)domain.yml文件,文件定義了intent, slot, forms, templates, actions,entities等關(guān)鍵組件。
actions:官方將其定義為是對(duì)輸入做出響應(yīng)輸出的動(dòng)作,rasa提供了三種方式,第一類以u(píng)tter_開(kāi)頭的動(dòng)作,rasa會(huì)將其下的text文本發(fā)送給用戶,這里可以根據(jù)自己的實(shí)際情況決定是發(fā)送文本還是發(fā)送其他內(nèi)容比如操作指令。第二類是自定義的動(dòng)作繼承FormAction等類。第三類就是系統(tǒng)默認(rèn)動(dòng)作,有action_listen, action_restart, action_default_fallback這三個(gè),當(dāng)然我們也可以直接在stories中顯式的使用該動(dòng)作。
policies:顧名思義他才是決定對(duì)話的每一步里面到底執(zhí)行什么操作的部分。rasa提供了很多的策略給我們使用。每種策略都有自己的優(yōu)先級(jí)。我們并不需要做很多事,只需要在配置文件中指定一些參數(shù)即可。
slots:rasa將slot定義為機(jī)器人的記憶。實(shí)際就可以理解成完成一項(xiàng)任務(wù)需要準(zhǔn)備的關(guān)鍵信息。比如當(dāng)我們外賣(mài)機(jī)器人。你要點(diǎn)餐,那么bot需要知道你吃什么菜,你住哪,聯(lián)系方式是什么,幾點(diǎn)送,口味要求等、這些都可以是槽(slot),整個(gè)對(duì)話bot就會(huì)去詢問(wèn)這些信息。同時(shí)rasa也給出了豐富的slot 類型,我們可以根據(jù)情實(shí)際況將slot定義成想要的類型。
下面附上一些實(shí)現(xiàn)的細(xì)節(jié)
domain中
自定義的utter開(kāi)頭的動(dòng)作
繼承自FormAction的action和自定義的意圖
thankyou作為一個(gè)意圖,其下的triggers指定了當(dāng)用戶的意圖是thankyou時(shí),bot只需要回復(fù)
不客氣,小馬很高興能為您服務(wù)!
定義的slot槽,槽的類型根據(jù)情況自行定義,這些只需要參考官方doc即可明白
stories中
標(biāo)題自定義
正文是一問(wèn)一答形式,帶*開(kāi)頭表示用戶給出的信息,可以是意圖和槽值,”-"開(kāi)頭的是bot需要做的操作,如下截圖所示,inform給出了arrival_location(槽)目的地是武漢(槽值),flight_form是我們自定義action,其繼承于FormAction類,這個(gè)很簡(jiǎn)單,大家只要照著官方的例子寫(xiě)就可以明白到底如何工作的,slot表示保存槽值的操作。這樣每一輪的對(duì)話就通過(guò)我們之前定義的意圖、槽值、action表示出來(lái)了。對(duì)話可長(zhǎng)可短。筆者使用一般都是7輪左右,當(dāng)然各位讀者使用時(shí)還是按照自己的情況編寫(xiě)。rasa-core訓(xùn)練的時(shí)候有一個(gè)縮放因子,它使得rasa-core不需要寫(xiě)太多個(gè)(我實(shí)際使用20個(gè)左右即可)story也可以表現(xiàn)出比較好的使用效果,這個(gè)參數(shù)默認(rèn)值是20倍。大家可以根據(jù)需要調(diào)整。
不過(guò)需要吐槽的是當(dāng)涉及多個(gè)業(yè)務(wù)時(shí),story的例子太多之后調(diào)試起來(lái)真的挺麻煩,常常為了實(shí)現(xiàn)一個(gè)對(duì)話要做很多嘗試,這里建議如果是指令型的對(duì)話大家還是用rasa-core提供的mapping-policy,只要在domain文件中對(duì)應(yīng)的意圖下指定utter開(kāi)頭的動(dòng)作即可。
NLU(Natural Language Understanding)
NLU(自然語(yǔ)言理解)中我們主要做了兩件事,一是識(shí)別用戶意圖比如訂票、查詢、閑聊、贊美、批評(píng)等 二是識(shí)別槽值比如購(gòu)買(mǎi)機(jī)票需要用到的出發(fā)地、目的地、出發(fā)時(shí)間等。
NLU 采用深度學(xué)習(xí)模型,由 pytorch 實(shí)現(xiàn),并針對(duì)業(yè)務(wù)進(jìn)行了優(yōu)化。
第一階段采用 LSTM 模型
首先用 pkuseg 進(jìn)行分詞,選擇更符合業(yè)務(wù)的旅游數(shù)據(jù)集模型,同時(shí)使用自定義的詞典保證能正確處理一些不常用地名等。
然后用 fasttext 詞向量,同時(shí)針對(duì) OOV(Out of Vocabulary) 單詞進(jìn)行優(yōu)化,使得能正確處理不常用地名、時(shí)間等。
然后用雙向 LSTM 提取特征,雙向 LSTM 能夠自動(dòng)提取上下文特征,不需要人工特征提取。
最后使用 max pool 和簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)意圖。
以及使用 CRF(Conditional Random Field) 預(yù)測(cè)槽值,CRF 能正確處理相鄰單詞標(biāo)注之間的關(guān)系。
其它優(yōu)化,利用 POS(Part of Speech) 標(biāo)注,給模型更多的信息。
第二階段將 LSTM 替換為 BERT
最開(kāi)始的時(shí)候 我們使用的是常用的word vectors 自從Bert出現(xiàn)之后 由于其良好的性能表現(xiàn),我們嘗試了一下Bert, 效果確實(shí)很好。
BERT 針對(duì)英文采用 word pieces 分詞,中文直接處理單字。
BERT 之后仍然使用 max pool 和簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)意圖,使用 CRF 預(yù)測(cè)槽值。
BERT 為當(dāng)前最好的語(yǔ)言模型之一,BERT 在預(yù)訓(xùn)練時(shí)用到大量語(yǔ)料。使得模型可以在少量訓(xùn)練數(shù)據(jù)時(shí)表現(xiàn)良好的效果。
其它優(yōu)化,減少 BERT 模型的層數(shù),在不影響精確度的同時(shí)減少計(jì)算量。
對(duì)比使用發(fā)現(xiàn)預(yù)訓(xùn)練詞向量也有不足,詞向量文件通常幾個(gè) GB,內(nèi)存占用過(guò)大。模型過(guò)淺,不能充分利用預(yù)訓(xùn)練語(yǔ)料信息。需要分詞,如果分詞錯(cuò)誤將導(dǎo)致后續(xù)任務(wù)錯(cuò)誤。
BERT 模型有效地解決了這些問(wèn)題,不過(guò) BERT 需要更大的計(jì)算量。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
NLU 數(shù)據(jù)集
深度學(xué)習(xí)模型需要大量的數(shù)據(jù)及標(biāo)注,NLU 模型需要標(biāo)注每個(gè)句子的意圖和槽(城市名、公司名、時(shí)間等)。
我們訓(xùn)練所用的數(shù)據(jù)來(lái)自幾個(gè)方面。
1. 翻譯 Atis 數(shù)據(jù)集
Atis 數(shù)據(jù)集是廣為使用的意圖和槽數(shù)據(jù)集,內(nèi)容為機(jī)票預(yù)訂等,和我們的業(yè)務(wù)相同。
不過(guò)對(duì)話為英文,所以我們首先采用現(xiàn)有的 API 將其翻譯為中文,再花大量人工重新標(biāo)注,滿足我們的業(yè)務(wù)需要。
2. 模板自動(dòng)生成
人工編寫(xiě)大量的模板,同時(shí)整理城市名、航空公司名等列表。
再將城市名、航空公司名等填入模板,得到一個(gè)完整句子,同時(shí)計(jì)算出槽的位置。
采用此方法可以生成大量數(shù)據(jù),同時(shí)能覆蓋主要的城市、航空公司等命名實(shí)體。
3. 爬蟲(chóng)
從問(wèn)答網(wǎng)站爬取大量問(wèn)題,篩選出和我們業(yè)務(wù)相關(guān)的問(wèn)題,再人工標(biāo)注,使得我們的數(shù)據(jù)集更豐富。
NLG(自然語(yǔ)言生成)
我們目前采用的是Rasa Core里面默認(rèn)的方式,采用的是構(gòu)建好的模板。通過(guò)模型生成的話,還需要嘗試。
總結(jié)
系統(tǒng)上線有一段時(shí)間了,使用情況還算良好,不過(guò)我們也發(fā)現(xiàn)了一些問(wèn)題,比如預(yù)設(shè)定的意圖范圍有限,回復(fù)單一性讓人覺(jué)得并不那么智能,語(yǔ)音識(shí)別不完整有偏差等等。下個(gè)版本我們計(jì)劃使用深度強(qiáng)化學(xué)習(xí)做一個(gè)任務(wù)型的對(duì)話機(jī)器人系統(tǒng),引入拼寫(xiě)糾錯(cuò)功能
后續(xù)的工作
我們還是希望結(jié)合我們自身旅游 比價(jià)業(yè)務(wù)場(chǎng)景 繼續(xù)完善馬踏飛
1.給我們的馬踏飛加上人物形象,通過(guò)結(jié)合計(jì)算機(jī)視覺(jué)模型 呈現(xiàn)出與人互動(dòng) 跟一個(gè)真人客服訂票一樣的體驗(yàn)
2.結(jié)合旅游知識(shí)圖譜 和馬踏飛聊一下景點(diǎn) 例如:這個(gè)季節(jié)最適合去的地方? 馬爾代夫現(xiàn)在是什么溫度?
3.添加技能包等針對(duì)旅游業(yè)務(wù): 詢問(wèn)天氣 匯率 時(shí)間
之前我們整理過(guò)Rasa Core 部分源代碼解析 希望下次可以和大家分享。
總結(jié)
系統(tǒng)上線有一段時(shí)間了,使用情況還算良好,不過(guò)我們也發(fā)現(xiàn)了一些問(wèn)題,比如預(yù)設(shè)定的意圖范圍有限,回復(fù)單一性讓人覺(jué)得并不那么智能,語(yǔ)音識(shí)別不完整有偏差等等。下個(gè)版本我們計(jì)劃使用深度強(qiáng)化學(xué)習(xí)做一個(gè)任務(wù)型的對(duì)話機(jī)器人系統(tǒng),引入拼寫(xiě)糾錯(cuò)功能
后續(xù)的工作
我們還是希望結(jié)合我們自身旅游 比價(jià)業(yè)務(wù)場(chǎng)景 繼續(xù)完善馬踏飛
1.給我們的馬踏飛加上人物形象,通過(guò)結(jié)合計(jì)算機(jī)視覺(jué)模型 呈現(xiàn)出與人互動(dòng) 跟一個(gè)真人客服訂票一樣的體驗(yàn)
2.結(jié)合旅游知識(shí)圖譜 和馬踏飛聊一下景點(diǎn) 例如:這個(gè)季節(jié)最適合去的地方? 馬爾代夫現(xiàn)在是什么溫度?
3.添加技能包等針對(duì)旅游業(yè)務(wù): 詢問(wèn)天氣 匯率 時(shí)間
之前我們整理過(guò)Rasa Core 部分源代碼解析 希望下次可以和大家分享。
以上就是關(guān)于網(wǎng)絡(luò)pos機(jī)源代碼文檔介紹內(nèi)容,馬踏飛訂票機(jī)器人實(shí)現(xiàn)方案介紹的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于網(wǎng)絡(luò)pos機(jī)源代碼文檔介紹內(nèi)容的知識(shí),希望能夠幫助到大家!
