以下是视频内容文字版:
欢迎观看欧拉蜜教程系列视频,这节课将为大家介绍 OSL 语法描述语言的重要组成部分:rule 。
一、什么是 OSL 语法描述语言?
它是欧拉蜜平台针对自然语言处理所发展出来的一种独特语法标记语言,在 OSL 语言中,主要有这四大元素:grammar、rule、slot、template。它们共同构成了 OSL 语法描述语言,承担着不同的功能。
今天主要来学习 rule。
课程内容会从什么是 rule 的概念、rule 由哪几部分的组成,怎么写 rule,这三个部分来讲解。重点主要放在最后一个部分。希望能帮助大家理解和掌握 rule。
二、rule 的概念
Rule 是 OSL 语法描述语言里用来定义语句片段的匹配规则,它的主要目的是要被 grammar 引用,而且还要被不同的 grammar 重复使用,换句话说,就是你写的这一条rule,它不是一次性的,而是能重复使用而且通用的。
一般 rule 除了可以是同义词的集合也可以是短语的集合。
例:
<哪些>:哪些|哪几个 <好不好>:好[不好]|行[不行]|可[不可]以|有没有问题 <交通工具>:火车|汽车|飞机|轮船|自行车|摩托车|公交车|地铁|电动车|磁悬浮列车|三轮车 |
这里提醒大家注意一点,你可以根据自己的需要来决定 rule 的内容,但是在编写 rule 的时候,内容要尽量完整,以方便在后期使用,因为一旦实际应用到 rule 的时候,如果内容不够完整,就需要修改 rule。
三、rule 的组成
在了解了 rule 的概念之后,接下来说一下 rule 由哪几部分组成。
Rule 主要由两部分构成,名称和内容。rule 的名称必须是一个有效的标识符,可以由英文字母、数字、中文字符或者下划线组成,但是第一个字符不能是数字。
在欧拉蜜开放平台里提供了很多的例子,可以用来参考。
可以看到,rule 的名称既有中文也有英文,还可以用拼音组成,这个可以根据自己的喜好来命名,但是新命名的 rule 不能和已有 rule 名称相同。而且要注意一点,虽然欧拉蜜开放平台对英文字母不区分大小写,但由于语义输出格式为小写,所以建议用户还是避免使用大写字母来替 rule 命名。
接着来看 rule 的内容,rule 可以是文字也可以由其他调用组成,也就是说可以引用其他 rule、slot、modifier。
四、撰写rule常用的符号
在简单讲述了 rule 的概念和 rule 的组成之后,那么接下来,就要说道重点了,要怎么写一条 rule 呢?
在书写 rule 之前,我先给大家介绍几个在书写时常用到的符号:
符号 |
意义 |
< > |
表示的是调用/引用,在写rule的时候,要用<>把这条rule的名称括起来 |
| |
表示或,词组之间是并列的状态。比如:电视|空调,就表示电视或者空调 |
[ ] |
表示其括号里的内容是可选的。比如例句:[请]帮我,可以有两种表达,请帮我,或者帮我。被方括号包覆的请字,可以出现也可以不出现 |
() |
表示的是匹配区域或者组,简单来说就是括号里面的是必选的内容,比如例句:打开(电视|空调),在这里要表达的意思就是打开电视或者打开空调。电视和空调必须要选择一个 |
可以通过参看欧拉蜜官网例子来巩固一下这个知识点:
例:
<起点站>:(起点|始点)[站]|首发站 |
可以表达的意思就是:起点、始点、起点站、始点站、首发站。被小括号包覆的内容表示必选,是一定会出现的内容;而被方括号包覆的,表示可选的意思;然后相同的词之前,用竖线隔开,表示并列,如两个词之间用竖线隔开,表示二者择其一。
这样的例子还有很多,大家可以多多浏览欧拉蜜开放平台的官网。
五、rule 的撰写
关于 rule 的写法,前文也提到过,可以直接书写,也可以引入其他的 rule。
下面我给大家具体演示一下,假设要写一条关于“可能”的 rule,可以把 rule 命名为<可能>。
然后撰写内容,列举和“可能”意思相近的词,可能|或许|也许|说不定,词和词之间用竖线隔开,表示并列。组合在一起:<可能>:可能|或许|也许|说不定
再举个例子:要写一条关于“哪里”的rule,名称可以写:<哪里>。
表达“哪里”有这些词语:哪里、那个地方、哪个方位等等,那么就可以写出一条rule来把这些词集合在一起,rule 的名称是<位置 >,内容是“哪|哪里|哪个地方|哪个方位”。
六、如何引用rule
而怎么在 rule 里引入 rule,可以看下面这个例子。
假设写了一个关于打开这个动作的 rule:内容有“打开、开启、开一开、开一下等等。
<open _ verb>:打开|开启|启动|开一开|开一下 |
然后接下来要写一个关于打开电视的 rule,在这个时候,如果再把打开这个动作一一列举出来,就会显得非常累赘,那么就可以引入之前写的关于打开的 rule。
<open TV>:<open _ verb>电视 |
要注意一点,在引用一个已经定义了的 rule 的时候,一定要用尖括号包覆这个rule的名称。
同样的,以此类推,也可以再写一个关于电视的 rule:<电视>:电视[机]|TV | tv,然后引入。
最后这条关于打开电视的 rule 就可以这样写:
<open TV>:<open _ verb><电视> |
这节课到这里就结束了,我们下节课再见。