上一篇看完了如何把LUIS model發佈出來并且在BotBuilder怎麽整合在一起之後。
接下來在更深入的看看如何把LUIS使用到最大化。先從Entities開始介紹起。
可以把Entities想成是句子裡面的參數,也就是會變動的部分。舉例來説,如果我今天要訂房,可能會説,我要住3個晚上。換另外一個人,可能變成我要住5個晚上。
從這個語句裡面,有2個參數:
3和5 - 代表要住的天數
晚上 - 代表的是單位
透過把這些參數定義出來,就是今天要介紹的Entities。
在寫程式裡面,會把重複的邏輯變成一個方法,而變化的地方變成方法傳入的參數。
同理,intent可以比喻成爲方法,而entities就是參數,透過這兩個結合,不用寫那麽多種組合的utterance。
另外一個好處是,在識別意圖的時候,entities可以被識別出來,讓程式可以使用,讓整個intent用同一個方法處理,而entities 作爲傳入進去的參數。
entities是定義在utterance上面,而utterance是依附在intent上面,因此先從建立intent開始。
接下來的執行動作將會是:
建立一個intent
建立出utterance
使用内建的entities定義天數
測試天數的entities
使用自定的entities定義單位
測試建立出來的單位
這邊要在建立一個新的intent,這個intent用來識別使用者想要訂房。因此叫做ReserveRoom
建立出ReserveRoom intent
接下來要定義一個utterance。這邊將會以一個簡單的例子做測試。
一般來説,訂房都會說要住多久,因此,加入一個我要住3晚的utterance。
上面的語句可以看到,3是一個關鍵。代表著總共有幾個晚上。
因此,可以把這個定義成爲一個entities。
要定義非常簡單,只需要把滑鼠移動上去,會有一個框框把目前選到的字包住,然後點下左鍵,就可以設定要定義成爲什麽entities:
選取要設定3的entities
由於這個entities都會是數字,因此要定義為一個數字形態。而數字屬於内建的entities清單,因此選擇了Browse prebuilt entities。
點下去了之後,會出現一個pop up,這個時候只需要搜索number,就可以找到内建的數字形態number。
找到内建的number形態
當選擇好了之後,在清單裡面,會發現本來的3變成了number,這個可以透過右邊的Entities Views來切換要顯示entities名稱還是實際的值。如果滑鼠移動上去,會顯示對應的值:
清單裡面會預設顯示entities的名稱
首先,可以先輸入定義的utterance,可以看到,使用有training的utterance找到是很正常的:
測試training的utterance
這個時候來換一下晚上住幾晚的數字,變成我要住10晚:
測試我要住10晚
從截圖可以發現,發現entities有對應到,但是intent錯了。
這個是因爲training的基數太小了,因此可以把這組新的也加入utterance清單。
接下來再來定義另外一個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
設定好unit
接下來,按下Train之後,接下來做一個測試。
測試會發現,number以及unit都可以識別出來。
到目前爲止整個entities的定義就完成了。
透過左邊可以切換成爲以entities爲主,看的到總共有多少entities有被使用和定義出來。
如果要修正entities將可以在這個位置做到:
entities的管理畫面
這篇介紹了如何在LUIS裡面從句子裡面特定字的部分,也就是entities的部分。
透過測試可以看到,LUIS可以在判斷intent之外也取得到這些entities。
下一篇將切回到程式的部分,將來看看如何在程式裡面使用這些entities。