模式語法
重要
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 | 符合外部群組實體 |
西雅圖 | 符合其中一個內部群組實體 |
Cairo | 符合其中一個內部群組實體 |
具有選擇性語法的群組巢狀限制
群組與選擇性語法的組合限制為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}] |
find 和 from {person} 是選擇性的 |
“你能幫我嗎[?] | 標點符號是選擇性的 |
應該忽略標點符號 (?
、 !
.
、 ) ,而且您必須在模式中使用方括號語法加以忽略。
下一步
深入瞭解模式:
瞭解.json回應中傳回情感的方式。