QnA 机器人仅在 Azure 和 Teams Chat 中使用准确的措辞时才会响应

QnA bot only responds when using exact phrasing in Azure and Teams Chat

我在 Microsoft QnA Maker 中创建了一个机器人,现在已经在 Maker 中测试 QnA 对一段时间了。即使问题中使用了其他词,机器人也能够识别我制作的 QnA 对。但是,在 Azure Test Chat 和 Teams Chat 中引入该机器人并对其进行测试后,我发现该机器人仅在使用确切的问题短语时才会做出适当的响应。

机器人有一对 QnA,问题是 "hello"。在 QnA Maker Test 中,如果我向它发送此问题的变体,例如 "hello wicky" 或 "hello there",则机器人会识别出这对问题并以适当的答案进行响应。在 Azure 和 Teams 中进行测试时,如果我说 "hello",机器人只会做出适当的响应。如果我说任何变体,那么它只会响应 "No good match in FAQ."

在 QnA Maker 中测试时,我的机器人在回答包含其他单词但不是确切问题的问题时从未遇到过问题。它似乎只是在 Azure 和 Teams 中进行测试时才挑剔。我已多次重新发布该机器人,并确保知识库 ID 和订阅密钥正确无误。我在这里有什么选择?

Screenshot of the Azure Test Chat

这里有一些东西要检查。如果您正在使用机器人服务的起始代码,您可能会从 QnAMakerDialog 继承一个对话框。构造函数采用多个参数,包括在没有良好匹配时向 return 发送的消息,以及何时向 return 无良好匹配文本的最低置信度分数。例如,这是我的 class 的构造函数,它继承自 QnAMakerDialog:

 public BasicQnAMakerDialog() : base(new QnAMakerService(new QnAMakerAttribute(Utils.GetAppSetting("QnASubscriptionKey"), Utils.GetAppSetting("QnAKnowledgebaseId"), "No good match in FAQ.", 0.5)))
        {}

请注意,"No good match" 文本实际上设置为 "No good match in FAQ",并且最小置信度分数为 0.5。

如果您查看 QnAMaker 测试聊天,您应该会看到 return 随消息一起显示的置信度得分。您可以尝试降低最低置信度分数以防止收到不合适的匹配消息。

改进您的机器人

您可以在 QnAMaker 中为您的机器人的问题添加替代短语,然后重新训练并发布模型。清洗、冲洗、重复。您还可以尝试记录 QnAMaker return 的置信度分数低于阈值的问题。这将为您的用户询问您的机器人没有很好答案的问题提供一个起点。

根据您的知识领域,您也可以尝试搜索网络并总结最重要的结果,然后 return 将其发送给用户,而不仅仅是 "No good match found." 这就是 Siri 在以下情况下所做的事情它变干了,这似乎是我问的几乎所有问题的情况。