帳號:
密碼:
CTIMES / 文章 /   
Microsoft LUIS語意識別簡介
 

【作者: 凌群電腦】   2019年09月05日 星期四

瀏覽人次:【780】
  


隨著科技的進步與機器運算能力日漸強大,人們開始追求更方便、舒適的生活,像是如何讓機器去幫助人們解決各種問題,如何讓事情處理起來更快速、更精準,在這樣的趨勢下,人工智慧開始成為一個熱門的話題,在各種領域中,都能看到與它相關的應用。


語意識別是在人工智慧當中的一門技術,當機器收到一段文字或句子時,機器會去分析這段文字跟句子、並了解所代表的語意,便是語意識別在做的事,Language Understanding Intelligent Service (LUIS)便是一個微軟所提供去進行語意識別的API雲端式服務。


LUIS會要求使用者建立一個App,這個App可能會是針對某個領域的語句去分析它的語意,例如點餐服務:會分析使用者說的語句,決定出使用者想要的餐點。這個App也可以設計去判斷獨特的語句,例如,讓機器可以看懂一些獨特、少用,但自己會用到的語法。在決定好自己App要用的主題後,便可以開始建立自己的語意識別App。


建立LUIS App

LUIS為微軟提供的雲端式服務,所有模型的設定都在https://www.luis.ai/這個網站中進行,進入網站後,點選網站中Login / Sign up這個按鈕,便可以開始使用,首先會要求使用者登入或註冊帳戶,若有微軟的帳戶,就可以直接使用,沒有的話則要先註冊一個帳戶,才能繼續進行後面的步驟。


進入LUIS網站並登入後,看到My Apps的列表,可以選擇自己建立過的App,或是建立新的App來使用。在LUIS中,每一個App,都代表著一個不同的語意模型,它們面對各個語法,都有各自的判斷方式,即使是同樣的一句話,而且當中每個字都一樣,但在不同的App中,它們也可能被當作不同的意思來看待。


首先我們得建立自己的App,這裡有Create new App跟Import new App兩種方式來建立,Create new App是從頭到尾自己建立,Import new App則是將過去自己或他人建好的App讀取入自己的LUIS中來使用。


假設要做一個簡單的點餐服務,選擇Create new App,開始建立自己的語意模型,當中Name的欄位表示要給這個App的名稱,由於要做一個點餐服務,所以在這裡輸入order。Culture表示這個App要使用的語言,選擇不同的語言可以辨識不同語言的語意,但因為Chinese目前只支援簡體中文,繁體中文可能無法完全辨識正確,這裡選擇使用English。Description為描述這個App,可以自行決定是否輸入,輸入完成後,如圖一。



圖一 : 建立新的App
圖一 : 建立新的App

在將App的基本資料都輸入完後,點選Done,便建立好一個新的App,並且網站會自動進入到這個App中Intents的頁面。


在開始定義LUIS的語意前,得先知道幾個常用詞


1.Intent: 各個句子都有它們所代表的意圖,在語意分析中我們大多將句子的意圖稱之為Intent,像是「你好」、「嗨」、「很高興見到你」都是為了打招呼用,我們就可以把這些句子,都定義為叫做「打招呼」的Intent。


2.Utterance: 在「打招呼」的Intent中,包含著「你好」、「嗨」、「很高興見到你」這些語句,我們便把Intent中的這些語句稱之為Utterance。


3.Entity: 在「他昨天前往台北」、「他今天前往台中」、「他前天前往台南」這些Utterance都是「某個時間前往某地」的Intent,而昨天、今天、前天,這些詞都代表著「時間」,台北、台中、台南,這些詞都代表著「地點」,我們將「時間」、「地點」這些句子中的關鍵詞,稱之為Entity。所以「某個時間前往某地」這個Intent,包含「時間」、「地點」這兩個Entity。


建立Entity

