奥华视窗|奥华信息网
当前位置: 奥华视窗 > 新闻

AI课堂学习modifier的撰写,给你的grammar加上注释

来源:搜狐    发布时间:2017-08-16 19:41   作者:张璠     阅读量:9059   

原标题:AI课堂 | 学习modifier的撰写,给你的grammar加上注释

今天这节课将为大家讲解 modifier 的概念以及应用。

温馨提醒,视频要在wifi环境下观看哦。不方便看视频的童鞋,可以阅读下方文字版:

大家好,今天我们要学习 OSL 语法描述语言的重要成分:modifier。

一、什么是 modifier?

Modifier 是 OSL 语法描述语言的一个重要部分。它是用来描述文字的操作意图的符号。

换句话说,modifier 也可以理解为是对语义的一种注释方式,我们在 grammar 里加入 modifier 来方便我们了解 grammar 所代表的相应意图。

二、Modifier 的作用是什么?

Modifier 的主要作用就是用来传递信息。在讲 slot 的时候,我们也提到过,slot 也是用来传递和提取信息的,听起来,它似乎和 modifier 差不多,但是它们有着非常大的区别。

slot 主要是用来提取语料里的信息,而 modifier 主动去加上其他的信息。也就是说,在编写 grammar 的时候,你为了拿到某个信息而特意加上去的。

如果一条 grammar里加入了 modifier,那么当这条 grammar 被语料匹配上之后,你就能拿到系统反馈给你 modifier 里传递的信息。

三、Modifier有哪些的类型?

Modifier 可以分为两种类型:global modifier 和 slot modifier。

Global modifier 一般用来表示一条 grammar 的整体语义,在一般应用里它可以对所写的 grammar 进行语义分类。

举个例子来说明,我们来看这两条 grammar:

<chariqi>:查一下今天是几号

<查询日期>:查一下今天的日期

它们都是关于要查询日期的说法,但是表达方式不一样。

如果这时候我们为它们分别定义一条可以表达查询这个意图的 modifier,那么当我们进行测试的时候,不管匹配上的语料是“查一下今天的日期”,还是“查一下今天是几号”,系统都能知道,这个句子是一个和查询有关的说法。

Slot modifier 是为某个 slot 的特殊操作设置的 modifier,必须要先有 slot,才能有 slot modifier。它们两个出现在 Json 结构语义里的位置不同,语法规则也不一样。

不过,在我们实际操作里,使用到 slot modifier 的时候比较少,常用的是 global modifier,对于 slot modifier 大家只需要简单了解就可以了。

在接下来的重点部分,关于 modifier 的撰写,我也主要给大家介绍 global modifier。

四、如何书写 modifier?

Global modifier 可以这样写:

<{@=intent}>

这个式子是一个固定表达式,前后符号都是固定搭配,不能随意移动也不能改变,而 intent 代表的是开发者可以的自己定义的意图描述词,也就是 modifier 的内容。这个根据自己的需要来决定。

不过在这里,要提醒大家注意的一点就是,在书写的时候千万不要漏掉这个表达式里的任何一个符号,不然都有可能会报错,要仔细一点。

可以看右边的例子:<{@=tingge}>,在这里,这个 modifier 它表达的意思就是“听歌”,而听歌是我们自己定义的。

如果你在写 grammar 的时候,觉得一个 modifier 不够,想要表达更加详细的信息,我们就可以在 global modifier 里同时使用多个 modifier,每个 modifier 之间用“&”符号连接。可以这样写:

<{@=intent1&intent2&intent3...}>

可以看右边的例子:<{@=tingge&liuxing&qingge}>,我们同时使用了三个 modifier,“听歌”、“流行”和“情歌”。

五、在 grammar 里怎么运用 modifier?

假设我们写了一条 grammar:

<tingge>:我要听歌

然后我们为这条 grammar 添加一条 modifier:

<{@=listenmusic}>

那么这条 grammar 就可以写作:

<tingge>:我要听歌<{@=listenmusic}>

在这条 grammar 里,Modifier 它定义了整条语法所要表达的意图是:listenmusic。

那么,当我们输入语料:我要听歌。这样的例句语料被上面的 grammar 匹配之后,我们就能从系统里拿到 modifier 传递的信息是:listenmusic,那么你的应用程序就可以知道,这是一个和听歌有关的说法。然后就可以进行下一步操作。比如说播放音乐等等。

同样的,如果你有更多的需求,我们也可以在一条 grammar 里同时添加几个 modifier,那么就可以这样写:

<tingliuxingge>:我要听流行歌曲<{@=listenmusic&popular}>

那么,在这条 grammar 里,modifier 就有两个意图:listenmusic 和 popular,那么,在拿到这两个信息以后,你的应用程序通过“listenmusic”可以明白这是一个和“听歌”有关的说法,在通过“popular”能明白,你要听的是流行歌。

六、在 rule 里添加 modifier

那么接下来,我们再来介绍另一种 global modifier 的使用方式,那就是配合 rule 来使用。

我们可以先为一条 rule 加上 modifier,然后再将这条 rule 引入 grammar。

那么,就可以这样写:

<rule_name{@=intent}>

“rule_name”代表要引用的 rule 的名称,这样的描述可以表示:当我们引用的这一条 rule 规则被匹配的时候,才对 modifier 赋值 intent。

举个例子,比如我们写了这样一条 grammar:

<打开电视>:<open {@=启动}>电视

在这句语法里,我们引用了一条 rule:

<open>:打开|启动|开启|开一(下|开)

并且为它添加了一条 modifier:<{@=启动 }>

那么,当我们输入例句:打开电视,当这个语料被 grammar 匹配以后,modifier 的定义才会生效,系统提供给我们的信息里才会显示:启动这个注释。

引用了 rule 的 global modifier 也可以同时使用几个 modifier。可以这样写,写法都是一样的,不同的意图描述词用“&”符号来连接就可以了。

以上这些就是这节课的全部内容,感谢大家观看,我们下节课再见。

郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。