Share via


模式語法

重要

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

模式語法是語句的範本。 範本應該包含您想要比對的文字和實體,以及您想要忽略的文字和 標點符號它不是正則表達式。

警告

模式只包含機器學習實體父系,而非子實體。 模式中的實體會以大括弧括住, {}。 模式可以包含實體,以及具有角色的實體。 Pattern.any 是只用於模式的實體。

模式語法支援下列語法:

函數 語法 巢狀層級 範例
實體 {} - 大括弧 2 窗體 {entity-name} 在哪裡?
選用 [] - 方括弧

選擇性和群組之任意組合的巢狀層級有3個限制
2 問號為選擇性 [?]
群組 () - 括弧 2 is (a | b)
|- 垂直線(管道)

垂直線的限制為 2 (或) 在一個群組中
- 其中 是 form ({form-name-short} |{form-name-long} |{form-number})
語句的開頭和/或結尾 ^ - 插入號 - ^開始語句
語句已完成^
具有 {number} 實體^ 之整個語句的 ^strict 常值比對

模式中的巢狀語法

使用 方括弧的選擇性 語法可以巢狀兩個層級。 例如: [[this]is] a new form 。 此範例允許下列語句:

巢狀選擇性語句範例 說明
這是新表單 比對模式中的所有單字
是新表單 比對模式中的外部選擇性單字和非選擇性單字
新表單 只比對必要的單字

使用 括弧的群組 語法可以巢狀兩個層級。 例如: (({Entity1:RoleName1} | {Entity1:RoleName2} ) | {Entity2} ) 。 此功能允許比對這三個實體中的任何一個。

如果 Entity1 是具有來源 (Seattle) 和目的地 (Cairo) 等角色的 Location,而 Entity 2 是來自列表實體 (RedWest-C) 的已知建置名稱,則下列語句會對應至此模式:

巢狀群組語句範例 說明
RedWest-C 符合外部群組實體
西雅圖 符合其中一個內部群組實體
開羅 符合其中一個內部群組實體

具有選擇性語法的群組巢狀限制

群組與選擇性語法的組合限制為3個巢狀層級。

允許 範例
Yes ( [ ( test1 | test2 ) ] | test3 )
No ( [ test1 ] | test2 ) ] | test3 )

具有 或語法之群組的巢狀限制

使用 或 -ing 語法分組的組合限制為 2 個垂直線。

允許 範例
Yes ( test1 | test2 |(test3 | test4 )
No ( test1 | test2 | test3 |(test4 | test5 )

將實體新增至模式範本的語法

若要將實體新增至模式範本,請以大括弧括住實體名稱,例如 Who does {Employee} manage?

具有實體的模式
Who does {Employee} manage?

將實體和角色新增至模式範本的語法

實體角色以 {entity:role} 實體名稱後面接著冒號表示,然後是角色名稱。 若要將具有角色的實體新增至模式範本,請使用大括弧括住實體名稱和角色名稱,例如 Book a ticket from {Location:Origin} to {Location:Destination}

具有實體角色的模式
Book a ticket from {Location:Origin} to {Location:Destination}

將 pattern.any 新增至模式範本的語法

Pattern.any 實體可讓您將長度不同的實體新增至模式。 只要遵循模式範本,pattern.any 可以是任何長度。

若要將 Pattern.any 實體新增至模式範本,請以大括弧括住 Pattern.any 實體,例如 How much does {Booktitle} cost and what format is it available in?

使用 Pattern.any 實體的模式
How much does {Booktitle} cost and what format is it available in?
模式中的書名
竊取這本書的成本和它可用的格式有多少?
詢問成本是多少,以及其可用的格式為何?
夜間成本的狗好奇事件有多少,以及它可用的格式為何?

書名的字不會對 LUIS 造成混淆,因為 LUIS 會根據 Pattern.any 實體知道書名的結尾位置。

明確清單

透過撰寫 API 建立 明確清單 ,以在下列情況下允許例外狀況:

  • 您的模式包含 Pattern.any
  • 而且該模式語法可讓您根據語句來擷取不正確的實體。

例如,假設您有一個模式,其中包含選擇性語法、 []和 實體語法 , {}結合在一起,以不正確地擷取數據。

請考慮有關 {subject} [from {person}]' 的模式 '[find] 電子郵件。

在下列語句中, 主體人員 實體會正確擷取且不正確:

表達 實體 正確擷
來自克裡斯的狗的電子郵件 subject=dogs
person=Chris
來自拉曼查的人的電子郵件 subject=the man
person=La Mancha
X

在上表中,主旨應該是 the man from La Mancha (書名),但由於主旨包含選用字 from組,因此標題的預測不正確。

若要修正模式的這個例外狀況, the man from la mancha 請使用明確清單的 撰寫 API,新增為 {subject} 實體的明確清單比對。

標記範本語句中選擇性文字的語法

使用正規表示式方括號語法標記語句中的選擇性文字。 [] 選擇性文字最多只能巢狀方括弧兩個方括弧。

具有選擇性文字的模式 意義
[find] email about {subject} [from {person}] findfrom {person} 是選擇性的
“你能幫我嗎[?] 標點符號是選擇性的

應該忽略標點符號 (?!.、 ) ,而且您必須在模式中使用方括號語法加以忽略。

下一步

深入瞭解模式:

瞭解.json回應中傳回情感的方式