影片教學 > OSL語法描述語言

Slot的引用

olami     2017-08-22 09:00




大家好,歡迎使用 OLAMI 人工智慧開放平台。

之前我們在《 Slot 的類型》這節課裡為大家介紹什麼是 Slot,以及 Slot 的命名規則和 Slot 的5種類型。

今天這節課我們將為大家介紹 Slot 的引用。


Slot 主要有以下四種引用方式:

  1. 一般引用方法
  2. 引用並直接賦值
  3. 引用並間接賦值
  4. 引用並追加賦值


一、一般引用方法

在任何語法中引用一個已定義的 Slot,需要用< >包覆 Slot 的名稱。

<slot_name> 

例:

Slot名稱=device

Slot類型:internal

某個 Grammar 中引用名稱為 「device」 的 Slot:

調節<device> 


二、引用並直接賦值

在任何語法描述中引用一個已定義的 Slot 並在引用時直接賦值,需要用 <{ }> 包覆 Slot 的名稱,並以 = 給值。 

<{Slotname=value}>

若要支持「有條件給值」,即當某個 Rule 被匹配時才替 Slot 賦值,可以加上 Rule 的名稱。

<rule_name{Slot_name=值}> 

或者

<rule_name><{Slot_name=值}> 


例:

Rule 名稱:light
Rule 內容:光線|燈光|亮度
Slot 名稱:device
Slot 類型:internal


在某個 grammar 中引用名稱為 「device」 的 Slot,並賦予 「燈」 這個值:

調節<{device=燈}> 

若要在某個 grammar 中引用名稱為 「device」 的 Slot,並在名稱為 「light」 的 Rule 匹配時才賦予 「燈」 這個值:

調節<light{device=燈}>

調節<light><{device=燈}> 


三、引用並間接賦值

間接賦值必須是有條件給值的邏輯,搭配 Rule 使用。 

在任何語法描述中引用一個已定義的 Slot 並在引用時間接賦值,需要用 <{ }> 包覆 Slot 的名稱,並以 =$ 表示以實際輸入的值來賦值。 

<rule_name{Slot_name=$}> 

間接賦值僅支持這一種描述方式。

例:


Rule 名稱:mountain_rule 
Rule 內容:玉山|雪山|阿里山|陽明山|合歡山
Slot 名稱:mountain_slot
Slot 類型:internal


若要在某個 Grammar 中引用名稱為 「mountain_slot」 的 Slot,並在名稱為 「mountain_rule」 的 Rule 匹配時才將該 Rule 匹配後的實際字符串傳遞給 Slot:

<mountain_rule{mountain_slot=$}>有多高

在此例子中,若輸入的語料是 「玉山有多高」 時,mountain_slot 的值是 玉山;若語料是 「雪山有多高」,則 mountain_slot 的值會是 雪山。


四、引用並追加賦值

Slot 追加賦值即將 Slot 值和需要追加的內容疊加起來,然後重新賦值給 Slot。 

針對Slot直接賦值規則和間接賦值規則有兩種疊加方式。

Slot 直接賦值的追加:

<{Slotname+=value}> 

Slot 間接賦值的追加:

<rulename{Slotname+=$}> 


1、 直接賦值的追加

格式:

<{Slotname+=value}> 


例子:

Ext Slot:<yima >

Rule: 
<稱呼前綴>: 
大<{ yima =大}>| 
(二|2)<{ yima =二}>| 
(三|3)<{ yima =三}>|
(四|4)<{ yima =四}>| 
(五|5)<{ yima =五}>| 
(六|6)<{ yima =六}>| 
(七|7)<{ yima =七}>|
(八|8)<{ yima =八}>|
(九|9)<{ yima =九}> 
<姨>:姨|姨媽|姨娘 

Grammar:
<打電話給姨媽>:打電話給<稱呼前綴><姨><{yima+=姨}> 

當輸入的句子是「打電話給大姨」,Slot的值為「大」+「姨」,也就是「大姨」;

當句子是「打電話給三姨娘」,Slot的值為「三」+「姨」,也就是「三姨」。


2、間接賦值的追加

Slot 的賦值可以多次追加。

格式:

<rulename{Slotname+=$}> 


例子:

Ext Slot:<callname >

Rule:
<稱呼前綴>:大<{callname=大}>| 
(二|2) <{ callname=二}>| 
(三|3) <{ callname=三}>| 
(四|4)<{ callname=四}>| 
(五|5)<{ callname=五}>| 
(六|6) <{ callname=六}>| 
(七|7) <{ callname=七}>| 
(八|8) <{ callname=八}>| 
(九|9) <{ callname=九}> 
<稱呼後綴>:哥|姐|伯
<稱呼>:<稱呼前綴><稱呼後綴{callname+=$}> 

Grammar:
<查電話>:查一下<稱呼>[的]電話 

其中 Rule 「<稱呼>」中使用了追加賦值,<查電話>這條語法可以匹配「查一下大哥電話」,這時 Slot 「callname」的賦值為「大」+「哥」,也就是「大哥」。

同樣地:

「查一下二姐電話」→ 賦值就是「二」+「姐」,也就是「二姐」;

「查一下三伯電話」→ 賦值就是「三」+「伯」,也就是「三伯」。

當 Slot 需要匹配的值有大量重複內容時,追加賦值的方式可以將 Rule 詞彙通過「加法」組成,而不必將所有需要匹配的值都列出來。



以上就是本節課的全部內容,感謝您的觀看!



Copyright © 2017 威盛电子股份有限公司. All rights reserved   |   意见反馈