视频教程 > NLI模块例句解析

Ticket例句语法解析(上)

olami     2017-11-08 18:13




以下是视频内容文字版:


大家好,欢迎观看欧拉蜜教学视频,今天这节课我们要来学习的是 ticket  模块的例句语法解析上篇。因为这一个模块它涉及的句型比较多,句子也会复杂一点,所以会分成上下两节课来分别讲解。让大家能够对这个模块能够有比较充分的了解。


下面这六个句子就是今天我要讲解的内容:

一、买张去上海的票

二、会订飞机票么

三、帮我订从北京出发的飞机

四、帮我订张头等舱

五、今天从北京到上海的二等座

六、买张从上海到北京的机票


一、买张去上海的票


Grammar:(([<帮我>]<buy>)[[一]<unit>]|我(要|想[要])|想要[一]<unit>)(票<_模板_去地点(<cityto>)>[的]|<_模板_去地点(<cityto>)>的票)<{@=buy}>

名称:目的地

类型:语义


名称可以根据自己的需要来写,英文、中文都可以。它的类型是语义,也就是说不需要为它添加答案。

在具体讲解之前,再复习一下关于符号的意义:被方括号包覆的是可选内容,被小括号包覆的是必选内容,然后中间的竖线表示,它左右两边的部分是一种并列选择的关系。尖括号包覆的是引用的内容。那么这条 grammar 就可以把它看成是由两个小括号包覆的内容,还有结尾的 modifier 组成的。

前面一部分内容是由三个短句构成的:[<帮我>]<buy>)[[一]<unit>];我(要|想[要]);想要[一]<unit>,它们都用竖线隔开,表示并列。

后面这一部分是由两个短句构成的:票<_模板_去地点(<cityto>)>[的];<_模板_去地点(<cityto>)>的票,可以看出是一条template。

在这条 grammar 里,它引用的内容比较多。我们一起来看一下:


Template:

<_模板_去地点>: [=地点=](到|回)$(地点)[去]|(去[往]|至)$(地点)|往$(地点)去

Rule:

<帮我>:(帮|给|为)我

<buy>:买|定|订[购]|预(约|订|定)|购[买]

<unit>:张|个

EXT Slot: <cityto>

Modifier:<{@=buy}>


那么,这条 grammar 可以匹配的语料有:

买张去上海的票

帮我订一张票到北京去的

我想要到广州去的票

……


二、会订飞机票吗

Grammar:[请问]([你](会|可以|能)[<帮我>[[在]网上]|[在]网上[<帮我>]](<buy><{@=canbuy}>|<查><{@=canquery}>)(票|<票>)(吗|么|不)|[<帮我>[[在]网上]|[在]网上[<帮我>]](<buy><{@=canbuy}>|<查><{@=canquery}>)(票|<票>)[你](会|可以|能|行)(吗|么|不)|<票>[你](会|可以|能)[<帮我>[[在]网上]|[在]网上[<帮我>]](<buy><{@=canbuy}>|<查><{@=canquery}>)(吗|么|不))

名称:会订票吗

类型:语义


这条 grammar 看起来比较复杂了,来一点点分析一下。可以简单的看做是由前面的被方框号包覆的可选内容和后面红色小括号包覆的这一部分内容组成。重点来看后面,它也是由三个并列的句子组成的:

(1)([你](会|可以|能)[<帮我>[[在]网上]|[在]网上[<帮我>]](<buy><{@=canbuy}>|<查><{@=canquery}>)(票|<票>)(吗|么|不)

(2)[<帮我>[[在]网上]|[在]网上[<帮我>]](<buy><{@=canbuy}>|<查><{@=canquery}>)(票|<票>)[你](会|可以|能|行)(吗|么|不)

(3)<票>[你](会|可以|能)[<帮我>[[在]网上]|[在]网上[<帮我>]](<buy><{@=canbuy}>|<查><{@=canquery}>)(吗|么|不))

来看下它引用的内容:


Rule:

<帮我>:(帮|给|为)我

<buy>:买|定|订[购]|预(约|订|定)|购[买]

<查>:查[[一](查|下)]|搜[[一](搜|下)]|搜索[[一]下]|[查]看[[一]下]|查询[[一]下]|找[[一](找|下)]|看看

<票>:<vehicle>票|机票<{vehicle=飞机}>

Modifier:

<{@=canbuy}>

<{@=canquery}>    


在 <票> 这条 rule 里,我们使用了 slot 的引用并直接赋值规则,对于机票这个词,我们引用并且赋值 slot:vehicle 的值是飞机,那么当这个词被匹配上的时候,我们就能获取 slot 传递的信息是飞机。同样的,在 <train> 这条 rule 里,也对列车这个词赋值 slot

vehicle=火车,对直达列车,赋值vehicle=直达。那么当这些词被匹配上的时候,我们就能获取 slot 的信息。

