使用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 _______.
答案 0 :(得分:0)
您是否知道根据机器人的功能您希望从用户那里得到什么数据?是导游机器人吗?如果是这样,当您使用表单流从用户第一手收集数据时,也许会更好些
答案 1 :(得分:0)
这不一定是意图。我会采用类似的逻辑:
无论意图如何,都在响应中查找位置实体。 如果存在,请使用它,并忽略LUIS返回的任何意图。
取决于您的实体,如果期望它们使用其他有效短语,那么您可能会决定
看看从LUIS返回的置信度得分,并且只有在 高,请使用返回的意图。否则,请使用实体值并假定他们正在回答您的问题。
这样,如果有人说“实际上我想预订飞往伊利诺伊州的航班”,那么他们就不会卡住-your confidence threshold应该比您不使用时要高得多期望有一个特定的响应,因为在这种情况下有人说的可能性较低。