

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

# 使用意图置信度分数改善 Lex V2 的意图选择
<a name="using-intent-confidence-scores"></a>

当用户说话时，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](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)操作响应中的`interpretations`结构：

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

## 亚马逊。 FallbackIntent
<a name="nluconfidence-fallbackintent"></a>

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

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

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

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

## 设置和更改置信度阈值
<a name="nluconfidence-threshold"></a>

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

**使用 Amazon Lex V2 控制台**
+  要在使用**添加语言**向机器人添加语言时设置阈值，可以在**可信度分数阈值**面板中插入所需的值。
+  要更新阈值，您可以打开机器人的某个语言的**语言详细信息**面板，然后在该面板中选择**编辑**。然后在**可信度分数阈值**面板中插入所需的值。

**使用 API 操作**
+  要设置阈值，请设置[CreateBotLocale](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotLocale.html)操作的`nluIntentConfidenceThreshold`参数。
+  要更新置信度阈值，请设置[UpdateBotLocale](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateBotLocale.html)操作的`nluIntentConfidenceThreshold`参数。

## 会话管理
<a name="confidence-scores-session-management"></a>

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

### 在 Lex V2 机器人中使用 Lambda 函数
<a name="session-management-lambda"></a>

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

要使用替代意图，您可以在 Lambda 函数的 `ConfirmIntent` 或 `ElicitSlot` 对话框操作中指定此意图。

有关更多信息，请参阅 [将AWS Lambda功能集成到您的 Amazon Lex V2 机器人中](lambda.md)。

### 在 Lex V2 机器人中使用会话管理 API
<a name="session-management-API"></a>

要使用与当前意图不同的意图，请使用 [PutSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html) 操作。例如，如果您认为第一个替代意图比 Amazon Lex V2 选择的意图更可取，则可以使用 `PutSession` 操作来更改意图，以便用户与之交互的下一个意图就是您选择的意图。

有关更多信息，请参阅 [了解 Amazon Lex V2 机器人会话](managing-sessions.md)。