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

Ticket 例句語法解析(下)

olami     2017-12-20 10:00


大家好,歡迎觀看OLAMI人工智慧開放平臺教學影片。


這節課的內容是 Ticket 模組例句語法解析的下集。

我們挑選了5個例句來為大家講解:


  1. 幫我買票
  2. 今天從台北出發的飛機有哪些
  3. 幫我訂從高雄出發的經濟艙
  4. 明天從台北到台中的火車票
  5. 花蓮到台東的火車票價


一、幫我買票

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}>

在 <票> 這條 rule 裡,我們使用了 slot 的引用並直接賦值規則,對於「機票」這個詞,我們引用並且賦值 slot:<vehicle> 的值是飛機,那麼當這個詞被匹配上的時候,我們就能獲取slot 傳遞的訊息是飛機了。

同樣的,在 <交通工具> 這條rule裡,我們也對「航班」這個詞賦值 slot <vehicle> 的值是飛機,那麼當這些詞被匹配上的時候,我們就能獲取 slot 的訊息。


那麼我們的這條 grammar 可以匹配的語料有:

今天從台北出發的飛機有哪些
11月13號從台中出發的高鐵都有哪幾趟
明天晚上從高雄出發的航班都是幾點的
……


三、幫我訂從高雄出發的經濟艙

Grammar:
[<幫我>|<我要>](<buy><{@=buy}>|<查><{@=query}>|<{@=query}>)(<_模板_出發地(<cityfrom>)>)的(<火車座位{seat=$}><{vehicle=火車}>|<飛機座位{seat=$}><{vehicle=飛機}>)

名稱:查出發地交通工具座位
類型:語意


我們直接來看下引用的內容:

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

花蓮到台東的火車票價
請你幫我查一下瑞芳去平溪的火車票價是多少
高鐵票價是多少,我想要從雲林出發去苗栗
……


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

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


感謝您的觀看!

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