根据对话状态寻求额外信息时处理LUIS意图的正确方法是什么?

时间:2018-10-23 01:54:01

标签: c# botframework luis

使用Microsoft Bot Framework,我有一个LUIS意图,它需要某些信息,例如位置等。

如果用户发送的消息具有正确的意图,但缺少信息,但需要澄清,那么处理此问题的最佳方法是什么?

例如,如果用户发送诸如“ Springfield中有什么?”之类的消息。该漫游器将无法确定用户要询问的城市(许多同名城市但州名不同的城市)。

该机器人可以确定存在多个匹配项,并且仅要求用户使用所有必需的信息来重复该请求(这使得每个请求基本上是无状态且不智能的),但是看起来它可以理想地记住状态并询问“哪一个州?”或“您是说密苏里州还是伊利诺伊州?”

当然,问题在于,如果用户仅以状态做出响应,那么当第二条消息进入时,该意图将是什么?

它的意图仅仅是对状态的直接回答吗?只是为了从用户那里获得特定答案,这似乎有点奇怪(并且对于每种特定答案类型都必须重复)。

还是机器人应该只是忽略第二个意图,并使用对话历史记录来尝试找出它是一个州名?这似乎是一种糟糕的做法,浪费了对LUIS的呼叫。

我认为对话应该是什么样的,但是我不知道架构应该是什么:

user: What do you have in Springfield?
<hits "stuff" intent>

bot: Did you mean Springfield in Missouri, or Springfield in Illinois?

user: I meant Illinois.
<what intent could this be?>

bot: Great, we have _______.

2 个答案:

答案 0 :(得分:0)

您是否知道根据机器人的功能您希望从用户那里得到什么数据?是导游机器人吗?如果是这样,当您使用表单流从用户第一手收集数据时,也许会更好些

答案 1 :(得分:0)

这不一定是意图。我会采用类似的逻辑:

  

无论意图如何,都在响应中查找位置实体。   如果存在,请使用它,并忽略LUIS返回的任何意图。

取决于您的实体,如果期望它们使用其他有效短语,那么您可能会决定

  

看看从LUIS返回的置信度得分,并且只有在   高,请使用返回的意图。否则,请使用实体值并假定他们正在回答您的问题。

这样,如果有人说“实际上我想预订飞往伊利诺伊州的航班”,那么他们就不会卡住-your confidence threshold应该比您不使用时要高得多期望有一个特定的响应,因为在这种情况下有人说的可能性较低。