為了讓Intent的辨識能力更加強大,我們這裡先建立Entities,再來建立Intents。首先,在左邊App Asset的選單中,點選Entities,進到Entities的頁面,如圖二。



圖二 : Entities頁面
圖二 : Entities頁面

在點餐服務的句子中,需要使用到但是結果可能因人而異的詞語有「餐點名稱」、「數量」,由於定義數量的Entity,在LUIS裡面已經有內建好的可以使用,所以我們這裡只建立餐點名稱的Entity。點選Create new entity,開始建立個人entity,Entity name叫做Menu,Entity type選Simple,最後點選Done建立entity,如下圖三。



圖三 : 建立Entity
圖三 : 建立Entity

假設點餐服務的商品有薯條、漢堡、炸機、可樂、蘇打,所以我們在Roles的Create new role中輸入French fries, Burger, Fried chicken, Cola, Soda,將這些餐點名稱定義到Menu這個Entity中,便定義好這個Entity,如圖四。



圖四 : 代表餐點名稱的Entity: Menu
圖四 : 代表餐點名稱的Entity: Menu

建立Intent

在點餐服務中,我們會需要去點單、買單,所以會分別建立「點單」、「買單」的Intent。首先建立代表「點單」意圖的Intent,在Intents頁面中我們點選Create new intent,在Intent name中輸入Order_Meal,點選Done建立Intent。


點餐的句子,可能會有「Give me one burger」、「I’ll have two cola」、「I would like three french fries」、「Can I have five fried chicken」、「I would like to order ten soda」等,所以我們要在Utterance中加入這些句子。


在Utterance中,one, two, three, five, ten這些詞,都有數量的意思在,我們用滑鼠點選Utterance中的這些詞,便可以加入Entity,這裡我們要選擇代表「數量」的Entity,在前面有提到,LUIS中有內建跟數量相關的Entity,所以這裡要選擇Add a prebuilt entity,如圖五,看到許多LUIS已內建好的Entity,選擇「number」這個Entity,之後one, two, three, five, ten這些詞就算替換成其他數字,LUIS一樣都能夠了解語意。



圖五 : 加入LUIS內建的Entity
圖五 : 加入LUIS內建的Entity

而Utterance中burger, cola, french fries, fried chicken, soda這些詞,都是餐點名稱,用滑鼠點選Utterance中的這些詞,找到前面建立的「Menu」這個Entity並選擇,如圖六。



圖六 : 加入自己建立的Entity
圖六 : 加入自己建立的Entity

將「Menu」、「number」這兩個Entity都加入後,我們便定義完成Order_Meal這個意圖是去點單的Intent,如圖七。



圖七 : 點單Intent: Order_Meal
圖七 : 點單Intent: Order_Meal

意圖是「買單」的Intent,作法跟「點單」的Intent類似,點選Create new intent,在Intent name中輸入Pay_Bill,點選Done建立Intent。在Utterance中加入「How much」、「May I have the check」、「Can we have the bill」、「Check, please」、「How much is the check」這些擁有買單語意的句子,由於這裡不需要用到Entity,所以我們加入好Utterance後,就已建立完Pay_Bill這個代表「買單」的Intent,如圖八。



圖八 : 買單Intent: Pay_Bill
圖八 : 買單Intent: Pay_Bill

測試LUIS App

先點選畫面右上角的Train,等training完後,點選畫面右上角的Test,出現一個panel,能夠輸入要測試的語句,並辨識出語句的語意,如圖九。



圖九 : 測試LUIS語意識別功能的panel
圖九 : 測試LUIS語意識別功能的panel

這裡我們測試「Can I have eight burger」,LUIS辨識完這句話的Intent是Order_Meal,Entities中number為eight,而Menu為burger,辨識的結果正確,如圖十。



圖十 : 測試LUIS語意辨識結果-1
圖十 : 測試LUIS語意辨識結果-1

接著我們測試「May I have the check」,LUIS辨識完這句話的Intent是Pay_Bill,沒有Entities,辨識的結果正確,如圖十一。



