網絡pos機源代碼文檔介紹內容

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

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

本文目錄一覽:

1、網絡pos機源代碼文檔介紹內容

網絡pos機源代碼文檔介紹內容

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

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

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

對話系統簡介

目前市面上對話系統大概分為三類。

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

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

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

對話系統完整的交互流程

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

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

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

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

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

技術選型

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

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

下面詳細說下DM和NLU這兩個模塊的細節

DM(Dialogue Management)

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

在rasa_core中我們有如下幾個關鍵概念

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

domain:其對應一個domain.yml文件,文件定義了intent, slot, forms, templates, actions,entities等關鍵組件。

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

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

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

下面附上一些實現的細節

domain中

自定義的utter開頭的動作

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

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

不客氣,小馬很高興能為您服務!

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

stories中

標題自定義

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

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

NLU(Natural Language Understanding)

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

NLU 采用深度學習模型,由 pytorch 實現,并針對業務進行了優化。

第一階段采用 LSTM 模型

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

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

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

最后使用 max pool 和簡單的神經網絡來預測意圖。

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

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

第二階段將 LSTM 替換為 BERT

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

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

BERT 之后仍然使用 max pool 和簡單的神經網絡來預測意圖,使用 CRF 預測槽值。

BERT 為當前最好的語言模型之一,BERT 在預訓練時用到大量語料。使得模型可以在少量訓練數據時表現良好的效果。

其它優化,減少 BERT 模型的層數,在不影響精確度的同時減少計算量。

對比使用發現預訓練詞向量也有不足,詞向量文件通常幾個 GB,內存占用過大。模型過淺,不能充分利用預訓練語料信息。需要分詞,如果分詞錯誤將導致后續任務錯誤。

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

神經網絡結構圖

NLU 數據集

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

我們訓練所用的數據來自幾個方面。

1. 翻譯 Atis 數據集

Atis 數據集是廣為使用的意圖和槽數據集,內容為機票預訂等,和我們的業務相同。

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

2. 模板自動生成

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

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

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

3. 爬蟲

從問答網站爬取大量問題,篩選出和我們業務相關的問題,再人工標注,使得我們的數據集更豐富。

NLG(自然語言生成)

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

總結

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

后續的工作

我們還是希望結合我們自身旅游 比價業務場景 繼續完善馬踏飛

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

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

3.添加技能包等針對旅游業務: 詢問天氣 匯率 時間

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

總結

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

后續的工作

我們還是希望結合我們自身旅游 比價業務場景 繼續完善馬踏飛

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

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

3.添加技能包等針對旅游業務: 詢問天氣 匯率 時間

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

以上就是關于網絡pos機源代碼文檔介紹內容,馬踏飛訂票機器人實現方案介紹的知識,后面我們會繼續為大家整理關于網絡pos機源代碼文檔介紹內容的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.tonybus.com/newstwo/109912.html

你可能會喜歡:

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