语料是定义在意图中,帮助平台判断是否进入意图的语义规则。用户在与技能交互时,需要命中语料才能够进入意图,否则会跳出技能。语料没有命中的原因可能是:
- 用户的表达方式没有定义相应的语料。
- 用户的表达方式符合意图的语料规则,但用户所说的关键词不在参数关联的实体内。
开发者在设置语料时需要尽量遵守以下规范:
- 多个意图中的语料不可重复。就是一句话不能同时命中两个意图中的语料,否则会出现进入意图错误的情况。
- 语料尽可能简洁明了。在语料中只将必要的关键词部分标注参数,不要将语料泛化的部分也设置成参数。因为这样做会造成语料模型过于复杂,在技能上线时可能会出现语料模型解析失败,导致这些语料没有生效。
- 语料需要覆盖用户常用的表达。如果用户的某句正常的表述没有覆盖到,则会出现无法进入技能的情况发生,影响用户的体验。
- 语料不需要重复定义。例如定义了两条语料:“杭州今天天气”和“上海今天天气”,其中“杭州”和“上海”都标注了同一个实体,那么这两条语料的语义规则是完全相同的,也就是这两条语料的作用是相同的,只需要定义一条即可。
语料的分类
按语料的作用分
- 单轮对话表达:无论是否在本意图中,都应该识别为本意图的语料。所以单轮对话表达不可与其它意图中的单轮对话表达重复。
- 多轮对话表达:只有在本意图中对话时才能识别为本意图的语料。这些句子单独看是无法判断意图的,但是放在上下文中,就具备了明确的意义。详情请参考文档【上下文】。
- 用户可能回复:在用户面对参数追问时(无论是后台返回的参数追问,还是参数必选的精灵追问)。用户在回答时可能的表述方式。例如天气查询意图追问城市参数时,用户可能回答“北京”,也可能回答“我想查询北京的”。前面的回答平台可以直接抽取到 city 参数,后面的回答就需要开发者配置 用户可能的回复。这里只支持配置 模板式语料。
按绑定参数的方式分
语料分为两种类型:例句式语料 和 模板式语料。这两种语料在不绑定参数时作用是一致的,都需要用户所说的话完全匹配语料中的文字,才能别识别为这条语料。如果想要语料中的关键词可以由某个实体的实体值动态替换,则需要给语料绑定参数,这两种类型的语料绑定参数的方法是不同的。
- 例句式语料:添加一条语料,然后划词选中语料中的关键词,绑定相应的参数。
- 模板式语料:语料关键词使用 @{参数名称} 进行占位。
PS: 在使用例句式语料绑定参数时,标注的词语会自动加入到参数关联的实体中。
语料的配置
单轮对话表达和多轮对话表达既可以配置例句式语料也可以配置模板式语料。
而用户可能回复只能配置模板式语料。
例句式语料
先在意图的 单轮对话表达 中,语料输入用户常用的表达语句(默认是例句式),回车完成输入。如下图所示:
鼠标选中词语“杭州”,在弹出框中选择标注“city”实体。鼠标选中词语“今天”,在弹出框中选择标注“sys.date(公共实体)”实体。平台会自动创建两个参数:city、sys.date(公共实体)。如下图所示:
可以看到其他语料中有“杭州”和“今天”这两个词语,平台会自动将这两个词语标注,不需要每条语料都去标注一次,简化开发工作量。
模板式语料
需要先手动创建参数,然后在语料中使用 @{参数名称} 替代原本的关键字。如下图所示:
语料批量导入
1. 点击“批量导入”按钮
2. 在弹框内先下载文件模板,并在模板内填充语料内容
规则解释:
- A列填写语料内容;
- B1为第一个参数的参数名,C1为第二个参数的参数名;
- 如果语料中不需要标注任何关键字,如A4,则参数下不需要标注;
- 如果是模板式语料,如A3,则参数下不需要标注关键字;
- 如果是例句式语料,如A2和A5,则参数下需要标注将对应关键字。