使用 Lex V2 使用意图置信度分数改善意图选择 - Amazon Lex

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Lex V2 使用意图置信度分数改善意图选择

当用户说话时,Amazon Lex V2 会使用自然语言理解 (NLU) 来理解用户的请求并返回正确的意图。默认情况下,Amazon Lex V2 会返回您的机器人定义的最可能的意图。

在某些情况下,Amazon Lex V2 可能难以确定最可能的意图。例如,用户可能会说出模棱两可的言语,或者可能有两个相似的意图。为了帮助确定正确的意图,您可以将您的领域知识与解释列表中的NLU置信度分数相结合。置信度分数是 Amazon Lex V2 提供的评级,表明其对意图是正确意图的置信度。

要确定某个解释内两个意图之间的差异,您可以比较其置信度分数。例如,如果一个意图的置信度分数为 0.95,而另一个意图的置信度分数为 0.65,则第一个意图可能是正确的。但是,如果一个意图的分数为 0.75,而另一个意图的分数为 0.72,则这两个意图之间存在歧义,您可以在应用程序中使用领域知识来区分。

您还可以使用置信度分数来创建测试应用程序,以确定对意图言语的更改是否会影响机器人的行为。例如,您可以使用一组言语来获取机器人意图的置信度分数,然后用新的言语更新意图。然后,您可以查看置信度分数,以确定是否有所改善。

Amazon Lex V2 返回的置信度分数是比较值。请避免将其视作绝对分数进行信任。根据对 Amazon Lex V2 的改进,这些值可能会发生变化。

Amazon Lex V2 会在每个响应中以 interpretations 结构返回最有可能的意图以及最多 4 个替代意图及其相关分数。以下JSON代码显示了RecognizeText操作响应中的interpretations结构:

"interpretations": [ { "intent": { "confirmationState": "string", "name": "string", "slots": { "string" : { "value": { "interpretedValue": "string", "originalValue": "string", "resolvedValues": [ "string" ] } } }, "state": "string" }, "nluConfidence": number } ]

AMAZON.FallbackIntent

在以下两种情况下,Amazon Lex V2 将返回 AMAZON.FallbackIntent 作为首要意图:

  1. 所有可能意图的置信度分数均小于置信度阈值。您可以使用默认阈值,也可以设置您自己的阈值。如果您已配置 AMAZON.KendraSearchIntent,Amazon Lex V2 在这种情况下也会返回该意图。

  2. AMAZON.FallbackIntent 的解释置信度高于所有其他意图的解释置信度。

请注意,Amazon Lex V2 不会显示 AMAZON.FallbackIntent 的置信度分数。

设置和更改置信度阈值

置信度阈值必须是介于 0.00 与 1.00 之间的数字。您可以通过以下方式设置您的机器人中每种语言的阈值:

使用 Amazon Lex V2 控制台

  • 要在使用添加语言向机器人添加语言时设置阈值,可以在可信度分数阈值面板中插入所需的值。

  • 要更新阈值,您可以打开机器人的某个语言的语言详细信息面板,然后在该面板中选择编辑。然后在可信度分数阈值面板中插入所需的值。

使用API操作

  • 要设置阈值,请设置CreateBotLocale操作的nluIntentConfidenceThreshold参数。

  • 要更新置信度阈值,请设置UpdateBotLocale操作的nluIntentConfidenceThreshold参数。

会话管理

要更改 Amazon Lex V2 在与用户对话中使用的意图,您可以使用对话代码挂钩 Lambda 函数中的响应,也可以在自定义应用程序中使用会话APIs管理。

在 Lex V2 机器人中使用 Lambda 函数

当您使用 Lambda 函数时,Amazon Lex V2 会使用包含该函数输入的JSON结构来调用该函数。该JSON结构包含一个名为的字段currentIntent,该字段包含 Amazon Lex V2 已确定为最有可能的用户说话意图的意图。该JSON结构还包括一个alternativeIntents字段,该字段包含最多四个可能满足用户意图的额外意图。每个意图都包含一个名为 nluIntentConfidenceScore 的字段,其中包含 Amazon Lex V2 指定给该意图的置信度分数。

要使用替代意图,您可以在 Lambda 函数的 ConfirmIntentElicitSlot 对话框操作中指定该意图。

有关更多信息,请参阅 整合一个 AWS Lambda 在你的机器人中发挥作用

在 Lex V2 API 机器人中使用会话管理

要使用与当前意图不同的意图,请使用PutSession操作。例如,如果您认为第一个替代意图比 Amazon Lex V2 选择的意图更可取,则可以使用 PutSession 操作来更改意图,以便用户与之交互的下一个意图就是您选择的意图。

有关更多信息,请参阅 了解 Amazon Lex V2 机器人会话