对话模型中的模糊回答

对话模型在进行槽位追问、意图确认时,DuerOS能够准确的理解用户在当前交互中处于的位置,并记录用户在对话中的位置信息,利用所在位置上下文信息来处理用户的模糊回答。本文介绍DuerOS处理对话模型中模糊回答的场景。

什么是模糊回答

在用户与技能的交互过程中,用户经常使用“好的”、“是的”、“确认”、“不是”、“否”等词语来回答技能的提问,如果不考虑当时对话场景,技能不知道用户在回答什么问题,这些类似的回答被称为“模糊回答”。

例如,在一个技能对话中,用户使用“确认/是的”可能是在回答以下问题。

  • 可能是对槽位确认的回答。
  • 可能是对意图确认的回答。
  • 可能是回答类似布尔类型值的槽位追问。
  • 可能是针对意图对话之外的问题的回答,此时会触发系统的确认意图。

用户:我想订一杯咖啡
技能:好的,需要加糖吗
用户:不需要(槽位追问)
技能:好的,已经帮你下单,请问还需要点一些别的吗
用户:不需要 (在上述对话之外,触发取消意图)

上述咖啡示例中,用户回答中包含两次模糊回答。用户第一次回答“不需要”,DuerOS解析该回答是针对“糖”这个布尔类型的槽位的追问的回答,会向技能发送IntentRequest请求并携带“糖”的槽位信息的值“不需要”。用户第二次回答“不需要”,DuerOS解析用户的回答与订咖啡意图无关,该回答触发了系统的取消意图,所以将取消意图发送给技能。

系统意图和模糊回答

技能引用系统意图时会产生模糊回答,如引用确认意图取消意图来处理某次意图对话之外的模糊回答(肯定回答和否定回答)。当用户的回答不在某个意图中时,DuerOS会向技能发送确认意图或取消意图。

用户:我想订一杯无糖咖啡
技能:好的,已经帮你下单,请问还需要点一些蛋糕吗
用户:不需要 (在上述对话之外,触发取消意图)

如上述订咖啡的技能,当技能完成用户点咖啡的意图后,询问用户是否需要蛋糕,用户回答不需要时,用户的回答不在对话内,DuerOS会发送取消意图给技能,技能收到取消意图后,进行相应的处理。

必填槽位追问发生的模糊回答

槽位追问时发生的模糊回答包含两种情况,一种情况是使用类似布尔值的槽位,一种是用户的回答很简短。

布尔值类型槽位的追问

在某些技能完成意图过程中,需要使用用户回答的肯定或否定答复。这种情况下,意图没有改变,所以不能使用系统意图中的确认意图和取消意图。在这种情况下,通常可以定义一个类似布尔值类型的槽位,并创建该槽位值对应的词典(词条:“确认”、“是”、“好的”,“取消”、“不是”,“不需要”、“否”等等)。通过填充槽位值,来获取所需要的布尔类型值。

用户:我想订一杯咖啡
技能:好的,需要加糖吗
用户:不需要(槽位追问)
技能:好的,已经帮你下单

在上面订咖啡的技能中,当技能追问用户是否加糖时,用户回答不需要,DuerOS会识别用户的回答,分析对话进行的位置,将“不需要”解析到对应的意图的槽位信息中,并向技能发送IntentRequest消息。

简短回答

在技能进行槽位追问的过程中,用户回答可能比较简单。如果不考虑对话场景,技能无法处理。这种情况下,DuerOS会根据对话模型的上下文,准确的分析用户的回答,向技能发出准确的请求消息。

用户:我想订一张火车票
技能:好的,你从哪里出发
用户:北京 (用户的简短回答)
技能:你要到哪里去
用户:天津 (用户的简短回答)

在上面订火车票的示例中,技能在回答出发城市和目的城市信息时,都使用了简短的回答,只包含一个槽位值。出发城市和目的城市都是使用的同一个城市词典,DuerOS结合上下文场景,准确的分析出“北京”、“天津”对应出发城市和目的城市,并向技能发送包含“北京”、“天津”槽位值的消息。

相关主题

对话模型