以下是视频内容文字版:
大家好,欢迎使用欧拉蜜人工智能开放平台。今天这节课的主要内容是为大家介绍 template 以及 template 的撰写。
我们将分为五个部分:template 简介,template 命名规则,template 的撰写,template 的引用以及总结。
一、 Template 简介
OSL 语法描述语言中的 template 是一种模板的概念,用于定义可复用的参数化语法片段,主要用来描述中文的句式,例如疑问句、祈使句等,通过不同的参数来支持结构相同的不同说法,提高 grammar 的撰写效率。
例如:
Rule: <看>:看[一]看|看一下 <想>:想[一]想|想一下 <听>:听[一]听|听一下 <瞧>:瞧[一]瞧|瞧一下 <说>:说[一]说|说一下 <讲>:讲[一]讲|讲一下 |
这6条 rule 内容的结构一致,我们可以把这个结构写成一个模板,使用的时候直接套用模板,因此可大大提高书写效率。我们将这条 template 写成如下形式:
Template: <动词叠式>:[=动词=]$(动词)[一]$(动词)|$(动词)一下 |
其中“动词叠式”是这条 template 的名称,而冒号后面的内容是这条 template 的内容。
以上6条 rule 均可引用这条 template。
以<看>这条 rule 为例,我们引用 template 之后的写法就可以是这样:
<看>:<动词叠式(看)> |
相比起之前的写法,引用 template 之后书写变得更加简洁。
二、 Template 命名规则
Template 名称必须以英文字母、数字、中文字符或下划线 _ 组成,但第一个字符不能是数字。
例如:
<name> <_name> <name1> <某个名称> |
英文字母不区分大小写,但由于语义输出格式为小写,因此建议避免使用大写字母来替 template 命名。
三、 Template 的撰写
Template 内容包含参数和语法定义两部分,参数表明里面的内容是声明的参数“[=参数1,参数2,…=] ”,其中“[=”和“=]”是保留字符。
例:
Template: <动词叠式>:[=动词=]$(动词)[一]$(动词)|$(动词)一下 |
多个参数中间用英文逗号隔开:
[=参数1,参数2,参数3…=] |
其中对参数的引用使用“$”符号开头,并用“()”将参数括起来,如:
$(参数1) |
另外,参数名称只能由英文字母、数字、中文字符或下划线 _组成,但第一个字符不能是数字。
四、 template 的引用
1、在任何语法描述中引用一个已定义的 template,需要用 < > 包覆 template 的名称,并在 template 名称后面以 ( ) 包覆要传递给该 template 的参数值,如下示例:
<template_name(参数1,参数2,...)> |
因此,在 grammar 中引用 template:
Grammar: <让我想想>:让我<动词叠式(想)> |
能够匹配上语料:
让我想想 让我想一想 让我想一下 |
在 rule 中引用 template:
Rule: <看看>:<动词叠式(看)>|看一眼 |
能够匹配上语料:
看看 看一看 看一下 看一眼 |
2、当 template 涉及多个参数时,引用方法如下。
例:
Template: <_能否_主谓结构>: [=主语,动词性短句=]$(主语)(能不能|能否)$(动词性短句)|$(主语)能[够]$(动词性短句)吗|$(动词性短句)$(主语)能吗|$(动词性短句)$(主语)能不能
Grammar <你能唱歌吗>:<_能否_主谓结构(你,唱歌)> |
参数之间用英文逗号隔开即可。这条 grammar 能够匹配上的语料有:
你能不能唱歌 你能否唱歌 你能够唱歌吗 你能唱歌吗 唱歌你能吗 唱歌你能不能 |
3、参数可以是任意符合语法规则的语法,因此 template 可以引用 rule 、template 、slot 等等。
例1:
Rule: <look>:看|瞧|瞅 Grammar: <让我想想>:让我<动词叠式(<look>)> |
能够匹配上语料:
让我看看 让我瞧一瞧 让我瞅一下 …… |
例2:
Rule: <你>:你|olami|欧拉蜜 Grammar <你能唱歌吗>:<_能否_主谓结构(<你>,唱歌)> |
能够匹配上语料:
你能不能唱歌 欧拉蜜能不能唱歌 OLAMI能够唱歌吗 …… |
4、Template 也可以引用 template 。
例:
Template: <_能否_主谓结构>:[=主语,动词性短句=]$(主语)(能不能|能否)$(动词性短句)|$(主语)能[够]$(动词性短句)吗|$(动词性短句)$(主语)能吗|$(动词性短句)$(主语)能不能 <_可不可以_主谓结构>:[=主语,动词性短语=]$(主语)(可不可以|可以不可以)$(动词性短语)|$(主语)可以$(动词性短语)吗 |
那我们再写一条包括“你能够”以及“你可不可以”短语结构的 template。如下:
Template: <你能_短句>: [=短句=]<_能否_主谓结构(<你>,$(短句))>|<_可不可以_主谓结构(<你>,$(短句))> |
这条<你能_短句>的 template 申明了一个参数“短句”,它引用了<_能否_主谓结构>以及<_可不可以_主谓结构>这两条 template,并将其“主语”参数设定为 rule“<你>”。
那么,当我们要撰写一条能够匹配上语料“你可以查天气吗”的 grammar 时,就可以引用这条 template 了:
<你能查天气吗>: <你能_短句(查天气)> |
五、 总结
-
template 类似于函数,用于参数申明和参数引用, 从而可以提高语法的书写效率。
-
template 定义体包含参数和语法定义两部分,参数表明里面的内容是声明的参数[=参数1,参数2,…=],其中“[=”和“=]”是保留字符。语法定义为任意符合语法规则的语法,其中对参数的引用使用“$”符号开头,并用“()”将参数括起来,比如“$(参数1)”。
-
template 含有未确定的参数,可以通过 grammar 和 rule 引用 template,并向其传递参数. <templatename(参数1, 参数2, …)>。
-
template 可以引用 template、rule 和 slot,可以被 template、grammar、rule 和 slot 引用。
以上是 template 的撰写这节课的全部内容,感谢您的关注!