本篇會先基本介紹LUIS這個自然語言處理神器,可以透過這個LUIS雲端服務,在不需要撰寫程式情況下建立一個客製化自然語言基礎架構。對後續我們就可以用程式碼,把從機器人接收使用者的語句,透過API丟給雲端的LUIS進行判斷,LUIS會透過JSON回應的資訊形式告訴我們使用者的語句的涵義。
有系列文可以參考:
環境前提
- 申請LUIS帳號
LUIS創建應用程式
1. 當我們有了LUIS帳號並且登入之後,上排點選「My apps」,然後點選「+ Create new app」
2. 輸入App資訊,點選「Done」
以下為必須輸入資訊:
- Name:你LUIS app名稱
- Culture:選擇語言,在此我選「Chinese」,這邊要注意!選擇你要教她的語言,就像是機器人的母語的意思。如果你選擇英文,然後一直教它中文,會造成機器人會一直學不會你的意思。
3.設定Intents、Utterence、Entity
然後你會看到這頁
了解名詞
開始設定之前,先帶大家了解三個名詞,這都攸關於等等設定自然語言處理的好壞。
-
Intents:使用者意圖
ex.詢問天氣 -
Utterences:使用者語句
ex.今天台北天氣如何?
ex.明天新竹會下雨嗎? -
Entities:使用者關鍵字
ex.台北[關鍵字類別屬於:地點]、天氣[關鍵字類別屬於:天氣]
ex.新竹[關鍵字類別屬於:地點]、下雨[關鍵字類別屬於:天氣]
設定Intents
(1)點選「+ Create new intent」
(2)輸入「intent name」
設定Utterences
(1)在剛剛的intent底下輸入設定Utterences
(2)建議先設定起碼5句Utterences
(3)如果輸入的Utterences並非屬於該intent,右邊下拉選單Labeled intent可改為該屬於它的intent或是None(即為看不懂意圖)
簡單來講,使用者問的一定不只一種意圖,在這邊只設定詢問天氣,當然使用者也有可能會詢問火車時刻表等等等,看你的機器人是要運用在什麼用途,當之後有多個意圖之後,機器人或許一開始會不懂使用者的語句而分錯意圖或是聽不懂,這時就需要修改Labeled intent,慢慢的機器人就會懂了。
設定Entities
(1)點選「+ Create new entity」
(2)輸入使用者語句關鍵字類別
這邊我們設
- 地點:ex.台北、新竹…
- 天氣:ex.天氣、下雨…
這邊說明一下,在Entity type這裡,我們都設定Simple,當然還有很多種選項,這邊就給大家自行去玩玩看囉
(3)點回該Intent,將剛剛的Utterences語句做關鍵字標選
點的方式就是像我這樣把關鍵字"天氣"圈選起來,設定關鍵字類別為"天氣"。
如果是圈選關鍵字"台北",關鍵字類別則為"地點"。
4.點選右上角「Train」
訓練完之後會從紅燈變成綠燈,這才表示有訓練完成
5.點選右上角「Test」
輸入一句話,如果像我一樣出現「None」代表機器人聽不懂你的意圖,別擔心,一開始總是會聽不懂的,只要修正即可。
這時你可以看到它intent顯示「None」的機率為0.43,而「詢問天氣」的機率只有0.42,我們要透過不斷訓練,讓他聽得懂詢問天氣的語句大概為什麼。
點選「Edit」,並修正為詢問天氣,並且於Utterences這裡將剛剛沒抓取到的Entity關鍵字圈選,並修改intent。
6.重複步驟3、4、5,即可將訓練和測試做得更完整,讓機器人更聽得懂使用者的語句
重新點選「Train」,在點選「Test」
再次輸入別句話,測試看看是否聽懂,像我這次機器人就顯示intent「詢問天氣」的機率有0.90,還有標出Entities「天氣–>天氣」
7.點選右上角「Publish」,進行發布
在點選「Publish」
接著它會出現綠綠的一條通知,告訴你已發布完成,然後跟你說endpoint URL讓你可以跟程式做串接。
就點選「Refer to the list of endpoints」即可進入下一步驟畫面。
8.取得三個重要資料:Application ID、Authoring Key、Endpoints
這三個資料非常重要呀,之後與程式串接就需要靠它們了。
或是點選右上的「MANAGE」,再點Application Settings的Application Information,即可獲得「Application ID」
點Application Settings的Key and Endpoints,即可獲得「Authoring Key」和「Endpoints」
這邊提一下Endpoints,你會發現這是一條網址,你可以嘗試把它點開看看,你會發現像我一樣的顯示,這個就是可以直接拿來測試語句會顯示的JSON資訊。
你可以嘗試看看在網址的最後輸入你想測試的語句,這裡我輸入"金天天氣好嗎"
…&timezoneOffset=-360&q=今天天氣好嗎
https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/.......&timezoneOffset=-360&q=今天天氣好嗎
就會看到此語句的JSON資料。