影片教學 > OSL語法描述語言

Template的撰寫

olami     2017-08-03 17:14



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

今天這節課的主要內容是為大家介紹Template以及Template的撰寫。


我們將分為五個部分:

● Template 簡介

● Template 命名規則

● Template 的撰寫

● Template 的引用以及總結。


一、 Template 簡介

OSL 語法描述語言中的 Template 是一種模板的概念,用於定義可重複使用的參數化語法片段,主要用來描述中文的句式,例如疑問句、祈使句等。

Template是透過不同的參數來支持結構相同的不同說法,提高 Grammar 的撰寫效率。

例如:

Rule:
<看>:看[一]看|看一下
<想>:想[一]想|想一下
<聽>:聽[一]聽|聽一下
<瞧>:瞧[一]瞧|瞧一下
<說>:說[一]說|說一下
<講>:講[一]講|講一下


這6條Rule內容的結構一致,我們可以把這個結構寫成一個模板,使用的時候直接套用模板,因此可大大提高效率。

我們將這條Template寫成下面這個形式:

Template:
<動詞疊式>:[=動詞=]$(動詞)[一]$(動詞)|$(動詞)一下


其中「動詞疊式」是這條Template的名稱,而冒號後面的內容是這條 Template 的內容。

以上6條Rule均可引用這條 Template。

以<看>這條 Rule 為例,我們引用Template之後的寫法就可以是這樣:

<看>:<動詞疊式(看)>


相比起之前的寫法,引用Template之後,寫法變得更加簡潔。

二、 Template 命名規則

Template 名稱必須以英文字母、數字、中文字符或底線 _ 組成,但第一個字符不能是數字。

例如:

<name>
<_name>
<name1>
<某個名稱>


英文字母不區分大小寫,但由於語意輸出格式為小寫,因此建議避免使用大寫字母來替 Template 命名。


三、 Template 的撰寫

Template 內容包含參數和語法定義兩部分,參數表明裡面的內容是聲明的參數「[=參數1,參數2,…=] 」,其中「[=」和「=]」是保留字符。

例:

Template:
<動詞疊式>:[=動詞=]$(動詞)[一]$(動詞)|$(動詞)一下


多個參數中間用英文逗號隔開:

[=參數1,參數2,參數3…=]


其中對參數的引用使用「$」符號開頭,並用「()」將參數括起來,如:

$(參數1)


另外,參數名稱只能由英文字母、數字、中文字符或底線 _組成,但第一個字符不能是數字。


四、 Template的引用

1、在任何語法描述中引用一個已定義的 Template,需要用 < > 包住 Template 的名稱,並在 Template 名稱後面以 ( ) 包住要傳遞給該 Template 的參數值。

如下示範:

<template_name(參數1,參數2,...)> 


因此,在Grammar中引用Template:

Grammar:
<讓我想想>:讓我<動詞疊式(想)>


能夠匹配上語料:

讓我想想
讓我想一想
讓我想一下


在Rule中引用Template:

Rule:
<看看>:<動詞疊式(看)>|看一眼


能夠匹配上的語料有:

看看
看一看
看一下
看一眼


2、當Template涉及多個參數時,引用方法如下。

例:

Template:
<_能否_主謂結構>: [=主語,動詞性短句=]$(主語)(能不能|能否)$(動詞性短句)|$(主語)能[夠]$(動詞性短句)嗎|$(動詞性短句)$(主語)能嗎|$(動詞性短句)$(主語)能不能

Grammar
<你能唱歌嗎>:<_能否_主謂結構(你,唱歌)>


參數之間用半形逗號隔開即可。

這條Grammar能夠匹配上的語料有:

你能不能唱歌
你能否唱歌
你能夠唱歌嗎
你能唱歌嗎
唱歌你能嗎
唱歌你能不能


3、參數可以是任意符合語法規則的語法,因此Template可以引用Rule、Template、slot等等。

例1:

Rule: 
<look>:看|瞧|瞅

Grammar: 
<讓我想想>:讓我<動詞疊式(<look>)>


能夠匹配上語料:

讓我看看
讓我瞧一瞧
讓我瞅一下
……


例2:

Rule:
<你>:你|olami|OLAMI
Grammar
<你能唱歌嗎>:<_能否_主謂結構(<你>,唱歌)>

能夠匹配上語料:

你能不能唱歌
OLAMI能不能唱歌
OLAMI能夠唱歌嗎
……


4、Template也可以引用Template。

例:

Template:
<_能否_主謂結構>:[=主語,動詞性短句=]$(主語)(能不能|能否)$(動詞性短句)|$(主語)能[夠]$(動詞性短句)嗎|$(動詞性短句)$(主語)能嗎|$(動詞性短句)$(主語)能不能
<_可不可以_主謂結構>:[=主語,動詞性短語=]$(主語)(可不可以|可以不可以)$(動詞性短語)|$(主語)可以$(動詞性短語)嗎


那我們再寫一條包括「你能夠」以及「你可不可以」短語結構的Template。如下:

Template:
<你能_短句>: [=短句=]<_能否_主謂結構(<你>,$(短句))>|<_可不可以_主謂結構(<你>,$(短句))>


這條<你能_短句>的Template申明了一個參數「短句」,它引用了<_能否_主謂結構>以及<_可不可以_主謂結構>這兩條Template,並將其「主語」參數設定為Rule「<你>」。

那麼,當我們要撰寫一條能夠匹配上語料「你可以查天氣嗎」的 Grammar 時,就可以引用這條 Template 了:

<你能查天氣嗎>: <你能_短句(查天氣)>


五、 總結

Template 類似於函數,用於參數申明和參數引用, 從而可以提高撰寫Grammar的效率。

Template 定義體包含參數和語法定義兩部分,參數表明裡面的內容是聲明的參數[=參數1,參數2,…=],其中「[=」和「=]」是保留字符。

語法定義為任意符合語法規則的語法,其中對參數的引用使用「$」符號開頭,並用「()」將參數括起來,比如「$(參數1)」。

Template含有未確定的參數,可以通過Grammar和Rule 引用Template,並向其傳遞參數.

Template可以引用Template、Rule和 slot,可以被 Template、Grammar、Rule和 slot 引用。


以上是 Template 的撰寫這節課的全部內容,感謝您的關注!



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