视频教程 > osl语法描述语言

Slot的引用

olami     2017-08-17 15:13




以下是视频内容文字版:

大家好,欢迎使用欧拉蜜人工智能开放平台。之前我们在《 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   |   意见反馈