撰写文法规则
配置语音指令:详细流程说明
3. 如何撰写文法规则?
不同情况下的操作步骤
根据不同文法需求,二次开发者配置内容也有区别,主要分为以下三种情况:
新增APP,给APP的各项功能配置指令:需要新建domain、intent、文法 (其中domain, intent 不能使用大写字母)
已有APP,新增功能,给新增功能配置指令:无需新建domain,需要新建intent、文法
已有APP,已有功能,已有功能扩充语音指令:无需新建domain、intent,需要新建文法
文法创建步骤
- 创建领域domain:NLP配置—场景对话—文法配置—新建领域

2.创建意图intent:NLP配置—场景对话—文法配置—选择需要新增意图intent的领域,点击“进入领域”

进入领域后,点击右上角“新建意图”

3.创建文法:NLP配置—场景对话—文法配置—选择需要配置的领域,点击“进入领域”—选择需要配置的意图,点击“进入意图”

进入意图后,出现以下界面

文法撰写基础知识:了解词条、词典、节点
- 概述:
- 词条组成词典,词典关联节点,节点组成文法,文法支撑意图intent,意图intent组成领域domain
- 颗粒度:词条<词典<节点<文法<意图<领域

- 节点:
- 节点是文法规则的组成单位,多个节点构成一条文法规则
- 一条文法规则设置多个节点,目的是通过节点间的排列组合,支持多样化的语音指令
- 节点查看及配置入口:NLP配置—场景对话—文法配置—进入领域—进入意图

- 节点与词典、词槽slot关联,一个节点通常关联一个词典

- 编辑节点,设置节点重复次数、是否必须出现、是否关联词槽slot,设置不同规则

- 词典:
- 词典通过关联节点生效,词典是多个词条的集合
- 词典配置及查看入口:NLP配置—场景对话—词典配置

- 词条:
- 词条即词语,也可以是单个的字,如“稍稍”“稍微”等,词条是词典的组成单位,一个词典由多个词条组成
- 词条查看及配置入口:NLP配置—场景对话—词典配置—进入词典
- 词条类型分为value值和text值,端上解析时,使用的是value值

文法撰写基础知识:了解召回、误召、漏召
- 召回:query被文法规则兜住,进入了domain、intent、slot,被称为“召回”
- query能进入任何domain、intent、slot,称为query被召回
- 误召:query被文法规则兜住,进入了错误的domain、intent、slot,被称为“误召”
- 例如,“我想听陈粒的歌”,是一句音乐领域的query,但是被视频领域的规则兜住了,进入了domain:video,则称为“误召”
- 漏召:query应该进入domain、intent、slot,但实际上进入了other,被称为“漏召”
- 例如,“我想听陈粒的歌”,理论上应该进入音乐领域,但由于文法规则未覆盖这样的query,这句query进入了other,则称为“漏召”
- 召回率:被召回的query数/总query数
开始撰写文法:“我想听陈粒的歌”
- 配置方法分为两种,一种用于配置测试demo指令(5条以下),一种用于配置正式开发的指令
- 用于配置测试demo指令的方法简单方便,但不利于后期扩充。用于配置正式开发指令的方法较为复杂,但后期易于扩充和维护
配置测试demo指令:
- 如果只需配置数量较少的指令用于测试(5条以下),步骤分为:输入明文——保存
- 在文法编辑框直接打字输入(这样的方式被称为明文),Enter回车后点击右上角“保存”

保存后,指令“我想听陈粒的歌”进入文法列表

配置正式开发的指令:
配置用于正式开发的指令,步骤分为:拆分指令—创建词典—新增词条—新增节点—添加文法
- 拆分指令:对“我想听陈粒的歌”这句话进行拆分,可以分为“我想”“听”“陈粒”“的”“歌”
- 创建词典:根据这几个拆分的部分,新建词典“【音乐】我想”、“【音乐】听”、“【音乐】歌手名”、“【音乐】的”、“【音乐】歌”
- 词典名称:词典的中文或英文名称,后续可以修改
- 为了便于理解,一般命名为“【领域名】+词典内容”,如“【音乐】我想”
- 词典标识:词典的英文名称,后续不可以修改
- 为了便于理解,一般命名为“领域名+词典内容+词典词性”,如“music_want_verb”
- 类别:用于分类词典,一般为领域名domain
- 为了便于管理,不同领域之间不共用词典,如需使用,新建词典

3.新增词条:新增词典后,点击“进入词典”

进入词典后,可以选择三种导入方式,新建词条、批量导入、批量添加

新建词条:新建单个词条
批量添加:新建多个词条,词条间用回车隔开
批量导入:通过文件形式导入词条,仅支持csv格式
示例:global_willing_please词典的导入文件

4.新增节点:配置完词典后,进入NLP配置—场景对话—文法配置—进入领域—进入意图,点击“+节点”,添加节点

每个词典都需要添加节点,添加完节点的图示如下

设置关联词槽部分,按需新建词槽slot
词槽名为需要获取的关键词类型,例如需要获取的是歌手名,则词槽可以命名为singer

5. 添加文法规则:点击需要的节点,设置节点出现的次数,是否需要关联词槽,创建文法

例如,歌手名是需要取值的词槽,则设置slot

保存文法规则
- 带*号的:非必现节点,例如,“want”和“listen”是非必现节点,query“陈粒的歌”也可以命中
- 不带*号的:必现节点,例如,“singer”“的”“song”是必现节点,query必须包含“陈粒的歌”才能命中
- 绿色的:带词槽的节点