除此之外,在这条 grammar 里,我们也引用了多个 modifier:<{@=canbuy}> 和 <{@=canquery}>。对 <buy> 这条 rule ,我们添加了 modifier:<{@=canbuy}>,那么当 rule 被匹配上的时候,我们就可以知道这条 grammar 要执行的操作就是买,对 <查> 这条rule,我们添加了 modifier:<{@=canquery}>,那么当 rule 被匹配上,我们就能获取 modifier 传递的信息是能查询。


最后这条 grammar 可以匹配的语料有:

会订飞机票吗

你能帮我在网上买机票吗

在网上帮我搜一下高铁票可以吗

……


三、帮我订从北京出发的飞机

Grammar:[<帮我>|<我要>](<buy><{@=buy}>|<查><{@=query}>|<{@=query}>)(<_模板_出发地(<cityfrom>)>)的[所有|全部](<train{vehicle=$}>[(车|班)次]|(飞机|航班)[班次]<{vehicle=飞机}>)

名称:查出发地交通工具

类型:语义


这条 grammar 里涉及的引用比较多,我们来看一下:


Template:

<_模板_去地点>: [=地点=](到|回)$(地点)[去]|(去[往]|至)$(地点)|往$(地点)去

Rule:

<帮我>:(帮|给|为)我

<我要>:我(要|想[要])|想[要]

<buy>:买|定|订[购]|预(约|订|定)|购[买]

<查>:查[[一](查|下)]|搜[[一](搜|下)]|搜索[[一]下]|[查]看[[一]下]|查询[[一]下]|找[[一](找|下)]|看看

EXT Slot:<cityform>

Modifier:

<{@=buy}>

<{@=query}>


在这里,我们使用了 slot 的两种引用规则。

(1)<train{vehicle=$}>这是 slot 的引用并间接赋值,只有当我们的 rule:<train> 被匹配上的时候,slot 才被赋值同样的内容。在这里,slot 的值事先是不确定的,它根据 rule 的内容来变化。

(2)<{vehicle=飞机}> 是 slot 的引用并直接赋值规则,不管语料匹配的是飞机、飞机航班还是飞机班次,slot 的值都是飞机。这两个规则是有区别的,在使用的时候要注意。


那么这条 grammar 可以匹配的语料有:

帮我订从北京出发的飞机

我要买到长沙去的高铁

给我查一下回上海的所有飞机班次

……


四、帮我订张头等舱

Grammar:[<帮我>|<我要>](<buy><{@=buy}>[[一]张]|<查><{@=query}>)(<飞机座位{seat=$}>[[的](飞机|[飞]机票)]<{vehicle=飞机}>|<火车座位{seat=$}>[[的]<train>[票]])

名称:交通工具座位

类型:语义


这条 grammar 的结构也比较简单。它是由前面的方括号包覆的可选内容和后面两个小括号包覆的必选内容组成。直接来看下它引用的部分。


Rule:

<帮我>:(帮|给|为)我

<我要>:我(要|想[要])|想[要]

<buy>:买|定|订[购]|预(约|订|定)|购[买]

<查>:查[[一](查|下)]|搜[[一](搜|下)]|搜索[[一]下]|[查]看[[一]下]|查询[[一]下]|找[[一](找|下)]|看看

<train>:火车|高铁|动车|[空调](普快|特快)|列车<{vehicle=火车}>|直达列车<{vehicle=直达}>

Modifier:

<{@=buy}>  

<{@=query}>


在这条 grammar 里,我们也使用了 slot 的引用并间接赋值规则:<飞机座位{seat=$}>,只有当 <飞机座位> 这一条 rule 被匹配上的时候,我们的 slot:seat 才会被赋值相同的内容。Seat 是一条 internal  类型的 slot 。同样的,后面的 <火车座位{seat=$}> 也是间接赋值规则。除此之外,这条 grammar 里也使用了直接赋值规则:<{vehicle=飞机}>,不管前面的语料匹配上的哪一个,slot 的值都是飞机。用法和前面的例子都是一样的。


那么,这条 grammar 可以匹配的语料有:

帮我订张头等舱

我要买一张经济舱的机票

搜一下软卧的火车票

……


五、今天从北京到上海的二等座

