建置可分解的 LUIS 應用程式

重要

LUIS 將於 2025 年 10 月 1 日淘汰,而自 2023 年 4 月 1 日開始,您將無法建立新的 LUIS 資源。 建議移轉 LUIS 應用程式交談語言理解,以繼續享有產品支援和多語言功能。

在本教學課程中,您將能夠建立可預測不同使用者意圖的電信 LUIS 應用程式。 在本教學課程結束時,我們將得到一個能根據使用者所提供的文字預測使用者意圖的電信應用程式。

我們將會處理不同的使用者案例 (意圖),例如:

  • 註冊新的電信線路
  • 更新現有服務層級
  • 支付帳單

在本教學課程中,您將了解如何:

  1. 建立 LUIS 應用程式
  2. 建議意圖
  3. 新增實體
  4. 新增表達方式
  5. 標籤範例語句
  6. 進行應用程式定型
  7. 發佈應用程式
  8. 從已發佈的端點取得預測

建立 LUIS 應用程式

  1. 登入 LUIS 入口網站

  2. 選取 [+新增應用程式] 以建立新的應用程式。

    應用程式建立畫面的螢幕擷取畫面。

  3. 在出現的視窗中,輸入名稱「Telecom Tutorial」並保留預設文化特性 [英文]。 其他欄位是選擇性的,請勿設定。 選取 [完成] 。

    LUIS 應用程式建立欄位的螢幕擷取畫面。

使用者用意成為意圖

您在 [建置] 區段中第一個看到的項目是應用程式意圖。 意圖代表使用者想要執行的工作或動作。

想像一個電信 LUIS 應用程式,使用者會需要什麼?

他們可能需要執行某種類型的使用者動作或尋求協助。 其他使用者可能想要更新其服務層級或支付帳單

所產生的結構描述如下所示。 如需詳細資訊,請參閱規劃結構描述的最佳做法

意圖 目的
UserActions 判斷使用者動作
說明 要求說明
UpdateTier 更新目前服務層級
PayBill 支付未付帳單
判斷使用者是否詢問了應用程式無法適當回答的事項。 此意圖會在應用程式建立過程中提供,且無法刪除。

建立新意圖

意圖可用來根據使用者的意圖 (從自然語言文字判斷) 對使用者語句進行分類。

若要將語句分類,意圖需要應歸類為此意圖的使用者語句範例。

  1. 從上方導覽功能表中選取 [建立],然後選取畫面左側的 [意圖]。 選取 [+ 建立] 以建立新的意圖。 輸入新意圖的名稱「UserAction」,然後選取 [完成]

    UserAction 可以是多種意圖之一。 例如,有些使用者可能會想要註冊新的線路,而其他使用者可能會要求擷取資訊。

  2. 將您預期使用者會要求的數個範例語句新增至此意圖:

    • 大家好! 我想註冊新的線路
    • 請問我可以註冊新的線路嗎?
    • 您好,我想要一個新的線路
    • 我忘記我的線路號碼了!
    • 我想要一個新的線路號碼

    顯示 UserAction 意圖語句範例的螢幕擷取畫面。

PayBill 意圖的語句可能會是:

  • 我想要支付帳單
  • 結清我的帳單
  • 支付帳單
  • 我想要結算目前的餘額
  • 嘿! 我想要支付目前的帳單

藉由提供範例語句,您可以教導 LUIS 應針對此意圖預測哪些種類的語句。 這些是正面範例。 所有其他意圖中的語句都會被視為此意圖的負面範例。 在理想情況下,您新增的範例語句越多,應用程式的預測就越好。

這幾個語句僅供示範之用。 實際的應用程式應至少有 15-30 個具有不同長度、文字順序、時態、文法正確性、標點符號和字數的語句

建立其餘的意圖

執行上述步驟,以將下列意圖新增至應用程式:

"Help"

  • 「我需要幫忙」
  • 「我需要協助」
  • 「請幫助我」
  • 「有人可以支援我嗎?」
  • 「我卡住了,請問您可以幫助我嗎」
  • 「我能取得協助嗎?」

"UpdateTier"

  • 「我想要更新我的服務層級」
  • 「更新我的服務層級」
  • 「我想要變更為 VIP 層」
  • 「將我的訂用帳戶變更為標準層」

None 意圖的範例語句

用戶端應用程式必須知道語句是否對應用程式沒有意義或不適當。 [None] 意圖會在建立過程中新增至每個應用程式,以判斷用戶端應用程式是否不應回答語句。

如果 LUIS 針對語句傳回 [None] 意圖時,用戶端應用程式可以詢問使用者是否想要結束交談,或提供更多有關繼續交談的指示。

如果您將 [None] 意圖保留空白,則會在其中一個現有的主體網域意圖中預測應在主體網域外部預測的表達。 結果就是用戶端應用程式 (例如聊天機器人) 將根據不正確的預測來執行錯誤的作業。

  1. 選取左面板中的 [意圖]。

  2. 選取 [無] 意圖。 新增您的使用者可能輸入但與您的電信應用程式無關的三個語句。 這些範例不應使用您在主題領域中預期的文字,例如服務層級、升級、註冊、帳單。

    • 「我的航班何時起飛?」
    • 「我需要更改我的披薩訂單,謝謝」
    • 「今天天氣如何?」

新增實體

