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

Weight與匹配結果的關係

olami     2017-08-25 13:30



大家好,今天這節課要給大家介紹的是 Weight 和匹配結果的關係。我會從以下這三個部分來講解:


一、Weight 的概念

二、Weight 的計算規則

三、單個模組匹配結果的優先級規則


一、Weight 的概念

在匹配一條語料的時候,系統會先衡量 Grammar 的 Weight,也就是權重,然後輸出 Weight 值最高的 Grammar 匹配結果。


二、Weight 的計算規則

Weight 的計算規則是:

每一條 Grammar 匹配到語料的一個字元就加 5 分,中英文都一樣;

如果這個字元是被 ext 類型的 Slotany 規則或者Skipper 規則匹配到的,就不予記分。

這邊簡單解釋一下:

ext 類型的 Slot是指 Slot 的內容沒有設限;

any 規則表示可以匹配任意字串;

Skipper 規則是語料裡可以忽略的一些特殊符號,通常是標點符號。

而在一般的使用中 any 規則和 skipper 規則使用比較少,這邊先了解 ext 類型的 Slot 即可。


來看個例子:

語料:我要看周星馳的電影
<grammar1>:我要看<actor>的電影

Slot:<actor>  ext (1|1024)

在這條 Grammar 裡<actor>是一個 ext 類型的 Slot,依照規則,它所對應的「周星馳」這三個字是不計分的,

那麼最後這一條 Grammar 能夠匹配上的字元有「我要看」以及「的電影」總共是六個, Weight 也就是30。

即使例句語料換成「我要看克里斯多福諾蘭的電影」,他的Weight也和「我要看周星馳的電影」一樣,都是30。

克里斯多福諾蘭示意圖


三、單個模組中匹配結果的優先級規則

接下來介紹在同一個模組裡,根據 Weight 怎麼來判斷 Grammar 的匹配結果。

它的規則是:同一模組中,會輸出 Weight 最高的 Grammar 匹配結果。

我們透過例子來說明:

<grammar1>:<open><device><{@=啟動}>
<grammar2>:<open><設備>

Rule:<open>:打開|開啟|開|開一下
Rule:<device>:電視|冰箱|燈

Slot:<設備>
ext (1|1024)

在這裡,Grammar 1 裡的 Modifier 只是為了方便我們等一下驗證,如果找到這個Modifier表示匹配到<grammar1>,反之是匹配到<grammar2>。

Modifier對於權重並沒有影響,所以不用太在意。

經過觀察,可以發現它們都能匹配上語料:「打開電視」。

接下來,按照上面介紹的規則,來計算它們各自的 Weight 。

<grammar1>:<open><device>://打開電視  10+10=20
<grammar2>:<open><設備>://打開電視   10+0=10

那麼,根據權重最高的輸出原則,可以知道匹配上語料的是 Grammar1 。

Modifer出現了,表示是<grammar1>被匹配到了


四、總結


在寫Grammar的時候,一般來說不需要另外去關心權重是多少,只需要知道當語料同時匹配多個

Grammar 的時候,優先的順序是怎麼判斷和計算的就可以了。


不過還是要注意一點:如果一條語料同時匹配到了多條 Grammar,系統會根據一定的規則來選擇最佳的輸出結果。

所以為了方便操作、管理,最好依照一條語料只匹配一條 Grammar 的原則來設計 Grammar 。


以上這些就是這節課的全部內容,如有疑問,OLAMI開放平台的線上說明文件也提供了相應的文字說明可以供閱讀瀏覽。

這節課就到這裡,我們下節課再見。



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