LUIS 應用程式中的模式
重要
LUIS 將於 2025 年 10 月 1 日淘汰,而自 2023 年 4 月 1 日開始,您將無法建立新的 LUIS 資源。 建議移轉 LUIS 應用程式至交談語言理解,以享有產品持續支援和多語言功能的優點。
模式的功能是在有數個語句非常類似時提升正確性。 模式可讓您取得更精確的意圖,而不需提供更多的語句。
模式可解決低意圖信賴度
請考慮使用人力資源應用程式,該應用程式會報告與員工相關的組織圖。 若指定員工的名稱和關係,LUIS 就會傳回涉及的員工。 試想:員工 Tom 的經理名字為 Alice,且部屬團隊的名字分別為:Michael、Rebecca 和 Carl。
表達 | 預測的意圖 | 意圖分數 |
---|---|---|
Who is Tom's subordinate? | GetOrgChart | 0.30 |
Who is the subordinate of Tom? | GetOrgChart | 0.30 |
如果應用程式含有的 10 到 20 個語句具有不同的句子長度、不同的字組順序,甚至不同的字組 ("subordinate"、"manage"、"report" 的同義字),LUIS 可能會傳回很低的信賴分數。 為協助 LUIS 了解字組順序的重要性,請建立模式。
模式可解決下列狀況:
- 意圖分數過低
- 正確意圖不是最高分,但太接近最高分。
模式不是意圖保證
模式會混合使用多項預測技術。 在模式中設定範本語句的意圖並不是意圖預測的保證,但卻是很強的示意訊號。
模式不會改善機器學習實體偵測
模式主要是用來協助預測意圖和角色。 「Pattern.any」實體用於擷取自由格式的實體。 當模式使用實體時,模式不會協助偵測機器學習實體。
如果將多個語句摺疊成單一模式,則不要期望看到改善的實體預測。 若要讓應用程式使用簡單的實體,則須新增語句或使用清單實體。
模式可使用實體角色
如果模式中有兩個以上的實體與內容相關,則模式會使用實體角色來擷取關於實體的內容資訊。
使用和不使用模式的預測分數
若範例語句充足,LUIS 便可提高預測信賴度,而不使用模式。 模式可提高信賴分數,而不需要提供許多語句。
模式比對
模式比對會先偵測模式內的實體,再驗證其餘字組和模式的字組順序。 模式中必須要有實體,才能比對模式。 模式會套用到權杖層級,不是字元層級。
Pattern.any 實體
Pattern.any 實體可讓您尋找自由格式的資料,其中實體的用字方式使其很難從語句的剩餘部分判斷實體的結尾。
例如,請考慮可協助員工尋找公司文件的人力資源應用程式。 此應用程式可能必須了解下列範例語句。
- 「HRF-123456 在哪裡?」
- 「HRF-123234 的作者是誰?」
- 「HRF-456098 是以法文發佈的嗎?」
但每份文件的名稱皆有格式化名稱 (用於上述清單),以及人類可閱讀的名稱,例如「新進員工要求調職 2018 年第 5 版」。
人類可閱讀名稱的語句看起來可能如下:
- 「新進員工要求調職 2018 年第 5 版在哪裡?」
- 「『新進員工要求調職 2018 年第 5 版』的作者是誰?」
- 「新進員工要求調職 2018 年第 5 版是以法文發行的嗎?」
語句包含的字組可能會造成 LUIS 無法正確辨識實體結束位置。 在模式中使用 Pattern.any 實體可讓您指定文件名稱的開頭和結尾,以便 LUIS 正確擷取表單名稱。 例如下列範本語句:
- {FormName} 在哪裡[?]
- {FormName} 的作者是誰[?]
- {FormName} 是以法文發行的嗎[?]
模式的最佳做法:
在稍後的反覆項目中新增模式
在新增模式之前,您應該了解應用程式的運作方式,因為模式的比重高於範例語句,而且會扭曲信賴度。
一旦您了解應用程式的運作方式之後,請依模式套用至您應用程式的方式新增模式。 您無須在每次逐一查看應用程式設計時新增模式。
在模型設計一開始新增模式並無壞處,但在語句測試模型後,則可更輕鬆查看模型的各項模式變化。
請勿新增許多模式
請勿新增太多模式。 LUIS 旨在透過更少的範例快速學習。 請勿不必要地讓系統多載。
功能
在機器學習中,「特徵」是您系統透過其觀察和學習的資料特徵或屬性。
機器學習特徵為 LUIS 提供重要提示,可在哪裡找到區分概念的事物。 它們是 LUIS 可以使用的提示,但它們不是硬性規則。 LUIS 會標記這些提示,以便尋找資料。
特徵可描述為函數,例如 f(x) = y
。 在範例語句中,特徵會告訴您可在哪裡尋找區分特徵。 使用此資訊可協助建立您的結構描述。
功能類型
特徵是結構描述設計的必要部分。 LUIS 同時支援片語清單和模型作為特徵:
- 片語清單特徵
- 模型 (意圖或實體) 即特徵
在範例語句中尋找特徵
由於 LUIS 是語言型應用程式,因此特徵是以文字為基礎。 選擇文字,指出您想要區分的特徵。 對於 LUIS,最小單位是「語彙基元」。 對於英文語言,語彙基元是沒有空格或標點符號的連續字母和數字範圍。
由於空格和標點符號不是語彙基元,因此請將焦點放在您可以用作特徵的文字線索。 請記住要包含字組的變化,例如:
- 複數形式
- 動詞時態
- Abbreviations
- 拼寫與拼寫錯誤
判斷文字是否需要下列條件 (因為會區分特徵):
- 符合確切的字組或片語:考慮將規則運算式實體或清單實體作為特徵新增至實體或意圖。
- 符合已知概念,像是日期、時間或人名:使用預建實體作為實體或意圖的特徵。
- 隨著時間學習新範例:使用某些概念範例的片語清單作為實體或意圖的特徵。
建立概念的片語清單
片語清單是描述概念的字組或片語清單。 在語彙基元層級上,片語清單會套用為不區分大小寫的相符項。
新增片語清單時,您可將此特徵設為全域。 全域特徵適用於整個應用程式。
何時使用片語清單
當您需要 LUIS 應用程式來一般化並識別概念的新項目時,請使用片語清單。 片語清單就像網域特定詞彙一樣。 它們可增強對意圖和實體的理解品質。
如何使用片語清單
使用片語清單,LUIS 會考慮內容和一般化,以識別類似項目,但非文字完全相符的項目。 請遵循下列步驟來使用片語清單:
- 從機器學習實體開始:
- 新增範例語句。
- 使用機器學習實體進行標記。
- 新增片語清單:
- 新增具有類似意義的字組。 不要新增每個可能的字組或片語。 相反地,一次新增一些字組或片語。 然後,重新定型並發佈。
- 檢閱並新增建議的字組。
片語清單的一般案例
片語清單的一般案例是增強與特定想法相關的字組。
醫療詞彙是很好的字組範例,其可能需要片語清單來提高其重要性。 這些字詞可以具有特定的物理、化學、治療或抽象意義。 若沒有片語清單,LUIS 不知道字詞對於您的主旨網域很重要。
例如,若要擷取醫療詞彙:
- 在這些語句內建立範例語句,並標記醫療字詞。
- 使用主旨網域內的字詞範例建立片語清單。 此片語清單應包含您已標記的實際字詞,以及描述相同概念的其他字詞。
- 將片語清單新增至實體或子實體,擷取片語清單中使用的概念。 最常見的案例是機器學習實體的元件 (子項)。 若片語清單應套用到所有意圖或實體,請將片語清單標記為全域片語清單。 EnabledForAllModels 旗標會控制此模型在 API 中的範圍。
片語清單的語彙基元比對
片語清單一律套用在語彙基元層級。 下表顯示具有字組 Ann 的片語清單如何依該順序套用至相同字元的變化。
"Ann" 的語彙基元變化 | 找到語彙基元時,表示片語清單相符 |
---|---|
ANN aNN |
是 - 語彙基元為 Ann |
Ann's | 是 - 語彙基元為 Ann |
Anne | 否 - 語彙基元為 Anne |
模型即特徵可協助另一個模型
您可以將模型 (意圖或實體) 新增為另一個模型 (意圖或實體) 的特徵。 藉由將現有的意圖或實體新增為特徵,您可以新增定義完善的概念,其中具有已標記的範例。
將模型新增為特徵時,您可以將此特徵設定為:
何時使用實體作為意圖的特徵
當偵測實體對意圖而言很重要時,請將該實體新增為意圖的特徵。
例如,若意圖是預訂航班 (例如 BookFlight),而實體是機票資訊 (例如座位數目、起點和目的地),則尋找機票資訊實體應會大幅增加 BookFlight 意圖的預測權重。
何時使用實體作為另一個實體的特徵
當實體 (A) 的預測對實體 (B) 的預測而言很重要時,應將該實體 (A) 新增為另一個實體 (B) 的特徵。
例如,如果送貨地址實體包含在街道地址子實體中,則尋找街道地址子實體會大幅增加送貨地址實體的預測權重。
- 出貨地址 (機器學習實體):
- 街道號碼 (子實體)
- 街道地址 (子實體)
- 城市 (子實體)
- 州或省 (子實體)
- 國家/地區 (子實體)
- 郵遞區號 (子實體)
具有特徵的巢狀子實體
機器學習子實體指出概念存在於父實體中。 父實體可以是另一個子實體或最上層實體。 子實體的值會作為其父實體的特徵。
子實體可以同時具有一個片語清單和一個模型 (另一個實體) 即特徵。
當子實體具有片語清單時,它會提升概念的詞彙,但不會將任何資訊新增至預測的 JSON 回應。
當子實體具有另一個實體的特徵時,JSON 回應會包含其他實體的已擷取資料。
必要的功能
必須找到必要的特徵,才能從預測端點傳回模型。 當您知道傳入的資料必須符合特徵時,請使用必要的特徵。
如果語句文字不符合所需的特徵,則系統不會擷取該文字。
必要特徵會使用非機器學習實體:
- 規則運算式實體
- 清單實體
- 預建實體
如果您確信會在資料中找到您的模型,請視需要設定特徵。 如果找不到,則必要特徵不會傳回任何東西。
繼續使用出貨地址的範例:
出貨地址 (機器學習實體)
- 街道號碼 (子實體)
- 街道地址 (子實體)
- 街道名稱 (子實體)
- 城市 (子實體)
- 州或省 (子實體)
- 國家/地區 (子實體)
- 郵遞區號 (子實體)
使用預建實體所需的特徵
預建實體 (例如城市、州/省和國家/地區) 通常是一組封閉的清單,這表示它們不會隨著時間而有很大的變化。 這些實體可能會有相關的建議特徵,而且這些特徵可能會標示為必要。 但 isRequired 旗標只會與獲派的實體相關,而不會影響階層。 如果找不到預建的子實體特徵,這不會影響父實體的偵測和傳回。
作為必要特徵的範例,請考慮您是否想要偵測地址。 您可能考慮讓街道號碼成為需求。 這可讓使用者輸入 "1 Microsoft Way" 或 "One Microsoft Way",而且對於街道號碼子實體,這兩者都會解析為數字 "1"。 如需詳細資訊,請參閱預建實體一文。
使用清單實體所需的特徵
清單實體會用作正式名稱及其同義字的清單。 作為必要特徵,如果語句未包含正式名稱或同義字,則系統不會傳回實體,作為預測端點的一部分。
假設您的公司只出貨給一組有限的國家/地區。 您可以建立一個清單實體,其中包含數種方式,讓您的客戶用來參考國家/地區。 如果 LUIS 在語句的文字內找不到完全相符的實體,則系統不會在預測中傳回實體 (其具有清單實體所需的特徵)。
標準名稱** | 同義字 |
---|---|
美國 | 美式英文 U.S.A US USA 0 |
用戶端應用程式 (例如聊天機器人) 可以提出後續問題來提供協助。 這可協助客戶了解國家/地區選擇是有限且「必要」。
使用規則運算式實體所需的特徵
用作必要特徵的規則運算式會提供豐富的文字比對功能。
在出貨地址範例中,您可以建立一個規則運算式,擷取國家/地區郵遞區號的語法規則。
全域特徵
雖然最常見的用途是將特徵套用至特定模型,但您可以將特徵設定為「全域特徵」,以將其套用至整個應用程式。
全域特徵最常見的用途是將額外的詞彙新增至應用程式。 例如,如果您的客戶使用主要語言,但預期能夠在相同語句內使用另一種語言,則您可以新增一種特徵,包含來自次要語言的字組。
因為使用者預期會在任何意圖或實體上使用次要語言,所以請將字組從次要語言新增至片語清單。 將片語清單設定為全域特徵。
結合特徵以增加優勢
您可以使用多種特徵來描述特徵或概念。 常見的配對就是使用:
範例:旅遊應用程式的訂票實體特徵
作為基本範例,請考慮使用航班預約「意圖」和訂票「實體」來預訂航班的應用程式。 訂票實體會擷取資訊,以便在預約系統中預訂機票。
用於訂票的機器學習實體具有兩個子實體來擷取起點和目的地。 這些特徵必須新增至每個子實體,而不是最上層實體。
訂票實體是一種機器學習實體,其子實體包括「起點」和「目的地」。 這些子實體都會指出地理位置。 為了協助擷取位置,並區分「起點」與「目的地」,每個子實體都應該具有特徵。
類型 | 起點子實體 | 目的地子實體 |
---|---|---|
模型作為功能 | geographyV2 預建實體 | geographyV2 預建實體 |
片語清單 | 來源字組:start at、begin from、leave | 目的地字組:to、arrive、land at、go、going、stay、heading |
片語清單 | 機場代碼 - 適用於起點和目的地的相同清單 | 機場代碼 - 適用於起點和目的地的相同清單 |
片語清單 | 機場名稱 - 適用於起點和目的地的相同清單 | 機場代碼 - 適用於起點和目的地的相同清單 |
若預期人們會使用機場代碼和機場名稱,LUIS 應會有使用這兩種片語類型的片語清單。 機場代碼可能更常用於聊天機器人中輸入的文字,而機場名稱可能更常用於口語對話,例如啟用語音的聊天機器人。
這些特徵的比對詳細資料只會針對模型傳回,而不會針對片語清單傳回,因為預測 JSON 中只會傳回模型。
意圖中的訂票標記
在建立機器學習實體之後,您必須將範例語句新增至意圖,並標記父實體和所有子實體。
針對訂票範例,請使用文字中的 TicketBooking 實體和任何子實體,標記意圖中的範例語句。
範例:比薩訂購應用程式
針對第二個範例,請考慮用於比薩餐廳的應用程式,其會接收比薩訂單,包括某人所訂購的比薩類型詳細資料。 如有可能,應該擷取每個比薩的詳細資料,才能完成訂單處理。
此範例中的機器學習實體更複雜,因為具有巢狀子實體、片語清單、預建實體和自訂實體。
此範例會使用子實體層級的特徵和子實體層級的子項。 哪種層級取得何種片語清單或模型即特徵,這是實體設計的重要部分。
雖然子實體可有許多片語清單,作為協助偵測實體的特徵,但每個子實體只有一個模型即特徵。 在這個比薩應用程式中,這些模型主要是清單。
正確標記的範例語句會以說明實體如何巢狀化的方式顯示。