歡迎來到微軟機器人編輯器使用教程,從這裏開始,建立一個簡單的機器人。
在該系列文章中,每一篇都將透過添加更多的功能來構建機器人。當完成教程中的全部內容後,你將成功的建立一個天氣機器人(Weather Bot)。在本系列中將學會以下內容:
1)
建立一個簡單的對話天氣機器人
2)
在機器人中提出問題,並獲取從HTTP API獲取響應
3)
在機器人中增加幫助提示和取消功能
4)
使用語言生成功能(LG: Language Generation)
5)
把機器人的回復轉換為卡片
6)添加LUIS功能,理解自然語言
準備條件
Bot Composer使用的預設辨識器就是LUIS。它使用語言理解 (LUIS) 服務,該服務允許機器人理解使用者的響應並確定在對話流中下一步要做什麽。語言理解 (LUIS) 是
Azure 認知服務
中的一項服務,可將自然語言處理套用於對話文本以預測含義並提取相關資訊。
本文將展示如何訓練LUIS辨識器來捕獲訊息中所包含的使用者意圖。然後將訊息傳遞給觸發器,觸發器定義機器人將如何響應。主要包含的內容有:
修改辨識器的類別(Update the recognizer type)
第一步
:啟動編輯器並開啟weather_bot專案
第二步
:在左側導航欄中選中weather_bot對話元件
第三步
:在右側的內容欄中,從「 辨識器類別 」中選擇「
預設辨識器
」。預設辨識器即使用LUIS
添加LUIS的數據和條件(Add language understanding data and conditions)
本節中,將建立三個語意(cancel, help, weather),用於替換在系列3[
https://www.
cnblogs.com/lulight/p/1
4902267.html
]中使用正規表式來檢測使用者所輸入的指令。
第一步
:選中「Cancel」觸發器,在內容的觸發語句運算式中填入以下語句:
- cancel
- please cancel
- stop that
- 取消對話
- 結束吧
第二步
:在「Condition」部份,設定運算式條件為 =
#Cancel.Score >= 0.8
設定LUIS的判斷結果分數要大於等於80%(0.8)的目的是避免不必要的觸發。因為LUIS是基於機器學習的意圖分類器,它會返回各種可能的匹配項,每一個匹配項都有一個評分。透過評分可以避免低可信度的結果。
第三步
:同樣的操作為「help」觸發器。選中「help」觸發器,在內容的觸發語句運算式中填入以下語句:
- help
- I need help
- please help me
- can you help
第四步
:在「Condition」部份,設定運算式條件為 =
#Help.Score >= 0.5
第五步
:最後在「weather「觸發器中。同樣用以下的語意替換舊的正規表式關鍵字。
- get weather
- weather
- how is the weather
請檢視添加LUIS語意的演示動畫:
配置LUIS資源(Configure a Language Understanding resource)
正如上一節中配置了LUIS語意和條件後,Bot Composer會提示有兩個錯誤(在右上角)。這正是由於當前還沒有配置LUIS資源。需要在
appsettings.json
檔中設定LUIS key和region資訊。
第一步
:當在Azure門戶上已經建立好LUIS(Language Understanding)服務後,登入Azure LUIS資源的界面,檢視」
Keys and Endpoint
「。註意:LUIS資源建立好後,會有兩個類別,一個是Language Understanding Authoring (LUIS)創作資源,一個是Language Understanding (LUIS)資源,提供服務介面。這兩個資源的Keys和Endpoint都需要在Bot Composer中配置。
第二步
:回到Bot Composer界面,可以直接點選錯誤提示中的」
appsettings.json
「進入檔中為luis節點設定值:(最左側導航中選擇」Configure「,"Development resources",點選右上角的JOSN檢視檢視,填充第一步中的值)。
"luis"
:
{
"authoringEndpoint"
:
""
,
"authoringRegion"
:
""
,
"defaultLanguage"
:
"en-us"
,
"endpoint"
:
""
,
"environment"
:
"composer"
,
"name"
:
"weather_bot"
,
"authoringKey"
:
""
,
"endpointKey"
:
""
}
,
註意:
也可以在UI上透過按鈕」Set up Language Understanding「根據UI提示一步一步的登入到Global版Azure,選擇已有的LUIS或新建。
但當前還不支持中國區的Azure。
第三步
:填充完luis節點中的資訊後,回到」建立「目錄。此時,Bot Composer的錯誤提示訊息。表示已經可以測試Bot是否可以成功呼叫LUIS資源。
第四步(非常重要的驗證步驟)
:登入LUIS門戶(
https://
luis.azure.cn/applicati
ons
), 驗證並測試weather_bot的LUIS App是否建立成功?語意和實體等是否同步過來?專案是否釋出?驗證呼叫結果(f="https://
luis.azure.cn/applicati
ons
">LUIS門戶
--> LUIS APP -->MANAGE --> Azure Resources ->
Example Query
)。如果在測試遇見
403 Forbidden -- "This application cannot be accessed with the current subscription."
最大的原因是在LUIS門戶中新建的weather_bot 沒有Publish。
LUIS偵測並提取文字中的實體(Using LUIS for entity extraction)
使用LUIS還可以在使用者的話語中來辨識實體,如本文的郵政編碼。這樣就能更明確的知道使用者意圖,簡化詢問輸入郵政編碼的步驟。
例如:使用者輸入「How is the weather in 98052?」,機器人就不需要再次提醒使用者輸入郵政編碼,而是可以直接回復天氣資訊。雖然這是一個簡單的例子,但對於機器人來說這個功能是一個機器模式與人自然對話的一個巨大改進。
第一步:在Bot Composer的左側目錄中選擇「使用者輸入」,然後選中「weather_bot」對話元件(非根目錄),點選「顯示程式碼」,在最後部份加上以下內容:
> Define a postal code entity. Any time LUIS sees a five digit number, it will flag it as 'postal code' entity.
$ postalcode:/[0-9]{5}/
第二步:設定完成後,回到機器人設計頁面,選中」getWeather「的BeginDialog元件。在這裏添加一個任務用來為內容user.postalcode設定postalcode實體的值(由第一步中所設定的匹配規則從LUIS中獲取)
第三步:在詢問郵政編碼的任務模組之前,點選」+「號按鈕,添加一個設定內容的任務(」管理內容「 --> 「設定內容」)。
第四步:在「Set a property」元件的右側的內容中,為Property設定為「 user.postalcode 」,為Value設定為 " =@postalcode "
當操作到這裏後,天氣機器人已經建立完成,就可以開啟測試的旅程了。
請檢視使用LUIS後,天氣機器人的完整版演示動畫:
感謝您看到了這裏。開啟實驗機器人的旅程。謝謝。
(微軟Azure Bot 編輯器系列的六個內容均是參考微軟官方的機器人文件進行的中文操作步驟,原文連線見參考資料)
參考資料
Tutorial: Add LUIS for language understanding
:
https://
docs.microsoft.com/en-u
s/composer/tutorial/tutorial-luis?tabs=v2x
[微軟Azure Bot 編輯器系列 1~6完]
當在復雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!
分類:
【Azure 機器人】
標簽:
建立一個簡單的對話天氣機器人
,
Bot Framework Composer
,
Azure Bot Service
,
LUIS
,
添加LUIS,理解自然語言
,
微軟Azure Bot 編輯器系列