影片教學 > NLI模組例句解析

Ticket 例句語法解析(上)

olami     2017-12-05 17:00


大家好,歡迎使用OLAMI人工智慧開放平台。


今天為大家介紹的是 Ticket 模組的例句語法解析上集。

我們選了六個經典例句來為大家講解,現在我們一個一個來看。


  1. 買張去台北的票
  2. 會訂飛機票嗎
  3. 幫我訂從台北出發的飛機
  4. 幫我訂張頭等艙
  5. 今天從台北到東京的商務艙
  6. 買張從台北到香港的機票


一、買張去台北的票

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 裡,也對列車這個詞賦值「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 的值也是頭等艙。後面也是一樣的用法。這些在前面的例子裡,已經詳細解釋過了,所以在這裡就不再重複。


它可以匹配的語料有:

今天從台北到東京的商務艙
請你幫我買一張3月3號從台東出發到蘭嶼的飛機
我要搜一下明天的站票從宜蘭到花蓮
……


六、買張從台北到香港的機票

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 可以匹配的內容有:

買張從台北到香港的機票
能不能請你幫我搜一下從台中開往高雄的高鐵票
火車票,我要從彰化回花蓮
……


那麼以上就是Ticket模組例句語法解析上集的全部內容。也別忘了去看看下集喔!

如果想要看更多的例句,歡迎登入OLAMI人工智慧開放平台,到NLI系統—— Ticket模組裡查看。


感謝您的觀看!

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