LUIS - 自然語言語意分析初學入門

LUIS 是自然語言的語意分析服務,接下來的文章會用官方文件為基底,開始學習如何建立屬於自己的 LUIS 服務,過程中我會將這些步驟記錄下來,希望也能對別人有所助益

參考文件:安裝和執行適用于 LUIS 的 Docker 容器

什麼是 Language Understanding Intelligent Service (LUIS)?

LUIS文件首頁的地方我看到這句話,真的是很精簡:了解 Language Understanding 如何讓應用程式了解人在文字中所表達的意思

我們可以從概觀頁面中看到定義

Language Understanding (LUIS) 是一種雲端式交談式 AI 服務,可將自訂機器學習智慧套用至使用者的對話、自然語言文字中,以預測整體意義,並找出相關的詳細資訊。
LUIS 的用戶端應用程式是任何對話應用程式,可與使用者透過自然語言溝通以完成工作。 用戶端應用程式的例子包括社群媒體應用程式、AI 聊天機器人,以及啟用語音功能的桌面應用程式。

從上面這簡短的介紹當中可以發現 LUIS 能被廣泛的應用到很多的情境中,相信能夠為我們實務上的問題帶來一些嶄新的解決方案,我是還蠻期待的,至於有沒有用,那就之後慢慢看下去吧

事前準備

因為LUIS需要在Azure裡面先建立起服務,所以可想而知的也必須要先有個Azure帳號才能夠使用,但我們可以使用免費的額度來進行測試開發使用,所以不用太擔心費用的問題

申請完畢之後,登入Azure


左側選單找到建立資源


輸入luis可看到language understanding


此處選擇建立


在這邊就可以依據需要選擇然後建立資源了,因為我們會建立LUIS,稍後也會將它發布出去測試,所以選擇兩者,如果想了解細節的人,可以看看定價


仔細看看下面的認知服務計價原則,會發現傳送的每個文字片語都會被視為一筆交易計價,雖然我看不是很懂,但我突然明白了為什麼我只有測幾次請求,交易卻是將近 100 筆的紀錄,一直以來讓我很驚恐的部分就是 Azure 的計價…實在是太難了


反正記得選取計價層的時候,要挑有F0免費的來測試

建立完畢 LUIS 服務後,接著到LUIS 網站去建立 luis 應用程式


因為我先前已經有建立過,所以我這裡直接可以點New App,他會跳出一個燈箱讓我填寫新的 App 資料;如果是第一次進入,印象是會要你選擇剛剛在Azure建立的資源,才可以繼續使用

建立模型

首先需要先知道一下整個 LUIS 的概念,我們以點餐為例,在Intents裡面新增一個點餐行為

然後輸入幾個口語化的訂單範例給他,注意要不同的句型喔


像這樣,接著就可以把文字標記起來,並選擇實體…這邊還沒有建立,所以我們先回到Entities去建立

再次回到Intents就可以將剛剛的點餐範例,標記上哪個東西代表的是餐點名稱了

當我們都設定完畢後,就可以點右上角的Train去訓練我們的模型了

訓練完畢之後我們可以在Test測試我們的模型

可以看到他預測這個輸入的文字,意圖是點餐行為,但是他沒有抓到正確的 Entities


上面的這個就有抓到

接下來我們講講複雜一點的實體,再剛剛操作的是機器學習的 Entity,稱之為 ML Entity,那這個東西他是可以做階層的,再這邊我另外做了一個小吃攤的點餐行為,先建立一個叫做餐食的 entity,並且加上幾個子實體,分別是餐點的份量、麵條種類以及主菜

這樣的話,測試的結果會在餐食底下看到各個子實體

細節的部分請參照說明文件

發布

右上角的Publish按鈕點下去後他會問說要發佈到哪裡去,我們因為只是測試練習,所以就直接發到production


上面這個地方可以看到 (上面這張我截錯 app,不過沒關係,都是一樣的)

  1. APIkey
  2. EndPoints
  3. 測試用的網址

我們可以直接用測試網址後面帶 QueryString 去測試語句,測試結果會回應 Json 資料格式