大家好,歡迎收看OLAMI人工智慧開放平台教學影片。今天要學習的是 alarm 模組裡的例句語法解析(下)。
在上節課我們介紹了一些經典句子語法的編寫,今天就再來一起學習其他具有代表性的例句。
這節課要講解的是下面這七個例句。
一、星期三有設置鬧鐘嗎 二、修改14:50的鬧鐘 三、把九點的鬧鐘改到下午四點 四、查看我所有的鬧鐘 五、取消所有的鬧鐘 六、我設置的鬧鐘都有哪些 七、幫我把11點的鬧鐘關掉
我們先來看第一個例句
一、星期三有設置鬧鐘嗎
Grammar:[我]<time>(([都|還](有什麽|有哪[一]些|有沒有))<r_alarm>|有[設[置]]<r_alarm>嗎)<{@=find_alarm}> 名稱:g_find_alarm_time1 類型:語意
它的名稱可以根據我們自己的需要來寫,可以是對我們語料的簡單概括,這裡就可以表示查找鬧鐘時間這個意思。
它可以是英文、中文、字元結合,可以輸入自己喜歡的名稱。然後這條 grammar 的類型是語意,也就是說不需要為它編輯答案。
說完了名稱和類型,來看看它的內容。
這個grammar看上去很有很多符號,有點複雜,
但是我們以用中括號包括的部分是可選內容,用尖括號包括的是引用內容,而用小括號包括的內容是必選內容,按照這個規則來看,這個 grammar其實沒有很複雜。
這條 grammar 裡引用了很多內容。
Rule:<r_alarm>:鬧鐘|鬧鈴 Datetime slot:<time> Modifier:<{@=find_alarm}>
那麽,這句 grammar 可以匹配的語料有:
星期三有設置鬧鐘嗎? 週末都有什麽鬧鐘 我星期一早上6點有設鬧鐘嗎
等等
二、修改14:50的鬧鐘
Grammar: [<r_help_prefix>|幫忙|替我](<r_modify>|調整)[一下]<time>(的[所有|全部]|(所有|全部)[的])<r_alarm><{@=modify_alarm}> 名稱:g_modify_alarm_time 類型:語意
它的結構也比較簡單,來看下它引用的內容:
Rule: <r_help_prefix>: [請你|請|你](幫[幫]|幫助)(我|俺) <r_modify>:修改|更改 <r_alarm>:鬧鐘|鬧鈴 Datetime slot:<time> Modifier:<{@=modify_alarm}>
那麽這條 grammar 可以匹配的語料有:
修改14:50的鬧鐘 請你幫我調整一下7點的鬧鐘 修改這個月所有的鬧鈴
三、把九點的鬧鐘改到下午四點
Grammar: [[<r_help_prefix>|幫忙|替我|我[想]要]把]<time>[的]<r_alarm>(改|調|設置)(成|到|為)<modify_time><{@=modify_alarm}> 名稱:g_modify_alarm_modify_time 類型:語意
我們來看下它引用的內容:
Rule: <r_help_prefix>: [請你|請|你](幫[幫]|幫助)(我|俺) <r_alarm>:鬧鐘|鬧鈴 Datetime Slot: <time> <modifier_time> Modifier:<{@=modify_alarm}>
那麽這條 grammar 它可以匹配的語料就有:
把九點的鬧鐘改到下午四點 請幫我把明天的鬧鐘調成後天 我想要把星期三晚上六點的鬧鐘改成7點
等等
四、查看我所有的鬧鐘
Grammar: [<r_help_prefix>|幫忙|替我]<r_find>([我](所有|全部)的|[我的|手機[上]](所有|全部)[的])<r_alarm><{@=find_all_alarm}> 名稱:g_find_all_alarm 類型:語意
這句 grammar 的結構也比較簡單,它要表達的主體內容就是查找鬧鐘。我們直接來看下它引用的內容:
Rule: <r_help_prefix>: [請你|請|你](幫[幫]|幫助)(我|俺) <r_find>:查看|查詢 <r_alarm>:鬧鐘|鬧鈴 Modifier:<{@=find_all_alarm}>
那麽,它可以匹配的語料有:
查看我所有的鬧鐘 請你幫我查詢手機上全部的鬧鐘 替我查看我的所有鬧鐘
等等
五、取消所有的鬧鐘
Grammar: [<r_help_prefix>|幫忙|替我]((關閉|關掉|取消)<{operation=關閉}>|(啟用|打開)<{operation=打開}>)([我](所有|全部)的|[我的|手機[上]](所有|全部))<r_alarm><{@=modify_all_alarm}> 名稱:g_modify_all_alarm 類型:語意
在這條 grammar 裡,使用了 slot 的引用並直接賦值規則。我們對:關閉、關掉、取消這三個詞賦值 slot :operation 的值是關閉,
那麽不管我們匹配到的是哪一個,slot 都取值關閉。同樣的,我們也為啟用、打開這兩個詞做了 slot 的賦值,讓不管語料匹配的是哪個,operation 的值都等於打開。
接著我們再看一下它其他的部分:
Rule: <r_help_prefix>: [請你|請|你](幫[幫]|幫助)(我|俺) <r_alarm>:鬧鐘|鬧鈴 Internal Slot: <operation> Modifier:<{@=modify_all_alarm}>
這裡還要再強調一下,之前也說過,我們在引用 internal slot 的時候,要為它定義一條同名的 rule。
但在這條 grammar 裡,我們使用的是“引用並直接賦值”規則,所以也可以不用添加同名的rule,這兩個規則是有所不同的,我們在使用的時候要注意。
那麽這條 grammar 可以匹配的語料有:
取消所有的鬧鐘 請你取消我所有的鬧鐘 替我打開手機上所有鬧鐘
等等
六、我設置的鬧鐘都有哪些
Grammar: (我[都](有|設置了)(哪些|什麽|幾個)<r_alarm>[啊]|我[設[置]]的<r_alarm>[都]有(哪些)|<_我要_短句(看一下我的<r_alarm>)>)<{@=find_alarm}> 名稱: g_find_alarm1 類型:語意
我們來看下它的內容,它是由三個並列的短句和末尾的 modifier 組成的,這三個短句分別是:
我[都](有|設置了)(哪些|什麽|幾個)<r_alarm>[啊] 我[設[置]]的<r_alarm>[都]有(哪些) <_我要_短句(看一下我的<r_alarm>)>
我們可以看到最後這個短句是一個 template ,我們來看下它具體的內容:<_我要_短句>:[=短句=]我(要|想|想要|需要)$(短句),那麽它就可以匹配我要什麽,或者我想要什麽之類的句子。
當我們在 grammar 裡引用這個 template 的時候,它要傳遞的參數值就是:看一下我的<r_alarm>。在這裡 <r_alarm> 是一條 rule,可以表示:鬧鐘或者鬧鈴。
然後,這條 grammar 也有條 global modifier:<{@=find_alarm}>,表示查詢鬧鐘的意圖。
那麽這條 grammar 可以匹配的語料有:
我設置的鬧鐘都有哪些 我都有幾個鬧鐘啊 我想要看一下我的鬧鐘
等等
七、幫我把11點的鬧鐘關掉
Grammar: [<r_help_prefix>|幫忙|替我|[請]給我]<_把字句_動賓結構([給]((關了|關掉|取消[了])<{operation=關閉}>|(啟用|打開)<{operation=打開}>), <time>的<r_alarm>)><{@=modify_alarm}> 名稱:g_modify_alarm_operation_time3 類型:語意
這條 grammar 也是看起來有點複雜,我們可以看出這一條 grammar 其實是由前面方括號包覆的可選內容,和一條 template 和 modifier 組成的。
我們來看下這條 template 的內容
<_把字句_動賓結構>:[=動詞性短語,名詞性短語=]把$(名詞性短語)$(動詞性短語)
它在被引用的時候,要傳遞的參數值是這一部分:
[給]((關了|關掉|取消[了])<{operation=關閉}>|(啟用|打開)<{operation=打開}>), <time>的<r_alarm>)>
在這裡,我們也給:關閉、關掉、取消這三個詞都做了slot 的引用並直接賦值,賦值 internal slot:operation的值是關閉,那麽不管我們匹配到的是哪一個,slot 都取值關閉。
同樣的,我們也為啟用、打開這兩個詞做了 slot 的賦值,讓不管語料匹配的是哪個,operation 的值都等於打開。跟前面的例子一樣。
我們再看下其他引用的部分:
Rule : <r_help_prefix>: [請你|請|你](幫[幫]|幫助)(我|俺) <r_alarm>:鬧鐘|鬧鈴 Datetime Slot: <time> Internal Slot:<operation> Modifier:<{@=modify_alarm}>
那麽,這條 grammar 最後可以匹配的內容有:
幫我把11點的鬧鐘關掉 請你幫我週四早晨的鬧鐘取消了 請給我把今天晚上七點的鬧鐘打開
等等
那麽這節課就到這裡,感謝大家觀看,我們下節課再見。