Grammar:([[请[你]]<帮我>|<我要>]((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>)|<{@=query}>)(<time>[从]<cityfrom>[出发]<_模板_去地点(<cityto>)>[的](<火车座位{seat=$}><{vehicle=火车}>|<飞机座位{seat=$}><{vehicle=飞机}>)|<time>的(<火车座位{seat=$}><{vehicle=火车}>|<飞机座位{seat=$}><{vehicle=飞机}>)[从]<cityfrom>[出发]<_模板_去地点(<cityto>)>)

名称:时间出发地目的地交通工具座位

类型:语义


这条 grammar 也是有点复杂的,我们来把它分析一下。那么,我们的这一条 grammar 其实是可以看做由两个小括号包覆的内容组成的。

(1)([[请[你]]<帮我>|<我要>]((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>)|<{@=query}>)

(2)(<time>[从]<cityfrom>[出发]<_模板_去地点(<cityto>)>[的](<火车座位{seat=$}><{vehicle=火车}>|<飞机座位{seat=$}><{vehicle=飞机}>)|<time>的(<火车座位{seat=$}><{vehicle=火车}>|<飞机座位{seat=$}><{vehicle=飞机}>)[从]<cityfrom>[出发]<_模板_去地点(<cityto>)>)

第一个部分它又是由两个并列的部分组成:[[请[你]]<帮我>|<我要>]((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>和<{@=query}>

第二部分是由两个并列的句子组成:<time>[从]<cityfrom>[出发]<_模板_去地点(<cityto>)>[的](<火车座位{seat=$}><{vehicle=火车}>|<飞机座位{seat=$}><{vehicle=飞机}>

以及:<time>的(<火车座位{seat=$}><{vehicle=火车}>|<飞机座位{seat=$}><{vehicle=飞机}>)[从]<cityfrom>[出发]<_模板_去地点(<cityto>)>

这样分解我们的 grammar 就变得简单了,在这里,它还涉及了很多引用的内容,我们一起来看一下。


Template:

<_模板_去地点>: [=地点=](到|回)$(地点)[去]|(去[往]|至)$(地点)|往$(地点)去

Rule:

<帮我>:(帮|给|为)我

<我要>:我(要|想[要])|想[要]

<buy>:买|定|订[购]|预(约|订|定)|购[买]

<unit>:张|个

<查>:查[[一](查|下)]|搜[[一](搜|下)]|搜索[[一]下]|[查]看[[一]下]|查询[[一]下]|找[[一](找|下)]|看看

DatetimeSlot:

<time>

EXT Slot:

<cityfrom>  

<cityto>

Modifier:

<{@=buy}>  

<{@=query}>


在这里,我们也使用了 slot 的引用并赋值的功能。

当我们这条名称是 <飞机座位> 的 rule 被匹配上的时候,我们就赋值 internal slot :seat 相同的内容,比如说,匹配的是头等舱,那么 slot 的值也是头等舱。后面也是一样的用法。这些在前面的例子里,已经详细解释过了,所以在这里就不再重复。


它可以匹配的语料有:

今天从北京到上海的二等座

请你帮我买一张明天从广州出发到深圳去的动车

我要搜一下今天的经济舱从上海到南京

……


六、买张从上海到北京的机票

grammar:([能[不能|否]][[请[你]]<帮我>|<我要>] ((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>)|[我]想要<{@=buy}>[一]<unit>|<{@=query}>)((<票>)[[','|',']<我要>][从]<cityfrom>[出发]<_模板_去地点(<cityto>)>|([从]<cityfrom>[出发]<_模板_交通工具去地点(<cityto>)>)的(<票>))

名称:出发地目的地XX票

类型:语义


这条 grammar 的内容也比较多,我们来把它分解一下。这个句子其实可以看做是由这两个小括号里的内容组成的,分别是:

(1)([能[不能|否]][[请[你]]<帮我>|<我要>]((<buy><{@=buy}>|(查|搜[索])<{@=query}>)[一]<unit>|<buy><{@=buy}>|<查><{@=query}>)|[我]想要<{@=buy}>[一]<unit>|<{@=query}>)

(2)((<票>)[[','|',']<我要>][从]<cityfrom>[出发]<_模板_去地点(<cityto>)>|([从]<cityfrom>[出发]<_模板_交通工具去地点(<cityto>)>)的(<票>))

而且第一个小括号里的内容又是由三个并列的短句组成的,第二个小括号里的内容呢又是由两个并列的句子组成的。

这条 grammar 里涉及的引用也比较多,我们一起来看一下。


Template:

<_模板_去地点>:[=地点=](到|回)$(地点)[去]|(去[往]|至)$(地点)|往$(地点)去

<_模板_交通工具去地点>:[=地点=]([开](到|回)|开往)$(地点)[去]|(去[往]|开去|至)$(地点)|往$(地点)去

Rule:

<帮我>:(帮|给|为)我

<我要>:我(要|想[要])|想[要]

<buy>:买|定|订[购]|预(约|订|定)|购[买]

<unit>:张|个

<查>:查[[一](查|下)]|搜[[一](搜|下)]|搜索[[一]下]|[查]看[[一]下]|查询[[一]下]|找[[一](找|下)]|看看

<票>:<vehicle>票|机票<{vehicle=飞机}>

EXT Slot:

<cityfrom>  

<cityto>

Modifier:

<{@=buy}>

<{@=query}>


如果我们的 grammar 里还有标点符号的话,标点符号要用英文状态下的单引号括起来。具体的标点书写方式也可以去参考之前的课程。


那么,这条 grammar 可以匹配的内容有:

买张从上海到北京的机票

能不能请你帮我搜一下从广州去深圳的高铁票

我要买一张从南京出发回武汉的火车票

……

这节课的内容到这里就结束了,感谢大家观看,下节课再见。


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