實體是與使用者意圖相關的項目或元素。 實體會定義可從表達中擷取的資料,而且對於完成使用者的必要動作而言不可或缺。

  1. 在 [建置] 區段中,選取 [實體]。

  2. 若要新增實體,請選取 [+建立]

    在此範例中,我們將建立兩個實體:「UpdateTierInfo」為機器學習實體類型,而「Tier」為清單實體類型。 Luis 也可讓您建立不同的實體類型

  3. 在出現的視窗中,輸入「UpdateTierInfo」,然後從可用的類型選取 [機器學習]。 選取 [新增結構] 方塊,以將結構新增至此實體。

    顯示實體的螢幕擷取畫面。

  4. 選取 [下一步] 。

  5. 若要新增子實體,請選取 「 + 」 符號並開始新增子專案。 針對我們的實體範例「UpdateTierInfo」,我們需要三個子實體:

    • OriginalTier
    • NewTier
    • PhoneNumber

    應用程式中子實體的螢幕擷取畫面。

  6. 在新增所有子實體之後,選取 [ 建立 ]。

    我們將建立另一個名為「Tier」的實體,但這次建立的是清單實體,其中會包含我們提供的所有服務層級:標準層、高階層和 VIP 層。

  7. 若要這樣做,請移至 [實體] 索引標籤,然後按 [+建立],並在出現的畫面中,從 [類型] 中選取 [清單]。

  8. 將項目新增至您的清單,然後您可以選擇性地新增同義字,以確保應用程式能了解提及的所有案例。

    清單實體的螢幕擷取畫面。

  9. 現在回到「UpdateTierInfo」實體,並新增「tier」實體,以作為我們稍早建立之「OriginalTier」和「newTier」實體的功能。 其外觀應該如下所示:

    實體功能的螢幕擷取畫面。

    我們已將「tier」新增為「originalTier」和「newTier」的功能,並新增了 Regex 類型的「Phonenumber」實體。 其建立方式與 ML 和清單實體的建立方式相同。

現在我們已成功建立意圖、新增範例語句並新增了實體。 我們建立了四個意圖 (除了「None」意圖之外) 和三個實體。

標籤範例語句

已建立機器學習的實體,而且子實體具有特徵。 若要改進擷取,必須以子實體標記範例語句。

標記語句的方法有兩種:

  1. 使用標籤工具

    1. 開啟 [實體選擇區],然後在內容相關工具列中選取「@」符號。
    2. 選取選擇區中的每個實體資料列,然後使用選擇區游標來選取每個範例語句中的實體。
  2. 拖曳游標以反白顯示文字。 利用游標反白顯示您想要標記的文字。 在下圖中,我們反白顯示了「vip - tier」並選取了「NewTier」實體。

    顯示如何標記語句的螢幕擷取畫面。

進行應用程式定型

在 LUIS 網站的右上方,選取 [定型] 按鈕。

在定型之前,請確定每個意圖至少有一個語句。

顯示應用程式定型按鈕的螢幕擷取畫面。

發佈應用程式

若要在聊天機器人或其他應用程式中收到 LUIS 預測,您必須將應用程式發佈到預測端點。 若要發佈,您必需先將應用程式定型。

  1. 選取右上方導覽列中的 [發佈]。

    顯示應用程式發佈按鈕的螢幕擷取畫面。

  2. 選取 [生產位置],然後選取 [完成]。

    顯示生產位置選取器的螢幕擷取畫面。

  3. 選取通知中的 [存取您的端點 URL],以移至 [Azure 資源] 頁面。 只有在具有與應用程式相關聯的預測資源時,您才能夠看到 URL。 您也可以按一下畫面左側的 [管理] 以尋找 [Azure 資源] 頁面。

    顯示端點存取通知的螢幕擷取畫面。

取得意圖預測

  1. 選取右上方功能表中的 [管理],然後選取左側的 [Azure 資源]。

  2. 複製範例查詢 URL,然後將其貼到新的網頁瀏覽器分頁中。

    端點 URL 將具有下列格式。

    https://YOUR-CUSTOM-SUBDOMAIN.api.cognitive.microsoft.com/luis/prediction/v3.0/apps/YOUR-APP-ID/slots/production/predict?subscription-key=YOUR-KEY-ID&verbose=true&show-all-intents=true&log=true&query=YOUR\_QUERY\_HERE
    
  3. 移至網址列中的 URL 尾端,並將 query= 字串參數取代為:

    「您好! 我想要一個新號碼,謝謝。」

    此語句查詢會在 URI 中傳遞。 此語句與任何語句範例都不同,因此這是很好的測試,可以檢查 LUIS 是否會預測 UserAction 意圖為評分最高的意圖。

    {
        "query": "hello! i am looking for a new number please",
        "prediction": 
        {
            "topIntent": "UserAction",
            "intents": 
            {
                "UserAction": {
                "score": 0.8607431},
                "Help":{
                "score": 0.031376917},
                "PayBill": {
                "score": 0.01989629},
                "None": {
                "score": 0.013738701},
                "UpdateTier": {
                "score": 0.012313577}
            },
        "entities": {}
        }
    }
    

JSON 結果會將評分最高的意圖識別為 prediction.topIntent 屬性。 所有分數都介於 1 到 0,分數越好者越接近 1。

用戶端應用程式的後續步驟

本教學課程已在端點上建立 LUIS 應用程式、建立意圖、實體、新增每個意圖的範例語句、將範例語句新增至 None 意圖、進行訓練、發佈及測試。 這些是建置 LUIS 模型的基本步驟。

LUIS 不會提供使用者語句的回答,只會在自然語言中識別所要求的是哪一類資訊。 Azure Bot 等用戶端應用程式會提供交談式後續追蹤。

清除資源

當不再需要 LUIS 應用程式時,請將其刪除。 若要這樣做,請選取左上方功能表中的 [我的應用程式]。 選取應用程式清單中應用程式名稱右側的省略符號 (...),然後選取 [刪除]。 在名叫 [是否刪除應用程式?] 快顯對話方塊中,選取 [確定]。