以下是视频内容文字版:
大家好,欢迎观看欧拉蜜视频教程。今天要学习的是 alarm 模块例句语法解析的下篇,在上节课我们介绍了一些经典句子语法的编写,今天就再来一起学习一下另外一些具有代表性的例句,巩固一下知识点。
这节课要讲解的是下面这七个例句,那么我们先来看第一个例句。
一、星期三有设置闹钟吗
二、修改14:50的闹钟
三、把九点的闹钟改到下午四点
四、查看我所有的闹钟
五、取消所有的闹钟
六、我设置的闹钟都有哪些
七、帮我把11点的闹钟关掉
一、星期三有设置闹钟吗
Grammar:[我]<time>(([都|还](有什么|有哪[一]些|有没有))<r_alarm>|有[设[置]]<r_alarm>吗)<{@=find_alarm}> 名称:g_find_alarm_time1 类型:语义 |
它的名称可以根据我们自己的需要来写,可以是对我们语料的简单概括,这里就可以表示查找闹钟时间这个意思。它可以是英文、中文、字符的结合,你觉得那种方式最好就写哪种好了。然后,这条 grammar 的类型是语义,也就是说不需要为它编辑答案。说完了名称和类型,来看下它的内容。
看上去很有很多符号,有点复杂,之前也讲解过,用方括号包覆的部分是可选内容,用尖括号包覆的是引用内容,而用小括号包覆的内容是必选内容,按照这个规则来看,grammar 就很清晰了。
这条 grammar 里引用了很多内容,一起来看一下:
Rule:<r_alarm>:闹钟|闹铃 Datetime slot:<time> Modifier:<{@=find_alarm}> |
那么,这句 grammar 可以匹配的语料有:
星期三有设置闹钟吗?
周末都有什么闹钟
我星期一早上6点有设闹钟吗
……
二、修改14:50的闹钟
Grammar:[<r_help_prefix>|帮忙|替我](<r_modify>|调整)[一下]<time>(的[所有|全部]|(所有|全部)[的])<r_alarm><{@=modify_alarm}> 名称:g_modify_alarm_time 类型:语义 |
它的结构也比较简单,来看下它引用的内容:
Rule: <r_help_prefix>: [请你|请|你](帮[帮]|帮助)(我|俺) <r_modify>:修改|更改 <r_alarm>:闹钟|闹铃 Datetime slot:<time> Modifier:<{@=modify_alarm}> |
那么这条 grammar 可以匹配的语料有:
修改14:50的闹钟
请你帮我调整一下7点的闹钟
修改这个月所有的闹铃
……
三、把九点的闹钟改到下午四点
Grammar:[[<r_help_prefix>|帮忙|替我|我[想]要]把]<time>[的]<r_alarm>(改|调|设置)(成|到|为)<modify_time><{@=modify_alarm}> 名称:g_modify_alarm_modify_time 类型:语义 |
我们来看下它引用的内容:
Rule: <r_help_prefix>: [请你|请|你](帮[帮]|帮助)(我|俺) <r_alarm>:闹钟|闹铃 Datetime Slot: <time> <modifier_time> Modifier: <{@=modify_alarm}> |
那么这条 grammar 它可以匹配的语料就有:
把九点的闹钟改到下午四点
请帮我把明天的闹钟调成后天
我想要把星期三晚上六点的闹钟改成7点
……
四、查看我所有的闹钟
Grammar:[<r_help_prefix>|帮忙|替我]<r_find>([我](所有|全部)的|[我的|手机[上]](所有|全部)[的])<r_alarm><{@=find_all_alarm}> 名称:g_find_all_alarm 类型:语义 |
这句 grammar 的结构也比较简单,它要表达的主体内容就是查找闹钟。我们直接来看下它引用的内容:
Rule: <r_help_prefix>: [请你|请|你](帮[帮]|帮助)(我|俺) <r_find>:查看|查询 <r_alarm>:闹钟|闹铃 Modifier:<{@=find_all_alarm}> |
那么,它可以匹配的语料有:
查看我所有的闹钟
请你帮我查询手机上全部的闹钟
替我查看我的所有闹钟
……
五、取消所有的闹钟
Grammar:[<r_help_prefix>|帮忙|替我]((关闭|关掉|取消)<{operation=关闭}>|(启用|打开)<{operation=打开}>)([我](所有|全部)的|[我的|手机[上]](所有|全部))<r_alarm><{@=modify_all_alarm}> 名称:g_modify_all_alarm 类型:语义 |
接着我们再看一下它其他的部分:
Rule: <r_help_prefix>: [请你|请|你](帮[帮]|帮助)(我|俺) <r_alarm>:闹钟|闹铃 Internal Slot: <operation> Modifier:<{@=modify_all_alarm}> |
这里还要再强调一下,之前也说过,我们在引用 internal slot 的时候,要为它定义一条同名的 rule,但在这条 grammar 里,我们使用的是“引用并直接赋值”规则,所以也可以不用添加同名的 rule,这两个规则是有所不同的,我们在使用的时候要注意。
那么这条 grammar 可以匹配的语料有:
取消所有的闹钟
请你取消我所有的闹钟
替我打开手机上所有闹钟
……
六、我设置的闹钟都有哪些
Grammar:(我[都](有|设置了)(哪些|什么|几个)<r_alarm>[啊]|我[设[置]]的<r_alarm>[都]有(哪些)|<_我要_短句(看一下我的<r_alarm>)>)<{@=find_alarm}> 名称: g_find_alarm1 类型:语义 |
我们来看下它的内容,它是由三个并列的短句和末尾的 modifier 组成的,这三个短句分别是:
我[都](有|设置了)(哪些|什么|几个)<r_alarm>[啊] 我[设[置]]的<r_alarm>[都]有(哪些) <_我要_短句(看一下我的<r_alarm>)> |
我们可以看到最后这个短句是一个 template ,我们来看下它具体的内容:<_我要_短句>:[=短句=]我(要|想|想要|需要)$(短句),那么它就可以匹配我要什么,或者我想要什么之类的句子。
当我们在 grammar 里引用这个 template 的时候,它要传递的参数值就是:看一下我的<r_alarm>。在这里 <r_alarm> 是一条 rule,可以表示:闹钟或者闹铃。
然后,这条 grammar 也有条 global modifier:<{@=find_alarm}>,表示查询闹钟的意图。
那么这条 grammar 可以匹配的语料有:
我设置的闹钟都有哪些
我都有几个闹钟啊
我想要看一下我的闹钟
……
七、帮我把11点的闹钟关掉
Grammar:[<r_help_prefix>|帮忙|替我|[请]给我]<_把字句_动宾结构([给]((关了|关掉|取消[了])<{operation=关闭}>|(启用|打开)<{operation=打开}>), <time>的<r_alarm>)><{@=modify_alarm}> 名称:g_modify_alarm_operation_time3 类型:语义 |
这条 grammar 也是看起来有点复杂,我们可以看出这一条 grammar 其实是由前面方括号包覆的可选内容,和一条 template 和 modifier 组成的。
我们来看下这条 template 的内容:<_把字句_动宾结构>:[=动词性短语,名词性短语=]把$(名词性短语)$(动词性短语)
它在被引用的时候,要传递的参数值是这一部分:[给]((关了|关掉|取消[了])<{operation=关闭}>|(启用|打开)<{operation=打开}>), <time>的<r_alarm>)>
在这里,我们也给:关闭、关掉、取消这三个词都做了slot 的引用并直接赋值,赋值 internal slot:operation的值是关闭,那么不管我们匹配到的是哪一个,slot 都取值关闭。同样的,我们也为启用、打开这两个词做了 slot 的赋值,让不管语料匹配的是哪个,operation 的值都等于打开。跟前面的例子一样。
我们再看下其他引用的部分:
Rule : <r_help_prefix>: [请你|请|你](帮[帮]|帮助)(我|俺) <r_alarm>:闹钟|闹铃 Datetime Slot: <time> Internal Slot:<operation> Modifier: <{@=modify_alarm}> |
那么,这条 grammar 最后可以匹配的内容有:
帮我把11点的闹钟关掉
请你帮我周四早晨的闹钟取消了
请给我把今天晚上七点的闹钟打开
……
那么这节课就到这里,感谢大家观看,我们下节课再见。