

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

# 使用自定义词汇改善语音识别
<a name="vocab"></a>

您可以创建特定语言的自定义词汇表，以便向 Amazon Lex V2 提供有关如何处理与机器人的音频对话的更多信息。*自定义词汇表*是一个列表，其中包含您希望 Amazon Lex V2 在音频输入中识别的特殊词。这些通常是 Amazon Lex V2 无法识别的专有名词或特定领域的专有词汇。

例如，假设您有一个技术支持机器人。您可以在自定义词汇表中添加“backup”（备份），以帮助机器人将音频正确地转录为“backup”，即使音频听起来像“pack up”（收拾行装）。自定义词汇还可以帮助识别音频中的生僻词汇，例如金融服务领域的“solvency”（偿付能力）或者诸如“Cognito”或“Monitron”等专有名词。

## 自定义词汇表基础知识
<a name="vocab-basics"></a>
+ 自定义词汇表用于将音频输入转录到机器人。您必须提供示例言语以便识别意图或槽位值。
+ 自定义词汇表是特定语言所独有的。必须为每种语言单独配置自定义词汇表。支持以下语言的自定义词汇表：英语（英国）、英语（美国）、韩语（韩国）、意大利语（意大利）、德语（德国）、法语（加拿大）、法语（法国）、西班牙语（西班牙）、西班牙语（美国）、日语（日本）、普通话（中国）、瑞典语（瑞典）、海湾阿拉伯语（阿拉伯联合酋长国）、印地语（印度）、荷兰语（荷兰）、挪威语（挪威）、波兰语（波兰）、芬兰语（芬兰）、葡萄牙语（葡萄牙）、葡萄牙语（巴西）、加泰罗尼亚语（西班牙）。
+ 自定义词汇表可配合 Amazon Lex V2 支持的[联络中心集成](https://docs.aws.amazon.com/lexv2/latest/dg/contact-center.html)使用。Amazon Lex V2 控制台中的[测试窗口](https://docs.aws.amazon.com/lexv2/latest/dg/test-bot.html)支持适用于 2022 年 7 月 31 日当天或之后构建的所有 Amazon Lex V2 机器人的自定义词汇表。如果您在测试窗口中遇到自定义词汇表的问题，请重新构建机器人并重试。

Amazon Lex V2 使用自定义词汇表来引发意图和槽位。相同的自定义词汇表文件也用于意图和槽位。添加槽位类型时，您可以选择关闭机器人的自定义词汇表功能。

**引发意图**：您可以创建用于引发意图的自定义词汇表。这些短语将在机器人确定用户的意图时用于转录。例如，如果您在自定义词汇表中配置了“backup”（备份）一词，Amazon Lex V2 会将用户输入的内容转录为"can you please backup my photos?"（“能备份我的照片吗？”），即使音频听起来像"can you please pack up my photos."（“能收拾我的照片吗？”） 您可以通过配置权重 0、1、2 或 3 来指定每个短语的增强程度。您还可以通过添加 `displayAs` 字段来为最终语音到文本输出中的短语指定替代表示形式。

用于在引发意图期间改善转录的自定义词汇表短语不会影响引发槽位时的转录。有关创建用于引发意图的自定义词汇表的更多信息，请参阅[创建自定义词汇表以引发意图和槽位](#vocab-create)。

**引发自定义槽位**：您可以使用自定义词汇表来改善音频对话的槽位识别。要提高 Amazon Lex V2 机器人识别槽位值的能力，请创建自定义槽位并将槽位值添加到自定义槽位，然后选择**使用槽位值作为自定义词汇**。槽位值的示例包括产品名称、目录或专有名词。自定义词汇表中应避免出现常用单词或短语，例如“是”和“否”。

添加槽位值后，这些值用于在机器人预期自定义槽位的输入时，改善槽位识别。这些值不用于在引发意图时的转录。有关更多信息，请参阅 [添加槽位类型](add-slot-types.md)。

## 创建自定义词汇表的最佳实践
<a name="vocab-best"></a>

**引发意图**
+ 自定义词汇表最适合用于目标特定单词和短语。仅将 Amazon Lex V2 不容易识别的单词添加到自定义词汇表中。
+ 基于转录中单词不被识别的频率以及输入中出现该单词的罕见程度来决定赋予单词的权重。难以发音的单词需要更高的权重。
+ 使用具有代表性的测试集来确定权重是否合适。您可以通过在对话日志中打开音频日志记录来收集音频测试集。
+ 避免在自定义词汇表中使用诸如 “on”、“it”、“to”、“yes”、“no” 等短词。

**引发自定义槽位**
+ 将值添加到您希望被识别的自定义槽位类型中。添加自定义槽位类型的所有可能的槽位值，无论该槽位值的常见或罕见程度。
+ 仅当自定义槽位类型包含一系列诸如产品名称或共同基金等目录值或者实体，才启用该选项。
+ 如果槽位类型用于捕获诸如“是”、“否”、“我不知道”、“也许”等通用短语或者诸如“一”、“二”、“三”等通用词，则禁用该选项。
+ 为了获得最佳性能，请将槽位值和同义词的数量限制为 500 或以下。

输入首字母缩略词，或者其字母应以用圆点或空格隔开的单个字母的形式单独发音的其他单词。请勿使用单个字母，除非这些字母是短语的一部分，例如 “J.P.Morgan” 或 “A.W.S.”。您可以使用大写或小写字母来定义首字母缩略词。

## 创建自定义词汇表以引发意图和槽位
<a name="vocab-create"></a>

您可以使用 Amazon Lex V2 控制台来创建和管理自定义词汇表，也可以使用 Amazon Lex V2 API 操作。可通过以下两种方法，使用控制台来创建自定义词汇表：

### 控制台
<a name="vocab-create-console"></a>

**在控制台中导入自定义词汇：**

1. [在家中打开 Amazon Lex V2 主机 https://console.aws.amazon.com/lexv2/](https://console.aws.amazon.com/lexv2/home)

1. 从机器人列表中，选择要添加自定义词汇表的机器人。

1. 在机器人详情页面上，在**添加语言**部分中选择**查看语言**。

1. 从语言列表中，选择要添加自定义词汇表的语言。

**直接通过控制台创建新的自定义词汇表：**

1. 在语言详细信息页面的**自定义词汇**部分中点击**创建**。系统将打开编辑窗口，该窗口中当前不存在自定义词汇。

1. 根据需要添加短语 DisplayAs、和权重的输入。您可以更新已添加项目的字段或将其从列表中删除，从而进一步对添加的项目进行内联编辑。

1. 点击**保存**。注意：只有在您点击**保存**后，新的自定义词汇才会保存在您的机器人中。

1. 您可以继续在此页面中进行内联编辑，完成后点击**保存**。

1. 此外，您还可以通过此页面右上角的下拉菜单来导入、导出和删除自定义词汇表文件。

### API
<a name="vocab-create-api"></a>

**使用 `ListCustomVocabularyItems` API 查看自定义词汇表条目：**

1. 使用 `ListCustomVocabularyItems` 操作查看自定义词汇表条目。请求正文如下：

   ```
   {
      "maxResults": number,
      "nextToken": "string"
   }
   ```

1. 请注意，`maxResults` 和 `nextToken` 是请求正文的可选字段。

1. `ListCustomVocabularyItems` 操作的响应如下：

   ```
   {
      "botId": "string",
      "botVersion": "string",
      "localeId": "string",
      "customVocabularyItems": [
           {
               "itemId": "string",
               "phrase": "string",
               "weight": number,
               "displayAs": "string"
           }
      ]
   }
   ```

**使用 `BatchCreateCustomVocabularyItem` API 创建新的自定义词汇表条目：**

1. 如果您的机器人的语言区域尚未创建自定义词汇表，请按照步骤使用创建自定义词汇表。[StartImport](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_StartImport.html)

1. 创建自定义词汇表后，使用 `BatchCreateCustomVocabularyItem` 操作创建新的自定义词汇表条目。请求正文如下：

   ```
   {
      "customVocabularyItemList": [
           {
               "phrase": "string",
               "weight": number,
               "displayAs": "string"
           }
      ]
   }
   ```

1. 请注意，`weight` 和 `displayAs` 是请求正文的可选字段。

1. `BatchCreateCustomVocabularyItem` 的响应如下：

   ```
   {
       "botId": "string",
       "botVersion": "string",
       "localeId": "string", 
       "errors": [
           {
               "itemId": "string",
               "errorMessage": "string",
               "errorCode": "string"
           }
       ],
       "resources": [
           {
               "itemId": "string",
               "phrase": "string",
               "weight": number,
               "displayAs": "string"
           }
       ]
   }
   ```

1. 由于这是批量操作，因此如果其中一个项目创建失败，请求不会失败。错误列表将包含有关该特定条目的操作失败的原因的信息。资源列表将包含所有成功创建的条目。

1. 对于 `BatchCreateCustomVocabularyItem`，可能会出现以下类型的错误：
   + `RESOURCE_DOES_NOT_EXIST`：自定义词汇表不存在。调用此操作之前，请按照创建自定义词汇表的步骤操作。
   + `DUPLICATE_INPUT`：输入列表中包含重复的短语。
   + `RESOURCE_ALREADY_EXISTS`：您的自定义词汇表中已存在该条目的给定短语。
   + `INTERNAL_SERVER_FAILURE`：在处理您的请求时，后端出现错误。这可能表示服务中断或其他问题。

**使用 `BatchDeleteCustomVocabularyItem` API 删除现有的自定义词汇表条目：**

1. 如果你的机器人的语言区域尚未创建自定义词汇表，请按照使用创建自定义词汇表中的步骤[StartImport](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_StartImport.html)来创建自定义词汇表。

1. 创建自定义词汇表后，使用 `BatchDeleteCustomVocabularyItem` 操作删除现有的自定义词汇表条目。请求正文如下：

   ```
   {
      "customVocabularyItemList": [
           {
               "itemId": "string"
           }
      ]
   }
   ```

1. `BatchDeleteCustomVocabularyItem` 的响应如下：

   ```
   {
       "botId": "string",
       "botVersion": "string",
       "localeId": "string", 
       "errors": [
           {
               "itemId": "string",
               "errorMessage": "string",
               "errorCode": "string"
           }
       ],
       "resources": [
           {
               "itemId": "string",
               "phrase": "string",
               "weight": number,
               "displayAs": "string"
           }
       ]
   }
   ```

1. 由于这是批量操作，因此如果其中一个项目删除失败，请求不会失败。错误列表将包含有关该特定条目的操作失败的原因的信息。资源列表将包含所有成功删除的条目。

1. 对于 `BatchDeleteCustomVocabularyItem`，可能会出现以下类型的错误：
   + `RESOURCE_DOES_NOT_EXIST`：您尝试删除的自定义词汇表条目不存在。
   + `INTERNAL_SERVER_FAILURE`：在处理您的请求时，后端出现错误。这可能表示服务中断或其他问题。

**使用 `BatchUpdateCustomVocabularyItem` API 更新现有的自定义词汇表条目：**

1. 如果你的机器人的语言区域还没有创建自定义词汇，请按照使用创建自定义词汇表中的[StartImport](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_StartImport.html)步骤来创建自定义词汇。

1. 创建自定义词汇表后，使用 `BatchUpdateCustomVocabularyItem` 操作更新现有的自定义词汇表条目。请求正文如下：

   ```
   {
      "customVocabularyItemList": [
           {
               "itemId": "string",
               "phrase": "string",
               "weight": number,
               "displayAs": "string"
           }
      ]
   }
   ```

1. 请注意，`weight` 和 `displayAs` 是请求正文的可选字段。

1. `BatchUpdateCustomVocabularyItem` 的响应如下：

   ```
   {
       "botId": "string",
       "botVersion": "string",
       "localeId": "string", 
       "errors": [
           {
               "itemId": "string",
               "errorMessage": "string",
               "errorCode": "string"
           }
       ],
       "resources": [
           {
               "itemId": "string",
               "phrase": "string",
               "weight": number,
               "displayAs": "string"
           }
       ]
   }
   ```

1. 由于这是批量操作，因此如果其中一个项目删除失败，请求不会失败。错误列表将包含有关该特定条目的操作失败的原因的信息。资源列表将包含所有成功更新的条目。

1. 对于 `BatchUpdateCustomVocabularyItem`，可能会出现以下类型的错误：
   + `RESOURCE_DOES_NOT_EXIST`：您尝试更新的自定义词汇表条目不存在。
   + `DUPLICATE_INPUT`：输入列表中包含重复的 itemId。
   + `RESOURCE_ALREADY_EXISTS`：您的自定义词汇表中已存在该条目的给定短语。
   + `INTERNAL_SERVER_FAILURE`：在处理您的请求时，后端出现错误。这可能表示服务中断或其他问题。

## 创建自定义词汇表文件
<a name="vocab-file"></a>

自定义词汇表文件是一个以制表符分隔的值列表，其中包含要识别的短语、要增强的权重以及将替换语音转录中短语的 `displayAs` 字段。增强值较高的短语当在音频输入中出现时，更有可能被使用。

自定义词汇表文件必须命名为 **CustomVocabulary.tsv**，并且必须将其压缩为 ZIP 文件后才能导入。ZIP 文件必须小于 300 MB。自定义词汇表中的最大短语数量为 500。
+ **phrase**：应识别的 1 到 4 个单词。短语中的单词以空格隔开。文件中不得有重复的短语。“短语”字段为必填项。
+ **weight**：指定短语识别的增强程度。该值是整数 0、1、2 或 3。如果未指定权重，则默认值为 1。基于转录中单词不被识别的频率以及输入中出现该单词的罕见程度来决定权重。权重 0 表示不会应用任何增强，并且该条目将仅用于使用 `displayAs` 字段执行替换。
+ **displayAs**：依据您的需求定义转录输出中对该短语的显示。这是自定义词汇表中的可选字段。

自定义词汇表文件必须包含标题为 “phrase”、“weight” 和 “displayAs” 的标题行。这些标题可以按任意顺序排列，但必须遵循上述命名法。

以下是一个自定义词汇表文件的示例。分隔 “phrase”、“weight” 和 “displayAs” 所需的制表符用文本 “[TAB]” 表示。如果您使用此示例，请将文本替换为制表符。

```
phrase[TAB]weight[TAB]displayAs
Newcastle[TAB]2
Hobart[TAB]2[TAB]Hobart, Australia
U. Dub[TAB]1[TAB]University of Washington, Seattle
W. S. U.[TAB]3
Issaquah
Kennewick
```