圖十一 : 測試LUIS語意辨識結果-2
圖十一 : 測試LUIS語意辨識結果-2

在測試完兩個語句後,發現結果都正確。這裡需要注意一下,每次有地方做完修改,都要記得去Train,再去測試或是使用,不然語意辨識完的結果可能會錯誤。


結論

本文只提到LUIS常用的功能,若想建立能更精確分析語句的語意識別程式,可以更深入研究LUIS,並使用其它的功能,像是Pattern, Phrase等,來加強自己程式的辨識準確率,讓它能應對更多種情境、更複雜的句子。還有許多類似LUIS的語意識別服務可以使用,像是Google的Dialogflow、Facebook的wit.ai,都有各自的優劣,大家可以根據各自的需求,來決定要用哪款,實作適合自己的語意識別程式。


建立完個人的語意識別APP後,也可以配合其它的程式、API,來擴充自己APP的應用。由於LUIS只提供語意識別功能,雖然能讓程式辨識文字的語意,但不會去做其它動作,所以常常需要搭配其它的程式或服務,才能不只是了解語言,也能做出相對的回應。像是配合Microsoft Azure上的語音API、Bot等服務,讓程式能透過語音輸入,並且判斷使用者的話語,決定要作出什麼相對的回覆,最後還可以搭配LINE, Facebook這些社群軟體,就可以完成自己獨一無二的聊天機器人。


(本文作者林承毅任職於凌群電腦)


參考文獻


[1] https://www.luis.ai/


[2] https://docs.microsoft.com/zh-tw/azure/cognitive-services/luis/


[3] https://kknews.cc/zh-tw/tech/zm4zang.html


[4] https://docs.microsoft.com/zh-tw/azure/cognitive-services/luis/what-is-luis


[5]https://blogs.msdn.microsoft.com/microsoft_student_partners_in_taiwan/2017/10/26/%E3%80%90luis%E3%80%91%E5%9C%A8-10-%E5%88%86%E9%90%98%E5%85%A7%E5%89%B5%E9%80%A0%E6%82%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E5%80%8B-luis-app/


[6] https://blog.alantsai.net/posts/2018/07/bot-framework-with-ai-cognitive-service-17-text-semantic-recognition-service-luis-concept-intro#WizKMOutline_1532178669350572


[7] https://blog.alantsai.net/posts/2018/07/bot-framework-with-ai-cognitive-service-18-create-luis-app-from-theory-to-practise


相關文章
如何對5G測試投資進行未來驗證
由自駕車邁向智慧交通系統的進展
延伸工業感測器價值鏈 須藉系統整合深入應用
機器視覺走入AI世代 後勢發展深具潛力
EDA跨入雲端環境新時代
comments powered by Disqus
相關討論
  相關新品
EM500EV 測試/開發板
原廠/品牌:集博
供應商:集博
產品類別:IDE
  相關新聞
» 微軟全球學校串聯日 2天締造2900萬虛擬旅程紀錄
» 微軟助力遠雄數位轉型 以數據推動地產生態創新
» 趨勢科技推出全方位智慧工廠資安解決方案
» 微軟:挑戰數位轉型重力 混合雲戰略是正確方向
» 產學合作創益加乘 群聚力打造科技生態鏈
  相關產品
» Microsoft 365以AI為企業資安全方位助力
» 經濟部偕微軟與Google 培育高中職生AI職能
» TYAN發佈伺服器及主機板支援第二代Intel Xeon
» 意法半導體推出採用Linux發行版的STM32MP1微處理器
» NVIDIA、微軟、Epic Games、Unity及各大遊戲開發商於GDC 2019啟動次世代遊戲

AD


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2019 遠播資訊股份有限公司版權所有 Powered by O3
地址:台北市中山北路三段29號11樓 / 電話 (02)2585-5526 / E-Mail: webmaster@ctimes.com.tw