2017年3月30日

打造客服聊天機器人(1)-LUIS篇

最近人工智慧是很熱的主題,聊天機器人的關注度有提高不少。本文將討論如何利用微軟的人工智慧服務來打造一個電信公司的聊天機器人,這個將要出生的小嬰兒,初步的功能就只有:

能夠回答各電信公司的Iphone資費方案

舉例:

顧客:我想知道台哥大的Iphone7資費方案

機器人:請參考台哥大的Iphone7資費方案

我們的系統架構大致如下:

image

聊天程式

聊天的UI呈現,可以是Windows Form,Web,Facebook messanger,Line …,UI

客服機器人WebAPI

負責接收聊天程式客戶發送的句子,轉送給LUIS.ai進行語意分析,得知顧客意圖(Intent)和關鍵字(Entity),到知識庫找出對應的句子,再回傳給聊天程式。

LUIS.ai

LUIS目的是建立語意分析的模型,其訓練模式是監督式學習(Supervised learning)。訓練好的模型,用來進行顧客句子語義分析,進而得知該顧客句子的意圖(Intent)和斷詞結果:關鍵字(Entity),並算出課這兩者的接近度(Scrore),以我們這Case, 顧客的意圖只有一種:詢問各家電信公司的資費方案,而要知道是哪家電信哪隻iphone的方案,要從顧客句子去找出接近的關鍵字(Entity),並把結果回傳給客服機器人WebAPI,去KM裡找尋對應的回覆。

KM

這部分可能是根據Luis傳回的Entity和Intent建立對應的句子知識庫。

 

架構圖中的KM部分是比較Domain依賴,實作會用判斷式簡單實作在WebAPI裡。接著我們會分以下文章來說明這幾個部分的建置。

一.  LUIS.ai  

1. 前置規劃

規劃前先了解以下名詞:

Utterence :客戶輸入的語句。例:

我想知道台哥大的Iphone7資費方案

Intent:客戶的意圖。例:

詢問電信公司資費

Entity: 斷詞分析出來的關鍵字。客戶輸入的語句裡, 有哪些符合我們預建的關鍵字(Entity),這邊Entity我翻成關鍵字,覺得比實體貼切一點。例:

台哥大、Iphone7

這幾個元素的關係如下:

image

 

因此會有以下訓練資料要輸入

image

2. 在LUIS官網建立帳號

a. 利用MSN帳號登入,最初需要設定幾分鐘,如果太久都還沒出來的話,可按F5 Refresh
image_thumb4

b. 填入基本資料,然後繼續
image_thumb3

c. 成功後會出現Tutorial, 大約是建立一個Cognitive的步驟, 您可以不斷按NEXT查看

1. Crete “Scheduler” APP

3. Define app intents

4. Add utterrance for intents

2. Add entities

5. Label entities in uttereances

X Add prebuild entities

6. Train and test

7. Publis app

8. All done!

上面的數字是我們接下來建立順序,Add prebuild entities 這預設的Entity在我們Case不能匯入,因為像iphone 7的7這數字很容易被當成獨立數字而被先判定為Entity,這是中文語意分析的一些問題,舉例說:陳水扁人在高雄,扁人可能就不是預期要的詞了。

過來就要設定我們的機器人了。

3. 設定機器人 APP

a. 首先點New App

image_thumb6

填入相關資料Name/Cultur…,因為是辨識中文,Cuture要選Chinese, 完成後按Create

image_thumb11

b. 建立2個Entity

   Entity Name:電信公司
   Type是Simple
 

   Entity Name:手機類型
   Type是Hierarchical

    Child:IPHONE7/IPHONE6S/IPHONE6

image_thumb31

image

完成後就有兩個 Entity:

image

C. 建立一個Intent

image_thumb26

點Add Intent新增一intent, 輸入名稱:詢問電信公司資費 ,點Save。

image_thumb23

d. 進入電信公司資費 Intents,輸入一條Utterence ,像是:

告訴我台哥大的Iphone7方案

image_thumb25

e. 連接詞到Entity。點在台灣大的詞上,會有[]的符號,你可以用mark方式選取後,點右鍵選對應Entity 。
image

以下是原有句子:

image

連接的Entity的如下:

image

4. Training & Test

在測試之前要先點Train Application,這樣才會訓練成一個Model。

image

過來就可輸入一句話看一下結果,底下有找到兩個Entity,括號後是Score,和一個Intent。

image

5. 發佈(Publish)

在Publish前要先點Training。

image_thumb41

後面的機器人Web API會呼叫我們製作的LUIS Service,需要用到以下資料:

App ID:

image_thumb43

Programmantic API Key –> 呼叫網址裡的Subscribe-Key的值。

image_thumb45

image_thumb47

6. 測試API網址

Publish後會出現Endpoint url,這個就是我們機器人WebAPI要連接URL,裡面的subscription-key跟前面的一樣, q= 後面就是客戶發的句子。

image

我們在q= 後加入要解析的句子, 貼到瀏覽器上執行(因為會回傳JSON, 所以要用EDGE或可以解析的瀏覽器)。

image

就會得到以下JSON結果,包含Intent和Score,以及兩個entity:

image

到這邊LUIS差不多完成了,接著要開發用Bot Framework機器人WebAPI。

轉換門

>>>>打造客服聊天機器人(2)-Bot Framework篇

參考資訊:

淺談聊天介面與人機互動設計

LUIS API for training

Build Travel Agent Application Using LUIS API In Microsoft Cognitive Services - Part Two

Understanding Natural Language

LUIS教學-小白

董大偉老師:

http://studyhost.blogspot.tw/2016/04/bot-framework-1.html

http://studyhost.blogspot.tw/2016/08/bot-framework-4-luis.html

http://studyhost.blogspot.tw/2016/08/bot-framework-5-net-sdkluis.html

沒有留言:

張貼留言