影片教學 > NLI管理系統

常見語法錯誤及解決方法

olami     2017-08-17 08:30

大家好,歡迎觀看OLAMI開放平台系列課程。

今天要介紹的內容是常見的一些語法錯誤以及對應的解決方法。


在編輯 Grammar 的時候,通常會出現兩類語法錯誤:


  • 不可自動修復的語法錯誤
  • 可自動修復的語法錯誤。


一、不可自動修復的語法錯誤

它包括了三種情況:

1、書寫錯誤。

這是我們在編輯 Grammar 的時候,經常會犯的錯誤。比如說運算子的錯漏,或者語法規則的錯誤等等。

看下面這個例子:

我[很|非常]<like>吃蘋果<{@=eat>


這是一條關於吃蘋果的 Grammar ,看起來似乎很正常,但是仔細觀察就能發現,它的 Modifier 少寫了一個符號。


正確的寫法是這樣子:

我[很|非常]<like>吃蘋果<{@=eat}>


當我們在系統裡提交的時候,按照之前的寫法,系統就會提示錯誤。所以撰寫的時候要注意。


2、第二種情況是語料沒有對應的匹配結果,它又有兩種形式:

一是新增的語料和新增 Grammar 不能匹配,可以看右邊的例子:

<聽歌>:我要聽<type>歌
<type>:流行|經典|兒童|搖滾
Corpus:我要聽情歌


我們寫了一句名為<聽歌>的 Grammar ,並且引用了一名為<type>的 Rule ,它可以表示:流行|經典|兒童|搖滾,然而我們寫的語料是:「我要聽情歌」,這樣的話,語料和 Grammar 就不能匹配上,我們就需要自行手動修改。


第二種形式是因為我們對語法內容進行了增刪,導致已經提交的語料沒有可以匹配的 Grammar 。

看這個例子:

<聽歌>:我要聽<type>歌
<type>:流行|經典|兒童
Corpus:我要聽搖滾歌


還是這條名為<聽歌>的 Grammar,我們修改了<聽歌>這一條 Grammar 引用的 Rule ,將「搖滾」去掉。

這個時候,「我要聽搖滾歌」這條原來可以匹配的語料,現在就無法匹配這條 Grammar 了。


3、第三種不可自動修復的語法錯誤是:刪除一條語料後導致匹配該語料的 Grammar 不能匹配語料庫中的任何語料。

因為我們在編輯語法的時候,實行的原則是:一條 Grammar 至少要匹配一條語料。

如果我們只幫這條 Grammar 加了一個例句,當我們刪除了這個例句之後, Grammar 就沒有可以匹配的語料了,這個時候就會出現錯誤。

所以在操作的時候要稍微注意這一點。


二、NLI 管理系統實際操作

接下來我們到 NLI 管理系統裡實際操作一下。

登入OLAMI開放平台,進入 NLI 管理系統,選擇一個模組進入。

接下來分別示範三種不可自動修復的語法錯誤。


1、第一種是編寫錯誤。

我們先來新增剛才那條關於<吃蘋果>的 Grammar 。

Grammar名稱:吃蘋果
Grammar內容:我[很|非常]<like>吃蘋果<{@=eat>
Grammar例句:我非常喜歡吃蘋果


點擊提交,可以發現系統提示:編譯錯誤,Modifier:「<{@=eat>」少了一個符號。

點選關閉,直接在編輯框內修正這個 Modifier 為「<{@=eat}>」。


修改好之後,再次點擊提交即可。


2、第二種情況是新增 Grammar 和新增語料互相不匹配。

同樣的,把剛才那條名為<聽歌>的 Grammar 編輯進系統裡,點擊提交可以發現系統提醒:提交失敗。語料和 Grammar 互相不匹配。

我們可以把語料改成:「我要聽流行歌」。

再次點擊提交即可。


3、第三種情況是發生在當我們在刪除例句時。

如果這一條 Grammar 只有一個例句,在我們要刪除的時候,系統就會提醒。

就比如剛才那一條名為<吃蘋果>的 Grammar ,因為我們只為它添加了一條語料:「我非常喜歡吃蘋果」。

所以當我們點擊刪除的時候,可以發現系統就會提示無法刪除。


三、可自動修復的語法錯誤

上面說的是不可以自動修復的語法錯誤,那接下來我說一下可以自動修復的語法錯誤。

我們在編輯語法的時候,因為語法的修改會導致已經提交進去的語料匹配結果發生變化,但是這些語料還有相應的 Grammar 可以與他匹配。

這個時候,系統就會提示有這個情況發生,並且詢問我們是否要提交,這時候如果你覺得新增或者修改的 Grammar 更符合你的期望,你不需要再做其他的操作,直接點擊提交就可以了。


而我們在平常使用中,常常遇到的情況會有以下這三種:

  • 有新的 Grammar 能匹配原來的語料
  • 原本匹配這句語料的 Grammar 不能再匹配這句語料
  • 原本匹配這句語料的 Grammar ,匹配結果裡的 Slot , Modifier 發生變化


四、NLI 管理系統實際操作

接下來,我們到 NLI 管理系統裡實際操作。

1、為了節省時間,我們直接修改系統裡已有的 Grammar:

<Grammar>:<open><device>


點擊修改,為它添加一條 Modifier:<{@=啟動}>

輸入例句:

打開電視


然後點擊提交,可以看到系統會提示:「以下例句新舊匹配結果不一致,沒有 Grammar 匹配的語料將會刪除」。

如果你覺得新的 Grammar 更好,就直接點選確定,這一條 Grammar 就被添加到系統裡了。


2、接著來看第二種情況,還是這條 Grammar ,我們為它增加一些新的內容,比如加上「請幫我」,那麼這條 Grammar 的內容就變為:

請幫我<open><device><{@=啟動}>


輸入例句:

請幫我打開電視


點擊提交,可以看到系統會提示,點擊確定,即可提交成功。

最後別忘了發佈,讓它正式生效。

可以看到能夠自動修復的語法錯誤其實在實際操作裡非常方便,它的內容也比較簡單,在這裡我就不再示範其他的情況。


以上這些就是這節課的全部內容,感謝大家觀看,我們下節課再見。

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