语音交互模型规范化的意义:在创建语音交互模型的时候,要根据技能的对话流程清晰的划分意图功能,正确的配置意图语料,合理的填充实体内容。

不规范的语音交互模型会出现:意图功能混杂,导致后台逻辑不易处理;语料配置重复,出现很多无效语料;多意图语料重复,导致用户正常表达进入错误意图;实体值填充混乱,导致用户不合理的表达也能进入意图。

一、清晰意图的划分

清晰的意图划分,可以使意图的后台逻辑更加简洁。关于意图的详细介绍请参考文档【意图】。

1、意图的概念

意图是技能中某一个功能的载体,一个技能中的意图要有一个明确的功能,并且这个功能不可以与此技能下其他意图的功能重复。

每一个语音交互技能都是由一个或多个功能组成,所以一个技能中可以包含一个或多个意图。

  • 对于某些语音交互技能而言,虽然有多个意图,但每意图的功能都是独立的,这种技能就属于简单的多轮对话技能。例如文档中的天气查询的技能,它包含了两个意图,但每个意图都可以单独使用。
  • 对于一些交互比较复杂的语音技能,需要由多个意图组合才能实现设计的功能。例如竞赛答题技能。

默认意图是一个比较特殊的意图。如果技能有调用词,则技能必须要有一个默认意图。默认意图代表了用户只使用调用词进入技能时访问的意图。对于一般的意图,必须设置语料,只有当用户说出意图的语料时才能进入这个意图。如果普通意图没有语料,则用户无法进入这个意图。但默认意图可以不设置语料,因为默认意图可以不依赖语料进入。

默认意图有两种使用方法:

  • 一、当做欢迎意图使用,这样默认意图就不需要语料。当用户通过调用词进入默认意图时,就可以通过意图的回复内容引导用户如何使用这个技能。
  • 二、当做某个功能意图使用,这时候就需要配置功能相关的语料。例如例如文档中的天气查询的技能,就将天气查询意图当做默认意图。即使用户通过调用词进入技能时没有跟任何语料,也默认用户使用的是天气查询功能。

2、意图的划分

意图划分的结果不是唯一的。根据划分功能的粒度不同,会出现不同的划分结果。例如电视机控制技能,可以粗略的划分为:开关机、选台意图、音量调整 等意图。也可以详细的划分成:开关机、上/下 @{num}台、播放第@{num}台、播放@{TV}台、音量调到@{num}、音量 增加/减少@{num} 等意图。一般来说,功能粒度划分的越细,意图也就越多,意图的功能也就更精确,意图的后台逻辑也就越简单。

对于简单的多轮对话,意图划分是比较清晰的。由于多个功能之间比较独立,可以单独使用,即可将每个功能划分一个意图即可。然后可以添加一个默认意图作为欢迎意图,也可以选择其中一个意图作为默认意图。

对于复杂的多轮对话,意图划分的难度会比较高。例如竞赛答题技能,对话流程图如下:
1594717631368-43c8dbac-013d-4cfd-bbc5-0d903885e7ca.png
根据竞赛答题的对话流程,从对话流程中拆分出必要的功能。如下:

  • 默认意图:欢迎并播放第一个题目;
  • 重述题目意图:如果用户没有听清题目,可以要求重新播放一遍题目;
  • 跳过本题意图:如果用户不知道此题答案,可以要求跳过此题,播放下一题题目;
  • 结束答题意图:如果用户想结束答题,可以结束答题并播报用户获得的分数;
  • 答案回答意图:用户回答题目答案,判断答案是否正确,如果正确则累积分数并播放下一题;如果错误,播放正确答案并播放下一题。

二、正确的配置意图语料

1、语料的概念

语料是进入意图的语义规则,即需要用户所说的话匹配到语料才能进入这个意图。关于语料的详细介绍请参考文档【语料】。

在设置任何语料的时候,都要反推一下:如果当用户说这句话的时候,能否确定用户需要的服务,就是你这个意图所提供的功能。这是设置语料时的基本要求。

2、语料的规范化配置

在定义语料时最大的规范性问题是语料重复定义,其次是使用了很多的泛化词参数来泛化语料。

  • 为了防止语料重复性创建的问题,推荐使用模板式语料,或者多条语料中同一个参数使用同一个词语绑定。如下所示:

1594796225674-c0d04bd8-ad06-4557-a318-eb05fcdc2f62.png
1594796509746-ee36057b-5f77-47cf-aa18-4260144c0ea2.png
上面这两条语料是重复的,我们将这两条语料转换成模板式语料大家就清楚了。如下:
1594796634067-16122cbf-1ff0-440a-885b-cec4b265097d.png

  • 使用泛化词参数泛化语料是可以的,但不推荐过多的使用。在语料中添加泛化词参数,可能会导致语料模型过于复杂,平台语料解析失败,从而使的解析失败的语料失效。一般情况下尽量不要使用泛化词参数,而是直接把泛化词写在语料里。如果泛化词较多,则可以在语料中使用泛化词参数,但一句语料里最好不要超过一个。


三、合理的填充实体值

1、实体的概念

实体是一个规范的自然语言短语集合。在同一个实体内的实体值应该具有相同的属性,并且这个属性要体现到实体名称上,方便实体的后续使用。关于实体的详细介绍请参考文档【实体】。

实体的作用是给意图中的参数提供一个词典,同时实体值的内容也决定了这个参数的取值范围。

2、合理的设置实体值

实体值应该根据实体的名称来配置,避免加入了不相关的实体值;实体值中最好不要出现英文字母;ASR识别的数字结果是中文数字,一般情况下的实体值或同义词中不要出现阿拉伯数字。

注:实体值是可以设置阿拉伯数字的,这需要在同义词中设置可匹配的词语。匹配到同义词后,实体值也会被当做归一化值传递,某些情况下可以方便后台逻辑处理。