跳到主要内容
版本:2.0.0

个性化回复

本章将讲解什么是个性化回复,以及如何在技能中配置个性化回复。

基本概念

一般来说,当几个意图相近时,机器人答错的风险便会升高,此时可以通过增加各意图下的相似问数量来优化问答效果。但是,这种较为传统的方式对效果的提升仍然有限,并且需要运营人员投入较多的工作量,效率也比较低。

通过观察,我们可以发现这些意图相近的问询在大多数情况下有着相同的结构,只是问询的主体不一样。

比如,在电商场景中,某种商品有不同的型号,但每个型号都有各自的价格、配置等其他信息介绍。实际场景中,用户经常会针对不同型号商品同一维度的信息进行咨询,比如“型号A多少钱?”,“型号B目前价格是多少?”,“型号C配置详情是什么?”,“型号D配置高不高?”等等。稍微分析整理就可以发现,这些问询完全可以归纳成以下两种结构化提问类型:

1、XX型号的价格是多少钱? 2、XX型号的配置是什么?

其中,“XX型号”就代表着用户提问时具体描述的型号A、型号B、型号C、型号D(以及这四种型号的同义词说法),用户会围绕着这四种型号的产品对其价格、配置等内容进行提问。

在其它场景中,我们也可以发现这种情形,比如在保险问答场景中,用户的提问经常可以被归纳成以下几种结构化类型:

XX保险的投保年龄是多少? XX保险的犹豫期是多少天? XX保险的理赔规则的内容介绍? ……

这些提问的结构性很强,但同一种结构的提问却可能针对完全不同的主题,当机器人问答场景中出现这类问题时,即使相似问很多,仍然无法避免误召回的情况。但是,正是由于它们有着相似的结构特征,而且用于回答这些问题的数据也非常适合被结构化存储,我们便可以使用一种新的方式来优化问答效果,这就是个性化回复

句式

要使用个性化回复,我们先要从那些整体上具有结构性特点的用户问题入手,学会将零散的用户问题升级成为句式

以上述保险场景为例,我们已经从用户的提问中归纳出了结构化的提问类型,要怎么样把它们升级成句式呢?

这时候,就要用到实体词槽了。

  1. 首先,我们可以创建一个“查询保险年龄”的意图,并在意图中配置一个句式作为相似说法,它可以是下面这样(可以在意图配置界面查看句式的撰写规则): {"entity":"保险名称"}的投保年龄是多少?

这里“entity”后面的“保险名称”就是结构化问题围绕的主题,具体可以指保险A、保险B、保险C等等。 create-intent-zh-v1.8

  1. 其次,我们需要为“保险名称”创建一个实体,保险A、保险B、保险C这三种具体保险的名字是实体值。然后,我们再创建一个词槽,把它与保险名称这个实体关联起来。 create-entity-zh-v1.8 create-slot-zh-v1.8

  2. 这样,我们就成功创建了一个句式,不论用户在具体提问时的主语是哪种保险,只要问询符合这个句式结构,都会通过句式命中意图并抽取到保险名称这个实体。并且,机器人会使用抽取的实体值来填槽,为下一步查询答案作准备。

当然,用户也可能用其它的结构来提问,所以我们可以多添加一些句式,使句子结构更加丰富,更好地匹配用户的意图。 add-sentence-pattern-zh-v1.8

使用表格回复

利用句式创建好意图后,我们需要配置答案。由于这些提问的答案具有很强的结构化特征,我们可以将答案数据放在一张表格里进行存储和使用。

  1. 如下,我们已经创建了一张表格,并将一些保险属性信息放进了表格中。 create-table-zh-v1.8

  2. 接下来,创建一个FAQ技能,关联“查询投保年龄”这个意图。 同时,打开“使用表格回复”右侧的开关,开始配置表格回复的规则,也就是指定机器人怎样查询表格来返回正确的答案。 create-skill-zh-v1.8

  3. 定位条件是机器人查表的条件,可以配置多条定位条件,它们之间有三种关系可以选择:“且关系”选项最常用,在定位条件有多行时,需要同时满足所有条件,才能查询表格来返回答案。 比如,在电商场景中,商品可能不仅有型号之分,还有颜色之分,使用“且关系”,可以保证查表条件是型号=xx型号,同时颜色=xx颜色。“或关系”选项则意味着多条定位条件中只需要满足一项即可。而“复合条件关系”选项允许使用自定义脚本来实现更复杂的定位条件配置。

在查询投保年龄的场景中,我们只需要定位保险名称即可,定位条件只有一行,“且关系”与“或关系”都适用。点击“新增定位条件”,选择表格中的首列,即“保险名称”作为定位列名,定位关系选择“等于”,点击右侧空格中的{/},选择我们之前创建的保险名称词槽,这样机器人便可以使用实体抽取的结果去填槽了。

然后,在返回内容中,选择投保年龄,使机器人可以将表格里投保年龄这一列中的具体答案返回给用户。 positioning-condition-zh-v1.8

  1. 最后,我们需要配置FAQ的默认答案。如果开启了表格回答,机器人首先会使用表格中的数据回复用户,但有时候,表格中的数据可能出会现空缺,比如表格中新增了保险D,但它的投保年龄一列的值为空,在这种情况下,机器人查表失败,便会返回FAQ的默认答案。 default-faq-answer-zh-v1.8

  2. 配置完成后,生效该FAQ并训练机器人,我们就可以测试表格回复的效果了。 test-effect-zh-v1.8

可以看到,通过使用表格,我们实现了针对投保年龄的个性化回复,避免了为每个保险名称单独创建FAQ的重复性工作,节省了大量的人力及效率,当然,我们还可以依据实际场景的需求,配置更多的个性化回复。

另外,在实际使用时,随着业务的变化,保险名称很可能会持续增多,但不论有多少种名称,只要它的数据符合表格结构,我们需要做的仅仅是增加实体值,之后在表格中为它配置答案即可。