视频教程 > NLI管理系统

常见语法错误及解决方法

olami     2017-08-14 11:42




以下是视频内容文字版:

大家好,欢迎观看欧拉蜜系列教程视频。今天要介绍的内容是常见的一些语法错误以及对应的解决方法。

 在我们编辑 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 管理系统里实际操作一下。

登录欧拉蜜开放平台,进入 NLI 管理系统,选择一个模块进入。接下来分别演示三种不可自动修复的语法错误。

1、第一种是编写错误。我们先来新增刚才那条关于<吃苹果>的 grammar 。

名称:吃苹果

内容:我[很|非常]<like>吃苹果<{@=eat>

例句:我非常喜欢吃苹果

点击提交,可以发现系统提示:编译错误,modifier:“<{@=eat>”少了一个符号,点击关闭,直接在编辑框内修改 modifier 为“<{@=eat}>”。 修改好之后,再次点击提交即可。

2、第二种情况是新增 grammar 和新增语料互相不匹配。

同样的,把刚才那条名为<听歌>的 grammar 编辑进系统里,点击提交可以发现系统提示:提交失败。语料和 grammar 互相不匹配。我们就可以把语料修改为:“我要听流行歌”。再次点击提交即可。

3、第三种情况就是当我们在删除例句的时候,如果这一条 grammar 只有一个例句,当我们要删除的时候,系统就会提示。就比如刚才那一条名为<吃苹果>的 grammar ,因为我们只为它添加了一条语料:“我非常喜欢吃苹果”。

所以当我们点击删除的时候,可以发现系统就会提示无法删除。

三、可自动修复的语法错误

上面说的是,不可以自动修复的语法错误,那接下来我说一下可以自动修复的语法错误。

我们在编辑语法的时候,因为语法的修改会导致已经提交进去的语料匹配结果发生变化,但是这些语料还有相应的 grammar 可以与他匹配。找个时候,系统就会提示有这个情况发生,并且询问我们是否要提交,这时候如果你觉得新增或者修改的 grammar 更符合你的期望,你不需要再做其他的操作,直接点击提交就可以了。

而我们在日常应用里,常常遇到的情况有以下这三种:

a) 有新的 grammar 能匹配原来的语料
b) 原来匹配这句语料的 grammar 不能再匹配这句语料

c) 原来匹配这句语料的 grammar ,匹配结果里的 slot , modifier 发生变化

 四、NLI 管理系统实际操作

接下来,我们到 NLI 管理系统里实践操作一下。

1、为了节省时间,我们直接修改系统里已有的 grammar:

<grammar>:<open><device>

点击修改,为它添加一条 modifier:<{@=启动}>

输入例句:“打开电视”

然后点击提交,可以看到系统会提示:“以下例句新旧匹配结果不一致,没有 grammar 匹配的语料将会删除”。如果你觉得新的 grammar 更好,那么就点击确定,这一条 grammar 就被添加到系统里了。

2、接着来看第二种情况,还是这条 grammar ,我们为它增加一些新的内容,比如我们加上“请帮我”,那么这条 grammar 的内容就变为:

请帮我<open><device><{@=启动}>

输入例句:“请帮我打开电视”,点击提交,可以看到系统会提示,点击确定,即可提交成功。最后别忘了发布,让它正式生效。

可以看到能够自动修复的语法错误对于我们在实际操作里有很大的帮助,它的内容也比较简单,在这里我就不再演示其他的情况。

以上这些就是这节课的全部内容,感谢大家观看,我们下节课再见。

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