一个意图的定位过程,可以进行单轮或者多轮的对话其中一个完整的意图可包含下列几个部分: 1. 用户话术 2. 语义槽

用户话术

用户描述用于识别用户说出什么样子的话术会进入到该意图当中去,因为利用算法支持了语义的泛化能力,所以无需配置说法差不多相似的用户描述。

相似的表达方式,比如:我要买火车票买火车票买一张火车票

不同表达的方式,比如:我要买火车票我要坐火车出行坐火车到xx去玩

高级语义配置

这里的填写规范用到了 LGF

最佳实践

首先从最简单的LGF表达开始,逐步深入复杂的LGF表示,在这一部分先仅仅考虑LGF勾选“严格匹配“的情况,在最后再解释不勾选“严格匹配“会带来的变化和增强

最简单的LGF

最简单的LGF就是普通的文本,比如下面的“今天的北京天气“,在勾选严格匹配的情况下,这个LGF表达仅仅能匹配一个输入,也就是原封不动的“今天的北京天气“今天的北京天气

可选部分

使用“[]“可以标明,文本中的某个部分是可有可无的,比如下面的“的“,在这样的LGF表达下,能匹配两个输入,“今天北京天气“和“今天北京的天气“今天北京[的]天气我们可以在不同的地方加入可选标记,能让句子的表达能力翻倍(x2),比如下面的表达就能匹配4个输入今天北京[的]天气[预报]

逻辑或

使用“|“可以表达某个部分“逻辑或关系“,比如下面的时间部分,可以表达3个时间中的任意一个,使得总共可以匹配的输入数量扩展到了12(xn,n表示候选的个数)需要注意的是,使用“|“的时候为了避免表达歧义,建议使用“()“做隔离表达,如下所示:(今天|明天|后天)北京[的]天气[预报]除了可以使用“()“来隔离外,如果逻辑或部分同时也是可选部分,那么使用“[]“也能形成天然的隔离,如下所示:(今天|明天|后天)北京[的]天气[预报|情况|状况]

参数表达

以上的例子都属于LGF的文本表达,但是在Dialog Studio构建对话的过程中,会有很多的参数填充,比如上述的天气的例子,需要知道“时间“和“地点“2个参数在LGF中可以使用”${}”引用具体的参数(注意:是参数名,而不是来源名词),那么如下表达就能命中非常多具体表达如:“明天杭州的天气情况“,“2号广州天气“,“大后天深圳天气状况“等等${date}${city}[的]天气[预报|情况|状况]

通配符泛化

LGF的“可选部分“/“逻辑或“等手段都是对表达能力的一种增强,但在一些应用中仍无法满足泛化能力的需求,比如下面的表达中,开发者想覆盖更多的多样的前后缀(注意:这里的前提是仍勾选“严格匹配“)[请问|查下|告诉我]${date}${city}[的]天气[预报|情况|状况][如何|怎么样|好不好]为了对应这样的需求,LGF也支持通配符,表示方式是“.{下限,上限}“,例子如下:.{0,3}${date}${city}[的]天气[预报|情况|状况].{0,3}比如“.{0,3}“表示能匹配0个(没有)到3个任意字符(UTF字符,中文字算一个),上述的表述方式能兼容一些前后缀的情况但是,切记这样的泛化是很不可控的,很可能兼容了一些问题确引入更多的问题,如果用到类似的需求,请优先不勾选“严格匹配“

相似度泛化

如果觉得通配符泛化过于“粗糙“,那么可以尝试使用相似度泛化,使用方法是不勾选“严格匹配“如果没有勾选“严格匹配“那么,LGF语法会使用“相似度“方法进行泛化,比如“我要点份外卖“,“帮我点个外卖“,“外卖帮我点一份“等

元素说明

效验规则和提示信息

在用户编辑保存LGF规则时,系统检查语法规则,给予提示,分为两类:

  • 错误,指语法错误,引用实体不存在,或对于应用效果来说可能存在非常大的伤害(不能保存)
  • 警告,语法允许,但是没有遵循最佳实践(可以保存)错误提示如下:

语义槽推荐

通过设置语义槽,使机器人能够识别用户话术中的关键信息,更好地理解用户意图。

系统可以自动对话术中的语义槽,进行自动推荐。用户可以点选推荐的语义槽,并进行编辑。

语义槽标注

上面的用户话术中,并没有含有下面的词槽的参数,现在我们试一下加入这些参数,然后利用划词的方式快速帮助我们完成任务。

例如:我要买明天从杭州到北京的火车票

这时我们可以看到,下面的词槽中,不同的参数列表中的“来源名称”列的值变成了我们刚刚划取的值。如果多个划词标注对应在同一个参数上,我们可以通过选中词槽的方式来进行合并。

小提示:划词可以帮您快速的完成词槽的生成,还可以准确的提取样句中的关键词。

例如:我要买从北京到杭州的火车票

在这句话中,北京和杭州都是中国的城市,如果您直接说”北京”或者”杭州”,是没有办法直接识别哪个是出发地哪个是目的地。所以利用划词标注,我们可以根据用户描述中的样例说法找到发出地和目的地。

并且如果标注了北京和杭州分别是出发地和目的地,那么您有相似的说法是从天津出发到广州玩玩我们依旧可以识别到“天津”和“广州”是对应的参数

删除划词标注

删除已经标注好的某一个划词,可以直接选中划词后点击上方出现的‘移除标记’。

若删除已经标注好的某一类划词,删除该参数,所有和该参数有关的划词也都会消失。