以下是视频内容文字版:
大家好,欢迎观看欧拉蜜教学视频,今天这节课我们要来学习的是 ticket 模块的例句语法解析下篇。在上一节课,我们已经介绍过了一些经典句子的编辑方法,那么这节课我们就再来一起看一下有代表性的一些例句,巩固一下之前说过的知识点。
那么这节课我们要讲解的是下面这五个句子。
一、帮我买票
二、今天从北京出发的飞机有哪些
三、帮我订从北京出发的经济舱
四、明天从北京到上海的火车票
五、北京到上海的火车票价
一、帮我买票
Grammar:([[[[我]想](请|麻烦)[你]](<帮我>|帮[个]忙)|<我要>|[[我]想](请|麻烦)[你]]((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>)|[我]想要<{@=buy}>[一]<unit>)票[可以(吗|么|不)]
名称:买票
类型:语义
虽然它的句子看起来有一点复杂,但其实很简单,我们就可以简单的把这个句子看做是由前面用小括号包覆的这一部分内容和后面的内容组成。然后,前面用小括号包覆的这一部分内容呢,它又是由两个并列的句子组成:
(1)[[[[我]想](请|麻烦)[你]](<帮我>|帮[个]忙)|<我要>|[[我]想](请|麻烦)[你]]((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>)
(2)[我]想要<{@=buy}>[一]<unit>
这样子分解一下,我们的 grammar 结构就很清楚了。接下来我们一起来看下它引用的内容:
Rule:
<帮我>:(帮|给|为)我
<我要>:我(要|想[要])|想[要]
<buy>:买|定|订[购]|预(约|订|定)|购[买]
<unit>:张|个
Modifier:
<{@=buy}>
<{@=query}>
在这里还要解释一下,在“[我]想要<{@=buy}>[一]<unit>”这个句子里,我们也引用了 modifier ,当这个句子被匹配上的时候,它就会作为一条 global modifier 来传递“买”这个信息,之所以添加在这里,是为了和前面的句子区分开。因为如果我们直接添加在整个句子的末尾,它就会作为这一整个 grammar 的 global modifier 。所以,大家在使用modifier 的时候要注意。
那么,我们的这条 grammar 它可以匹配的语料有:
帮我买票
我想请你帮忙买一张票
我想要一张票可以吗
……
二、今天从北京出发的飞机有哪些
Grammar:<time><_模板_出发地(<cityfrom>)>的(<票>|<交通工具>)[都](是|有)(几点的|哪(些|几趟))<{@=query}>
名称:时间出发地的票有哪些
类型:语义
这条 grammar 比较简单,我们直接来看下它引用的内容:
Template:
<_模板_出发地>:[=地点=]从$(地点)出发
Rule:
<票>:<vehicle>票|机票<{vehicle=飞机}>
<交通工具>:<vehicle>|航班<{vehicle=飞机}>
Datetime slot:<time>
EXT Slot:<cityfrom>
Modifier:<{@=query}>
那么,我们的这条 grammar 可以匹配的语料有:
今天从北京出发的飞机有哪些
11月13号从上海出发的高铁都有哪几趟
明天晚上从广州出发的航班都是几点的
……
三、帮我订从北京出发的经济舱
Grammar:[<帮我>|<我要>](<buy><{@=buy}>|<查><{@=query}>|<{@=query}>)(<_模板_出发地(<cityfrom>)>)的(<火车座位{seat=$}><{vehicle=火车}>|<飞机座位{seat=$}><{vehicle=飞机}>)
名称:查出发地交通工具座位
类型:语义
它的 grammar 也很简单,我们直接来看下引用的内容:
Template:
<_模板_出发地>:[=地点=]从$(地点)出发
Rule:
<帮我>:(帮|给|为)我
<我要>:我(要|想[要])|想[要]
<buy>:买|定|订[购]|预(约|订|定)|购[买]
<查>:查[[一](查|下)]|搜[[一](搜|下)]|搜索[[一]下]|[查]看[[一]下]|查询[[一]下]|找[[一](找|下)]|看看
EXT Slot:
<cityfrom>
Modifier:
<{@=buy}>
<{@=query}>
在这里,我们使用了 slot 的两种引用规则。
Rule:
<vehicle>:飞机|<train>
<train>:火车|高铁|动车|[空调](普快|特快)|列车<{vehicle=火车}>|直达列车<{vehicle=直达}>
<飞机座位>: (头等|经济|商务|公务)舱
<火车座位>: (硬|软|一等|二等|商务)座|(卧|上|中|下)铺|软卧|动卧|站票|无座
Internal slot :
<vehicle>
<seat>
<火车座位{seat=$}>,它是 slot 的引用并间接赋值规则,<火车座位> 是一条 rule,seat 是一条 internal 类型的slot。只有当 <火车座位> 这一条 rule 被匹配上的时候,我们的slot :seat 才会被赋值相同的内容。同样的,后面的 <飞机座位{seat=$}> 也是引用并间接赋值规则。除此之外,这条 grammar 里也使用了直接赋值规则。<{vehicle=火车}>,<{vehicle=飞机}>,不管前面的语料匹配上的哪一个,slot 的值都是飞机。用法和前面的例子都是一样的。
那么,我们的这条 grammar 可以匹配的语料有:
帮我订从北京出发的经济舱
我要买从上海出发的高铁
给我查一查从广州出发的卧铺
……
四、明天从北京到上海的火车票
Grammar:([[请[你]]<帮我>|<我要>]((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>)|[我]想要<{@=buy}>[一]<unit>|<{@=query}>)((<票>)[[','|',']<我要>]<time>[的][从]<cityfrom>[出发]<_模板_去地点(<cityto>)>|<time>[的]([从]<cityfrom>[出发]<_模板_交通工具去地点(<cityto>)>)的(<票>)|(<time>的<票>)[[','|',']<我要>][从]<cityfrom>[出发]<_模板_去地点(<cityto>)>)
名称:时间出发地目的地xx票
类型:语义
我们的这条 grammar 它可以简单的看做是由两个小括号所包覆的必选内容组成的。第一个小括号里的内容又可以看做是由三个并列的句子组成的。
(1)([[请[你]]<帮我>|<我要>]((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>)
(2)[我]想要<{@=buy}>[一]<unit>
(3)<{@=query}>
第二个小括号里的内容也是由三个并列的句子组成的:
(1)(<票>)[[','|',']<我要>]<time>[的][从]<cityfrom>[出发]<_模板_去地点(<cityto>)>
(2)<time>[的]([从]<cityfrom>[出发]<_模板_交通工具去地点(<cityto>)>)的(<票>)
(3)(<time>的<票>)[[','|',']<我要>][从]<cityfrom>[出发]<_模板_去地点(<cityto>)>
这样一分解,我们就可以发现,不管是多么复杂的 grammar,它其实也是由很简单的句子组成的。接下来我们来看下它引用的内容:
Template:
<_模板_去地点>:[=地点=](到|回)$(地点)[去]|(去[往]|至)$(地点)|往$(地点)去
<_模板_交通工具去地点>:[=地点=]([开](到|回)|开往)$(地点)[去]|(去[往]|开去|至)$(地点)|往$(地点)去
Rule:
<帮我>:(帮|给|为)我
<我要>:我(要|想[要])|想[要]
<buy>:买|定|订[购]|预(约|订|定)|购[买]
<unit>:张|个
<查>:查[[一](查|下)]|搜[[一](搜|下)]|搜索[[一]下]|[查]看[[一]下]|查询[[一]下]|找[[一](找|下)]|看看
<票>:<vehicle>票|机票<{vehicle=飞机}>
Datetime slot:<time>
EXT Slot:<cityfrom>
<cityto>
Modifier:<{@=buy}>
<{@=query}>
最后,这条 grammar 可以匹配的语料有:
明天从北京到上海的火车票
请你帮我买张明天从广州出发开往深圳去的票
我要查一下11月13号从上海出发往南京去的票
……
五、北京到上海的火车票价
Grammar:([[请[你]]<帮我>|<我要>](((查|搜[索])<{@=query}>)|<查><{@=query}>)|[我]想[要](知道|了解)<{@=query}>|<{@=query}>)((<票>(<属性结尾>|价[[是]多少]))[[','|',']<我要>][从]<cityfrom>[出发]<_模板_去地点(<cityto>)>|([从]<cityfrom>[出发]<_模板_交通工具去地点(<cityto>)>)[的]<票>(<属性结尾>|价<{prop=价格}>[[是]多少]))
名称:出发地目的地交通工具属性
类型:语义
这条 grammar 它也能简单的看做是由两个小括号包覆的必选内容组成。第一个小括号也由三条句子并列而成:
(1)[[请[你]]<帮我>|<我要>](((查|搜[索])<{@=query}>)|<查><{@=query}>)
(2)[我]想[要](知道|了解)<{@=query}>
(3)<{@=query}>
第二个小括号由两个并列的句子组成:
(1)<票>(<属性结尾>|价[[是]多少]))[[','|',']<我要>][从]<cityfrom>[出发]<_模板_去地点(<cityto>)>
(2)([从]<cityfrom>[出发]<_模板_交通工具去地点(<cityto>)>)[的]<票>(<属性结尾>|价<{prop=价格}>[[是]多少]))
我们来看下引用的内容:
Template:
<_模板_去地点>:[=地点=](到|回)$(地点)[去]|(去[往]|至)$(地点)|往$(地点)去
<_模板_交通工具去地点>:[=地点=]([开](到|回)|开往)$(地点)[去]|(去[往]|开去|至)$(地点)|往$(地点)去
Rule:
<帮我>:(帮|给|为)我
<我要>:我(要|想[要])|想[要]
<查>:查[[一](查|下)]|搜[[一](搜|下)]|搜索[[一]下]|[查]看[[一]下]|查询[[一]下]|找[[一](找|下)]|看看
<票>:<vehicle>票|机票<{vehicle=飞机}>
<属性结尾>:[的]<属性>[[是]多少]|几点((出发|发车)<{prop=出发时间}>|到达<{prop=到达时间}>)|多少钱<{prop=价格}>
<属性>:价格<{prop=价格}>|出发时间<{prop=出发时间}>|到达时间<{prop=到达时间}>
EXT Slot: <cityfrom>
<cityto>
Modifier:<{@=buy}>
<{@=query}>
这条 grammar 里也使用了 slot 的引用并直接赋值规则,具体的使用规则和前面的例子一样。
最后这条 grammar 可以匹配的内容有:
北京到上海的火车票价
请你帮我查一下广州去深圳的火车票价是多少
高铁票价是多少,我想要从上海出发去南京
……
以上这些就是这节课的全部内容,感谢大家观看,下节课再见。