[ChatBot] 創造具有自然語言處理的聊天機器人吧!(2) — 自然語言處理神器LUIS

本篇會先基本介紹LUIS這個自然語言處理神器,可以透過這個LUIS雲端服務,在不需要撰寫程式情況下建立一個客製化自然語言基礎架構。對後續我們就可以用程式碼,把從機器人接收使用者的語句,透過API丟給雲端的LUIS進行判斷,LUIS會透過JSON回應的資訊形式告訴我們使用者的語句的涵義。

有系列文可以參考:

環境前提

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資料。