網(wǎng)絡(luò)pos機源代碼文檔介紹內(nèi)容

 新聞資訊3  |   2023-09-08 10:47  |  投稿人:pos機之家

網(wǎng)上有很多關(guān)于網(wǎng)絡(luò)pos機源代碼文檔介紹內(nèi)容,馬踏飛訂票機器人實現(xiàn)方案介紹的知識,也有很多人為大家解答關(guān)于網(wǎng)絡(luò)pos機源代碼文檔介紹內(nèi)容的問題,今天pos機之家(m.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、網(wǎng)絡(luò)pos機源代碼文檔介紹內(nèi)容

網(wǎng)絡(luò)pos機源代碼文檔介紹內(nèi)容

馬踏飛(Matafy)訂票機器人組

當今互聯(lián)網(wǎng)隨處可見各種語音助手,從手機到智能音響,從機器人到手機app語音助手。隨著公司業(yè)務(wù)的發(fā)展,今年我們也決定搭建自己的智能客服系統(tǒng),同時結(jié)合公司自身業(yè)務(wù),馬踏飛燕App 旅游比價業(yè)務(wù)場景 同時參考了國外的一些Task bot 我們覺得預(yù)訂機票 火車票 酒店這類任務(wù)型的機器人可以落地 而且符合我們自身的業(yè)務(wù)特點,再結(jié)合推薦系統(tǒng),以期給用戶全新的使用體驗。經(jīng)過前期的調(diào)研,我們確定了技術(shù)類型和實現(xiàn)目標

市面上的文章很多 我們主要是通過自身產(chǎn)品場景 介紹一些里面的工作 大家自己完成類似產(chǎn)品的時候,希望可以有一些借鑒的地方

對話系統(tǒng)簡介

目前市面上對話系統(tǒng)大概分為三類。

第一類問答型,類似阿里小蜜、美團、去哪兒等的業(yè)務(wù)問答型助手。他們主要用來解答用戶特定業(yè)務(wù)類型知識需求,比如住店須知,退款事項,活動規(guī)則解讀等等。

第二種任務(wù)對話型機器人,這類的機器人能在單輪或者多輪對話之后滿足用戶需求或完成特定的任務(wù)。這類的對話機器人也已經(jīng)很廣泛了。比如各種語音助手和智能音響。馬踏飛就是這種任務(wù)型的對話機器人

第三類就是我們常說的閑聊機器人,這類機器人的回答沒有標準的答案,回答方式、回復(fù)內(nèi)容也可以豐富多樣。大名鼎鼎的微軟小冰就屬于這類的。當然號稱美少女的小冰可不止有這些功能,據(jù)悉第七代的小冰已經(jīng)發(fā)布,大家可以使用體驗一下當今最強對話機器人。

對話系統(tǒng)完整的交互流程

如圖,語音對話機器人的一般流程就是這樣:

首先是用戶的語音被識別成文字,通過語言模型對對話進行理解,實際上這里是做了一些意圖識別、實體標注、情感分類等工作。對話管理作為整個機器人動作控制核心部分,控制著機器人如何應(yīng)答,它是直接影響著用戶的使用體驗的。

語言生成部分目前分為兩種方式,

一種是生成式,它是直接通過模型生成機器人回復(fù)的語句

另一種則是通過模板的形式直接生成,各自都有自己的優(yōu)缺點,最后的語音合成就是將生成的文字播報出來。

技術(shù)選型

好了扯了那么多,我就來說說我們是如何實現(xiàn)自己的智能客服助手吧。我們訂票機器人組只有三個人, 在短時間內(nèi)完成這樣的一個系統(tǒng)并且商用化,確實有些困難。因此我們商量之后,決定聚焦在NLP方面.ASR TTS 還是調(diào)用現(xiàn)成的云服務(wù),在百度和科大訊飛之間 我們還是選擇了科大訊飛 相關(guān)的云服務(wù)還是更加的成熟技術(shù)上,我們做了如下選擇??拼笥嶏w的云服務(wù)在語音識別,語音播報,關(guān)鍵詞喚醒、人物選擇等功能上都做得非常好。它很好的滿足了我們的產(chǎn)品需求。對話管理系統(tǒng)作為控制機器人應(yīng)答的核心。我們做了如下選擇,語言理解(NLU)這塊,最開始的時候 我們使用的是Rasa NLU模塊。即使是開源的項目,修改源代碼也是一件很麻煩的事情,而且不夠靈活,模型修改都不是很方便。 因此我們修改了Rasa Core Interpreter,切換成了自己實現(xiàn)的NLU。自己實現(xiàn)NLU模塊的時候,最開始使用的PyText框架,PyText實現(xiàn)涵蓋了NLP工作流聲明周期中的基本環(huán)節(jié),能快速的為我們處理原始數(shù)據(jù)、指標統(tǒng)計、訓(xùn)練和部署模型,里面有現(xiàn)成的Multi-task Intent Classification(意圖識別) and Slot Filling(槽填充), 但是還是面臨著要修改PyText的麻煩, 動不動就要讀源代碼, 不便于模型修改。最后采用了PyTorch框架自己實現(xiàn)模型, 網(wǎng)上有很多現(xiàn)成的地方可以參考。

在后面優(yōu)化模型的時候,加入了BERT。BERT作為2018年大力出奇跡的模型,一經(jīng)推出就名聲大噪,其在10項語言任務(wù)當中獲得SOTA效果,實際的使用當中也是確實比其他模型的效果要好。對話管理我們選擇了Rasa Core這套框架,其為我們提供比較完備的組件功能,詳盡的使用文檔上手也很快。不過rasa-core更新是挺快的,要用的還要做好準備。

下面詳細說下DM和NLU這兩個模塊的細節(jié)

DM(Dialogue Management)

對話管理 我們使用的是開源的Rasa Core

在rasa_core中我們有如下幾個關(guān)鍵概念

stories:官方在文檔中稱一個訓(xùn)練例子作為一個故事,實際就是將一個例子作為一種可能對話方式。一問一答的寫出來,

domain:其對應(yīng)一個domain.yml文件,文件定義了intent, slot, forms, templates, actions,entities等關(guān)鍵組件。

actions:官方將其定義為是對輸入做出響應(yīng)輸出的動作,rasa提供了三種方式,第一類以utter_開頭的動作,rasa會將其下的text文本發(fā)送給用戶,這里可以根據(jù)自己的實際情況決定是發(fā)送文本還是發(fā)送其他內(nèi)容比如操作指令。第二類是自定義的動作繼承FormAction等類。第三類就是系統(tǒng)默認動作,有action_listen, action_restart, action_default_fallback這三個,當然我們也可以直接在stories中顯式的使用該動作。

policies:顧名思義他才是決定對話的每一步里面到底執(zhí)行什么操作的部分。rasa提供了很多的策略給我們使用。每種策略都有自己的優(yōu)先級。我們并不需要做很多事,只需要在配置文件中指定一些參數(shù)即可。

slots:rasa將slot定義為機器人的記憶。實際就可以理解成完成一項任務(wù)需要準備的關(guān)鍵信息。比如當我們外賣機器人。你要點餐,那么bot需要知道你吃什么菜,你住哪,聯(lián)系方式是什么,幾點送,口味要求等、這些都可以是槽(slot),整個對話bot就會去詢問這些信息。同時rasa也給出了豐富的slot 類型,我們可以根據(jù)情實際況將slot定義成想要的類型。

下面附上一些實現(xiàn)的細節(jié)

domain中

自定義的utter開頭的動作

繼承自FormAction的action和自定義的意圖

thankyou作為一個意圖,其下的triggers指定了當用戶的意圖是thankyou時,bot只需要回復(fù)

不客氣,小馬很高興能為您服務(wù)!

定義的slot槽,槽的類型根據(jù)情況自行定義,這些只需要參考官方doc即可明白

stories中

標題自定義

正文是一問一答形式,帶*開頭表示用戶給出的信息,可以是意圖和槽值,”-"開頭的是bot需要做的操作,如下截圖所示,inform給出了arrival_location(槽)目的地是武漢(槽值),flight_form是我們自定義action,其繼承于FormAction類,這個很簡單,大家只要照著官方的例子寫就可以明白到底如何工作的,slot表示保存槽值的操作。這樣每一輪的對話就通過我們之前定義的意圖、槽值、action表示出來了。對話可長可短。筆者使用一般都是7輪左右,當然各位讀者使用時還是按照自己的情況編寫。rasa-core訓(xùn)練的時候有一個縮放因子,它使得rasa-core不需要寫太多個(我實際使用20個左右即可)story也可以表現(xiàn)出比較好的使用效果,這個參數(shù)默認值是20倍。大家可以根據(jù)需要調(diào)整。

不過需要吐槽的是當涉及多個業(yè)務(wù)時,story的例子太多之后調(diào)試起來真的挺麻煩,常常為了實現(xiàn)一個對話要做很多嘗試,這里建議如果是指令型的對話大家還是用rasa-core提供的mapping-policy,只要在domain文件中對應(yīng)的意圖下指定utter開頭的動作即可。

NLU(Natural Language Understanding)

NLU(自然語言理解)中我們主要做了兩件事,一是識別用戶意圖比如訂票、查詢、閑聊、贊美、批評等 二是識別槽值比如購買機票需要用到的出發(fā)地、目的地、出發(fā)時間等。

NLU 采用深度學(xué)習(xí)模型,由 pytorch 實現(xiàn),并針對業(yè)務(wù)進行了優(yōu)化。

第一階段采用 LSTM 模型

首先用 pkuseg 進行分詞,選擇更符合業(yè)務(wù)的旅游數(shù)據(jù)集模型,同時使用自定義的詞典保證能正確處理一些不常用地名等。

然后用 fasttext 詞向量,同時針對 OOV(Out of Vocabulary) 單詞進行優(yōu)化,使得能正確處理不常用地名、時間等。

然后用雙向 LSTM 提取特征,雙向 LSTM 能夠自動提取上下文特征,不需要人工特征提取。

最后使用 max pool 和簡單的神經(jīng)網(wǎng)絡(luò)來預(yù)測意圖。

以及使用 CRF(Conditional Random Field) 預(yù)測槽值,CRF 能正確處理相鄰單詞標注之間的關(guān)系。

其它優(yōu)化,利用 POS(Part of Speech) 標注,給模型更多的信息。

第二階段將 LSTM 替換為 BERT

最開始的時候 我們使用的是常用的word vectors 自從Bert出現(xiàn)之后 由于其良好的性能表現(xiàn),我們嘗試了一下Bert, 效果確實很好。

BERT 針對英文采用 word pieces 分詞,中文直接處理單字。

BERT 之后仍然使用 max pool 和簡單的神經(jīng)網(wǎng)絡(luò)來預(yù)測意圖,使用 CRF 預(yù)測槽值。

BERT 為當前最好的語言模型之一,BERT 在預(yù)訓(xùn)練時用到大量語料。使得模型可以在少量訓(xùn)練數(shù)據(jù)時表現(xiàn)良好的效果。

其它優(yōu)化,減少 BERT 模型的層數(shù),在不影響精確度的同時減少計算量。

對比使用發(fā)現(xiàn)預(yù)訓(xùn)練詞向量也有不足,詞向量文件通常幾個 GB,內(nèi)存占用過大。模型過淺,不能充分利用預(yù)訓(xùn)練語料信息。需要分詞,如果分詞錯誤將導(dǎo)致后續(xù)任務(wù)錯誤。

BERT 模型有效地解決了這些問題,不過 BERT 需要更大的計算量。

神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖

NLU 數(shù)據(jù)集

深度學(xué)習(xí)模型需要大量的數(shù)據(jù)及標注,NLU 模型需要標注每個句子的意圖和槽(城市名、公司名、時間等)。

我們訓(xùn)練所用的數(shù)據(jù)來自幾個方面。

1. 翻譯 Atis 數(shù)據(jù)集

Atis 數(shù)據(jù)集是廣為使用的意圖和槽數(shù)據(jù)集,內(nèi)容為機票預(yù)訂等,和我們的業(yè)務(wù)相同。

不過對話為英文,所以我們首先采用現(xiàn)有的 API 將其翻譯為中文,再花大量人工重新標注,滿足我們的業(yè)務(wù)需要。

2. 模板自動生成

人工編寫大量的模板,同時整理城市名、航空公司名等列表。

再將城市名、航空公司名等填入模板,得到一個完整句子,同時計算出槽的位置。

采用此方法可以生成大量數(shù)據(jù),同時能覆蓋主要的城市、航空公司等命名實體。

3. 爬蟲

從問答網(wǎng)站爬取大量問題,篩選出和我們業(yè)務(wù)相關(guān)的問題,再人工標注,使得我們的數(shù)據(jù)集更豐富。

NLG(自然語言生成)

我們目前采用的是Rasa Core里面默認的方式,采用的是構(gòu)建好的模板。通過模型生成的話,還需要嘗試。

總結(jié)

系統(tǒng)上線有一段時間了,使用情況還算良好,不過我們也發(fā)現(xiàn)了一些問題,比如預(yù)設(shè)定的意圖范圍有限,回復(fù)單一性讓人覺得并不那么智能,語音識別不完整有偏差等等。下個版本我們計劃使用深度強化學(xué)習(xí)做一個任務(wù)型的對話機器人系統(tǒng),引入拼寫糾錯功能

后續(xù)的工作

我們還是希望結(jié)合我們自身旅游 比價業(yè)務(wù)場景 繼續(xù)完善馬踏飛

1.給我們的馬踏飛加上人物形象,通過結(jié)合計算機視覺模型 呈現(xiàn)出與人互動 跟一個真人客服訂票一樣的體驗

2.結(jié)合旅游知識圖譜 和馬踏飛聊一下景點 例如:這個季節(jié)最適合去的地方? 馬爾代夫現(xiàn)在是什么溫度?

3.添加技能包等針對旅游業(yè)務(wù): 詢問天氣 匯率 時間

之前我們整理過Rasa Core 部分源代碼解析 希望下次可以和大家分享。

總結(jié)

系統(tǒng)上線有一段時間了,使用情況還算良好,不過我們也發(fā)現(xiàn)了一些問題,比如預(yù)設(shè)定的意圖范圍有限,回復(fù)單一性讓人覺得并不那么智能,語音識別不完整有偏差等等。下個版本我們計劃使用深度強化學(xué)習(xí)做一個任務(wù)型的對話機器人系統(tǒng),引入拼寫糾錯功能

后續(xù)的工作

我們還是希望結(jié)合我們自身旅游 比價業(yè)務(wù)場景 繼續(xù)完善馬踏飛

1.給我們的馬踏飛加上人物形象,通過結(jié)合計算機視覺模型 呈現(xiàn)出與人互動 跟一個真人客服訂票一樣的體驗

2.結(jié)合旅游知識圖譜 和馬踏飛聊一下景點 例如:這個季節(jié)最適合去的地方? 馬爾代夫現(xiàn)在是什么溫度?

3.添加技能包等針對旅游業(yè)務(wù): 詢問天氣 匯率 時間

之前我們整理過Rasa Core 部分源代碼解析 希望下次可以和大家分享。

以上就是關(guān)于網(wǎng)絡(luò)pos機源代碼文檔介紹內(nèi)容,馬踏飛訂票機器人實現(xiàn)方案介紹的知識,后面我們會繼續(xù)為大家整理關(guān)于網(wǎng)絡(luò)pos機源代碼文檔介紹內(nèi)容的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://m.afbey.com/newstwo/109912.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報,一經(jīng)查實,本站將立刻刪除。