olami开放平台语法(grammar)编写简介

olami开发平台网址:https://cn.olami.ai/open/website/home/home_show
下面简单介绍下怎么在olami开放平台编写语法。

1.登录主页注册账户后,需要创建应用
这里写图片描述

2.创建应用如下图所示,填写名称,选择应用的类型,填写应用描述

这里写图片描述

3.应用创建好后,如下图所示,可以点击查看key,会有弹出窗口显示appkey,secret等信息,在olami sdk初始化的时候需要用到这几个信息。

这里写图片描述

点击NLI系统,进入grammar编写界面。

4.如下图所示点击进入模块

这里写图片描述

还可以导入系统的模块,点击上图右上角红圈位置button。

5.NLI系统编辑界面如下

这里写图片描述

上面画红线的点击,可以选择编辑grammar,rule ,slot,
如右侧红圈所示,点击可以新增grammar的编写。

6.grammar的编写界面

左侧“?”的红圈点击可以看到编写示范提示

这里写图片描述

右侧红圈点击展开如下所示:

这里写图片描述

可以在编辑grammar的同时,添加rule和slot等,这样更方便。

7.编写slot
这里写图片描述

上图添加一个songname的slot,类型选择ext表示可以是任何字符串,还可以限定长度。

8.编写rule
这里写图片描述

9.编写grammar
这里写图片描述
10.发布grammar
这里写图片描述

这里写图片描述

11.测试grammar

这里写图片描述

12.测试结果页面

这里写图片描述
13.简述一个包含rule,slot的语法
如步骤9种图所示
名称是:play_song
内容是:
这里写图片描述

want_to_listen是一个rule,其内容是:
这里写图片描述

“[]”内表示可以有,也可以去掉
“()“内的内容是有的,而中间加入了”|“表示或者的关系,即使两者或者多者中选一,比如上面的内容可以匹配的语句有:我想听,我要听,我想播放,我要播放,想听,想播放,要听,要播放等等。

songname 是一个slot,由于这个slot建立的时候,选择的是ext,表示任意字符串,那么这个songname可以匹配任何字符串。
songname后面的“[ ]”内又有一些词,但由于是在空括号内,所以可以存在,也可以不存在。所以上面的这个语法匹配的说法有:我想听三国演义,播放三国演义,我想听三国演义这本书,我要听三国演义这本书等等。

最后面有个“{@=play}”,这个是一个modifier,表示定义了这个语法的动作行为,这个语法编辑好后,比如测试的时候说我要听三国演义,那么返回的json字符串如下:

{
    "data": {
        "asr": {
            "result": "我要听三国演义",
            "speech_status": 0,
            "final": true,
            "status": 0
        },
        "nli": [
            {
                "desc_obj": {
                    "result": "正在努力搜索中,请稍等",
                    "status": 0
                },
                "semantic": [
                    {
                        "app": "musiccontrol",
                        "input": "我要听三国演义",
                        "slots": [
                            {
                                "name": "songname",
                                "value": "三国演义" }
                        ],
                        "modifier": [
                            "play"
                        ],
                        "customer": "58df512384ae11f0bb7b487e"
                    }
                ],
                "type": "musiccontrol"
            }
        ]
    },
    "status": "ok"
}

从上面可以看到json中,有定义的slot,rule是songname匹配了三国演义这个词,modifier是play,表示要求播放。type是app名称,这里代表musiccotrol这个app。解析这个json比较容易,关键在于语法的编写。
详细语法编写可以参考官方相关网页:https://cn.olami.ai/wiki/?mp=nli&content=nli2.html

猜你喜欢

转载自blog.csdn.net/ls0609/article/details/71624340