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

Template的撰写

olami     2017-07-31 11:19




以下是视频内容文字版:

大家好,欢迎使用欧拉蜜人工智能开放平台。今天这节课的主要内容是为大家介绍 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 了:

<你能查天气吗>: <你能_短句(查天气)> 

五、 总结

  1. template 类似于函数,用于参数申明和参数引用, 从而可以提高语法的书写效率。 

  2. template 定义体包含参数和语法定义两部分,参数表明里面的内容是声明的参数[=参数1,参数2,…=],其中“[=”和“=]”是保留字符。语法定义为任意符合语法规则的语法,其中对参数的引用使用“$”符号开头,并用“()”将参数括起来,比如“$(参数1)”。 

  3. template 含有未确定的参数,可以通过 grammar 和 rule 引用 template,并向其传递参数. <templatename(参数1, 参数2, …)>。

  4. template 可以引用 template、rule 和 slot,可以被 template、grammar、rule 和 slot 引用。

以上是 template 的撰写这节课的全部内容,感谢您的关注!

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