我目前正在使用聊天机器人,该聊天机器人在与用户的整个对话过程中都使用确认提示。它用于简单的是/否问题,但其中大多数问题也可以用不同的句子来回答,例如:
“这是正确的产品吗?”
[当我使用确认提示时,前两个选项可以正常工作,但是当有人说“那是正确的产品”时,确认提示不会将其识别为有效输入。我已经研究过使用custom validators了,但是如果您想验证可识别的输入,那似乎很有用,没有什么办法可以扩展可识别的输入本身。
有没有一种方法可以扩展这些提示的可能的有效输入?例如通过使用LUIS?
提前感谢。
您的漫游器正在发生的事情是,它基本上是在同一件事上看到前两个响应的“是”部分,而忽略了第二个响应的其余部分。之所以没有看到您的第三个响应,是因为它不是以“ yes”开头。话虽这么说,您有两个选择:
OPTION 1:可以使用“选择提示”代替使用“确认提示”。 ChoicePrompt具有“同义词”属性,您可以在构建选择提示时设置该属性:
return await step.prompt(CHOICE_PROMPT, {
prompt: 'Please enter your mode of transport.',
choices: ChoiceFactory.toChoices([
{value:"my vehicle", synonyms:["car", "truck"]},
{value:"public transporation", synonyms:["bus", "shuttle"]},
{value: "slowly", synonyms:["walk", "bicycle"]}],
)
})
正如您在这里看到的,它为用户可能输入的内容留出了一些摆动的空间。
OPTION 2:如果您认为您的用户只会在聊天机器人的提示中输入非常有限的响应,那么就可以使用同义词路由。如果您想扩展客户对此类问题的反应方式,那么实际上您将需要某种语言模型。正如您在问题中所提出的,LUIS将是您的选择。
对于像确认这样简单的事情,您只需添加人们可能说的作为确认的可能选项。您可以在下面的模型中看到,我有5页可能的语音内容可以作为确认发送:
此特定意图仅使用我认为的“常用短语”,因此,我基本上已经添加了我认为用户可以确认的方式的每个选项。
另外(这超出了您的问题范围,但是信息很好)LUIS和其他语言理解服务也允许使用所谓的“实体”,因此您可以发表部分言论,并将其余的标记为实体,允许来自用户的响应有所不同。以下是Bot Framework Core Bot示例中“预定飞行”意图的屏幕截图:
如您所见,这个意图带有标签“实体”“机场”和“ DateTime”,这样一来,人们就可以进一步说出“我预订飞往XYZ的航班”,而不必担心每单以他们的模型在世界上可能的机场。
当您扩展聊天机器人时,使用LUIS之类的语言理解服务将使您与客户/用户进行更自然的对话。祝您的漫游器好运!
我对这些验证器了解不多,因为我只用C#编写机器人,但是我猜它们是更具体的,例如,确认一个数字是实数-我当然认为LUIS是实现去这里。
不要忘记,通过查看人们在说什么并确保它与正确的意图相匹配,您可以在LUIS UI中随着时间的流逝轻松地增加词汇量。实际上,我建议您在您的应用中设置遥测,以使其在任何时候都无法识别出任何东西时发出警报,以便在发生“故障”后可以非常迅速地对其进行培训。
为说明起见,您包括了上面提供的这3个示例,但是用户在一周的时间内尝试了另一个您从未想到的示例-您会从应用中收到警报,登录到LUIS UI并进行处理新条目,从那时起,它就是词汇表的一部分,而无需重新部署应用程序的全新版本。
因此,长话短说,这更适合LUIS,而这正是它的设计目的。