iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0
Everything on Azure

使用 Microsoft Conversational AI Tools - 打造新时代的UI界面系列 第 20

[20]LUIS深入使用 - 定義Entities來截取參數

上一篇看完了如何把LUIS model發佈出來并且在BotBuilder怎麽整合在一起之後。

接下來在更深入的看看如何把LUIS使用到最大化。先從Entities開始介紹起。

Entities是什麽?

可以把Entities想成是句子裡面的參數,也就是會變動的部分。舉例來説,如果我今天要訂房,可能會説,我要住3個晚上。換另外一個人,可能變成我要住5個晚上。

從這個語句裡面,有2個參數:

3和5 - 代表要住的天數
晚上 - 代表的是單位
透過把這些參數定義出來,就是今天要介紹的Entities。

Entities有什麽用?

在寫程式裡面,會把重複的邏輯變成一個方法,而變化的地方變成方法傳入的參數。

同理,intent可以比喻成爲方法,而entities就是參數,透過這兩個結合,不用寫那麽多種組合的utterance。

另外一個好處是,在識別意圖的時候,entities可以被識別出來,讓程式可以使用,讓整個intent用同一個方法處理,而entities 作爲傳入進去的參數。

建立Entities

entities是定義在utterance上面,而utterance是依附在intent上面,因此先從建立intent開始。

接下來的執行動作將會是:

建立一個intent
建立出utterance
使用内建的entities定義天數
測試天數的entities
使用自定的entities定義單位
測試建立出來的單位

建立一個intent

這邊要在建立一個新的intent,這個intent用來識別使用者想要訂房。因此叫做ReserveRoom

chrome_2018-07-25_19-53-38.png
建立出ReserveRoom intent

建立出utterance

接下來要定義一個utterance。這邊將會以一個簡單的例子做測試。

一般來説,訂房都會說要住多久,因此,加入一個我要住3晚的utterance。

使用内建的entities做定義

上面的語句可以看到,3是一個關鍵。代表著總共有幾個晚上。

因此,可以把這個定義成爲一個entities。

要定義非常簡單,只需要把滑鼠移動上去,會有一個框框把目前選到的字包住,然後點下左鍵,就可以設定要定義成爲什麽entities:

chrome_2018-07-25_19-55-41.png
選取要設定3的entities
由於這個entities都會是數字,因此要定義為一個數字形態。而數字屬於内建的entities清單,因此選擇了Browse prebuilt entities。

點下去了之後,會出現一個pop up,這個時候只需要搜索number,就可以找到内建的數字形態number。

chrome_2018-07-25_19-56-21.png
找到内建的number形態
當選擇好了之後,在清單裡面,會發現本來的3變成了number,這個可以透過右邊的Entities Views來切換要顯示entities名稱還是實際的值。如果滑鼠移動上去,會顯示對應的值:

chrome_2018-07-25_19-56-41.png
清單裡面會預設顯示entities的名稱

測試天數的entities

首先,可以先輸入定義的utterance,可以看到,使用有training的utterance找到是很正常的:

chrome_2018-07-25_20-37-12.png
測試training的utterance
這個時候來換一下晚上住幾晚的數字,變成我要住10晚:

chrome_2018-07-25_20-39-16.png
測試我要住10晚
從截圖可以發現,發現entities有對應到,但是intent錯了。

這個是因爲training的基數太小了,因此可以把這組新的也加入utterance清單。

使用自定的entities定義單位

接下來再來定義另外一個entities。3晚其實是一個單位。有可能是3天(也就是2晚)。

因此來增加一個entities用來發現unit。

這次因爲不屬於任何已經存在的entities清單,因此,將建立一個自定義的entities。

先選到文字晚
輸入unit - 因爲不存在所以找不到
按下Create new entities
chrome_2018-07-25_19-57-31.png
建立新的entities
在pop up出來的畫面定義entities名稱unit,Entity Type選擇simple。

entities可以有不同的形態,包含組合(Composition)類型,或者繼承(hierarchy)類型。以這邊的3天為例子,composition其實比較適合。不過這篇以簡單介紹爲主, 因此這邊將不會介紹這些其他形態,如果有興趣可以看官網的説明。
新增好了這個entities之後,將來建立一個新的utterance,我要住4天,這個時候,把天的部分設定entities為unit

chrome_2018-07-25_19-58-39.png
設定好unit

測試建立出來的單位

接下來,按下Train之後,接下來做一個測試。

測試會發現,number以及unit都可以識別出來。

到目前爲止整個entities的定義就完成了。

管理Entities

透過左邊可以切換成爲以entities爲主,看的到總共有多少entities有被使用和定義出來。

如果要修正entities將可以在這個位置做到:

chrome_2018-07-26_08-14-35.png
entities的管理畫面

結語

這篇介紹了如何在LUIS裡面從句子裡面特定字的部分,也就是entities的部分。

透過測試可以看到,LUIS可以在判斷intent之外也取得到這些entities。

下一篇將切回到程式的部分,將來看看如何在程式裡面使用這些entities。


上一篇
[19]把LUIS和BotBuilder整合
下一篇
[21]LUIS深入使用 - 如何在BotBuilder使用entities
系列文
使用 Microsoft Conversational AI Tools - 打造新时代的UI界面30

尚未有邦友留言

立即登入留言