使用自定义词汇改善语音识别 - Amazon Lex

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

使用自定义词汇改善语音识别

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

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

自定义词汇表基础知识

  • 自定义词汇表用于将音频输入转录到机器人。您必须提供示例言语以便识别意图或插槽值。

  • 自定义词汇表是特定语言所独有的。必须为每种语言单独配置自定义词汇表。只有英语(英国)和英语(美国)语言支持自定义词汇表。

  • 自定义词汇表可配合 Amazon Lex V2 支持的联络中心集成使用。Amazon Lex V2 控制台中的测试窗口支持适用于 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 字段来为最终语音到文本输出中的短语指定替代表示形式。

用于在引发意图期间改善转录的自定义词汇表短语不会影响引发插槽时的转录。有关创建用于引发意图的自定义词汇表的更多信息,请参阅创建自定义词汇表以引发意图和插槽

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

添加插槽值后,这些值用于在机器人预期自定义插槽的输入时,改善插槽识别。这些值不用于在引发意图时的转录。有关更多信息,请参阅添加槽类型

创建自定义词汇表的最佳实践

引发意图

  • 自定义词汇表最适合用于目标特定单词和短语。仅将 Amazon Lex V2 不容易识别的单词添加到自定义词汇表中。

  • 基于转录中单词不被识别的频率以及输入中出现该单词的罕见程度来决定赋予单词的权重。难以发音的单词需要更高的权重。

  • 使用具有代表性的测试集来确定权重是否合适。您可以通过在对话日志中打开音频日志记录来收集音频测试集。

  • 避免在自定义词汇表中使用诸如 “on”、“it”、“to”、“yes”、“no” 等短词。

引发自定义插槽

  • 将值添加到您希望被识别的自定义插槽类型中。添加自定义插槽类型的所有可能的插槽值,无论该插槽值的常见或罕见程度。

  • 仅当自定义插槽类型包含一系列诸如产品名称或共同基金等目录值或者实体,才启用该选项。

  • 如果插槽类型用于捕获诸如“是”、“否”、“我不知道”、“也许”等通用短语或者诸如“一”、“二”、“三”等通用词,则禁用该选项。

  • 为了获得最佳性能,请将插槽值和同义词的数量限制为 500 或以下。

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

创建自定义词汇表以引发意图和插槽

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

在控制台中导入自定义词汇:
  1. 访问 https://console.aws.amazon.com/lexv2/home,打开 Amazon Lex V2 控制台。

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

  3. 在机器人详情页面上,在添加语言部分中选择查看语言

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

直接通过控制台创建新的自定义词汇表:
  1. 在语言详细信息页面的自定义词汇部分中点击创建。系统将打开编辑窗口,该窗口中当前不存在自定义词汇。

  2. 根据需要输入 “phrase”、“DisplayAs” 和 “weight” 的值。您可以更新已添加项目的字段或将其从列表中删除,从而进一步对添加的项目进行内联编辑。

  3. 点击保存。注意:只有在您点击保存后,新的自定义词汇才会保存在您的机器人中。

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

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

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

    { "maxResults": number, "nextToken": "string" }
  2. 请注意,maxResultsnextToken 是请求正文的可选字段。

  3. ListCustomVocabularyItems 操作的响应如下:

    { "botId": "string", "botVersion": "string", "localeId": "string", "customVocabularyItems": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
使用 BatchCreateCustomVocabularyItem API 创建新的自定义词汇表条目:
  1. 如果尚未对您机器人的区域设置创建自定义词汇表,请按照使用 StartImport 创建自定义词汇表的步骤操作。

  2. 创建自定义词汇表后,使用 BatchCreateCustomVocabularyItem 操作创建新的自定义词汇表条目。请求正文如下:

    { "customVocabularyItemList": [ { "phrase": "string", "weight": number, "displayAs": "string" } ] }
  3. 请注意,weightdisplayAs 是请求正文的可选字段。

  4. BatchCreateCustomVocabularyItem 的响应如下:

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  5. 由于这是批量操作,因此如果其中一个项目创建失败,请求不会失败。错误列表将包含有关该特定条目的操作失败的原因的信息。资源列表将包含所有成功创建的条目。

  6. 对于 BatchCreateCustomVocabularyItem,可能会出现以下类型的错误:

    • RESOURCE_DOES_NOT_EXIST:自定义词汇表不存在。调用此操作之前,请按照创建自定义词汇表的步骤操作。

    • DUPLICATE_INPUT:输入列表中包含重复的短语。

    • RESOURCE_ALREADY_EXISTS:您的自定义词汇表中已存在该条目的给定短语。

    • INTERNAL_SERVER_FAILURE:在处理您的请求时,后端出现错误。这可能表示服务中断或其他问题。

使用 BatchDeleteCustomVocabularyItem API 删除现有的自定义词汇表条目:
  1. 如果尚未对您机器人的区域设置创建自定义词汇表,请按照使用 StartImport 创建自定义词汇表的步骤操作,以便创建自定义词汇表。

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

    { "customVocabularyItemList": [ { "itemId": "string" } ] }
  3. BatchDeleteCustomVocabularyItem 的响应如下:

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  4. 由于这是批量操作,因此如果其中一个项目删除失败,请求不会失败。错误列表将包含有关该特定条目的操作失败的原因的信息。资源列表将包含所有成功删除的条目。

  5. 对于 BatchDeleteCustomVocabularyItem,可能会出现以下类型的错误:

    • RESOURCE_DOES_NOT_EXIST:您尝试删除的自定义词汇表条目不存在。

    • INTERNAL_SERVER_FAILURE:在处理您的请求时,后端出现错误。这可能表示服务中断或其他问题。

使用 BatchUpdateCustomVocabularyItem API 更新现有的自定义词汇表条目:
  1. 如果尚未对您机器人的区域设置创建自定义词汇表,请按照使用 StartImport 创建自定义词汇表的步骤操作,以便创建自定义词汇表。

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

    { "customVocabularyItemList": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  3. 请注意,weightdisplayAs 是请求正文的可选字段。

  4. BatchUpdateCustomVocabularyItem 的响应如下:

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  5. 由于这是批量操作,因此如果其中一个项目删除失败,请求不会失败。错误列表将包含有关该特定条目的操作失败的原因的信息。资源列表将包含所有成功更新的条目。

  6. 对于 BatchUpdateCustomVocabularyItem,可能会出现以下类型的错误:

    • RESOURCE_DOES_NOT_EXIST:您尝试更新的自定义词汇表条目不存在。

    • DUPLICATE_INPUT:输入列表中包含重复的 itemId。

    • RESOURCE_ALREADY_EXISTS:您的自定义词汇表中已存在该条目的给定短语。

    • INTERNAL_SERVER_FAILURE:在处理您的请求时,后端出现错误。这可能表示服务中断或其他问题。

创建自定义词汇表文件

自定义词汇表文件是一个以制表符分隔的值列表,其中包含要识别的短语、要增强的权重以及将替换语音转录中短语的 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