如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex V2 指南。
如果您使用的是 Amazon Lex V1,我们建议您将机器人升级到 Amazon Lex V2。我们不再向 V1 添加新功能,强烈建议使用 V2 以获得全新的机器人。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用置信度分数
当用户说话时,Amazon Lex 会使用自然语言理解 (NLU) 来理解用户的请求并返回正确的意图。默认情况下,Amazon Lex 会返回您的机器人定义的最可能的意图。
在某些情况下,Amazon Lex 可能很难确定最可能的意图。例如,用户可能会说出模棱两可的言语,或者可能有两个相似的意图。为了帮助确定正确的意图,您可以将自己的领域知识与替代意图列表的置信度分数相结合。置信度分数是 Amazon Lex 提供的评级,它表明其对意图是正确意图的信心程度。
要确定两个替代意图之间的差异,您可以比较它们的置信度分数。例如,如果一个意图的置信度分数为 0.95,而另一个意图的置信度分数为 0.65,则第一个意图可能是正确的。但是,如果一个意图的分数为 0.75,而另一个意图的分数为 0.72,则这两个意图之间存在歧义,您可以在应用程序中使用领域知识来区分。
您还可以使用置信度分数来创建测试应用程序,以确定对意图言语的更改是否会影响机器人的行为。例如,您可以使用一组言语来获取机器人意图的置信度分数,然后用新的言语更新意图。然后,您可以查看置信度分数,以确定是否有所改善。
Amazon Lex 返回的置信度分数是比较值。请避免将其视作绝对分数进行信任。根据对 Amazon Lex 的改进,这些值可能会发生变化。
当您使用置信度分数时,Amazon Lex 会在每个响应中返回最有可能的意图和最多 4 个替代意图及其相关分数。如果所有置信度分数都低于阈值,Amazon Lex 将包括 AMAZON.FallbackIntent
和/或 AMAZON.KendraSearchIntent
(如果您已配置它们)。您可以使用默认阈值,也可以设置您自己的阈值。
以下 JSON 代码显示了 PostText 操作的响应中的 alternativeIntents
字段。
"alternativeIntents": [ { "intentName": "string", "nluIntentConfidence": { "score": number }, "slots": { "string" : "string" } } ],
设置您创建或更新机器人时的阈值。您可以使用 API 或 Amazon Lex 控制台。对于下面列出的区域,您需要选择加入才能提高准确性和置信度分数。在控制台中,在高级选项部分选择置信度分数。使用 API 时,在调用 PutBot 操作时设置 enableModelImprovements
参数。
-
美国东部(弗吉尼亚北部)(us-east-1)
-
美国西部(俄勒冈)(us-west-2)
-
亚太地区(悉尼)(ap-southeast-2)
-
欧洲(爱尔兰)(eu-west-1)
在所有其他区域中,默认情况下都提供精度改进和置信度分数支持。
要更改置信度阈值,请在控制台中或使用 PutBot 操作进行设置。阈值必须是介于 1.00 和 0.00 之间的数字。
要使用控制台,请在创建或更新机器人时设置置信度阈值。
在创建机器人时设置置信度阈值(控制台)
-
在创建您的机器人上,在置信度分数阈值字段中输入一个值。
更新置信度阈值(控制台)
-
从机器人列表中,选择要更新的机器人。
-
选择 Settings 选项卡。
-
在左侧导航窗格中,选择常规。
-
更新置信度分数阈值字段中的值。
设置或更新置信度阈值 (SDK)
-
设置 PutBot 操作的
nluIntentConfidenceThreshold
参数。以下 JSON 代码显示了正在设置的参数。"nluIntentConfidenceThreshold": 0.75,
会话管理
要更改 Amazon Lex 在与用户对话中使用的意图,您可以使用对话代码挂钩 Lambda 函数中的响应,也可以在自定义应用程序中使用会话管理 API。
使用 Lambda 函数 URL
当您使用 Lambda 函数时,Amazon Lex 会使用包含该函数输入的 JSON 结构对其进行调用。JSON 结构包含一个名为 currentIntent
的字段,该字段包含 Amazon Lex 已确定为最有可能的用户言语意图的意图。JSON 结构还包括一个 alternativeIntents
字段,该字段包含最多四个可能满足用户意图的额外意图。每个意图都包含一个名为 nluIntentConfidenceScore
的字段,其中包含 Amazon Lex 为该意图分配的置信度分数。
要使用替代意图,您可以在 Lambda 函数的 ConfirmIntent
或 ElicitSlot
对话操作中指定该意图。
有关更多信息,请参阅使用 Lambda 函数。
使用会话管理 API
要使用与当前意图不同的意图,请使用 PutSession 操作。例如,如果您认为第一个替代意图比 Amazon Lex 选择的意图更可取,则可以使用 PutSession
操作来更改意图,以便用户与之交互的下一个意图就是您选择的意图。
有关更多信息,请参阅使用 Amazon Lex API 管理会话。