自适应对话中的识别器

适用于: SDK v4

语言识别器允许机器人解释用户输入。 自适应对话和语言识别器协同工作,以解释用户意图,并对用户输入做出流畅的反应。 本文介绍 Bot Framework SDK 中的内置识别器及其一些关键属性。

有关如何使用识别器的信息,请参阅 Bot Framework Composer 文档中的语言理解

交叉训练的识别器集

交叉训练的识别器集将来自多个识别器的识别结果进行比较,以决定适用的识别结果。 如果给定一组识别器,交叉训练的识别器将:

  • 提升其中一个识别器的识别结果(如果所有其他识别器的识别相比某个识别器的识别都有所延迟)。 为了延迟识别,识别器可以返回 None 意向或将显式 DeferToRecognizer_recognizerId 作为意向返回。
  • 引发 OnChooseIntent 事件,以使代码可以选择要使用的识别结果。 每个识别器的结果都通过 turn.recognized.candidates 属性返回。 这使你可以选择最适合的结果。

默认识别器

注意

Azure QnA Maker 将于 2025 年 3 月 31 日停用。 从 2022 年 10 月 1 日开始,你将无法创建新的 QnA Maker 资源或知识库。 问答功能的较新版本现已作为 Azure AI 语言的一部分提供。

自定义问答是 Azure 语言认知服务的一项功能,是 QnA Maker 服务的更新版本。 有关 Bot Framework SDK 中的问答支持的详细信息,请参阅自然语言理解

注意

语言理解 (LUIS) 将于 2025 年 10 月 1 日停用。 从 2023 年 4 月 1 日开始,将无法创建新的 LUIS 资源。 语言理解的较新版本现已作为 Azure AI 语言的一部分提供。

对话语言理解(CLU)是 Azure AI 语言的一项功能,是 LUIS 的更新版本。 有关 Bot Framework SDK 中的语言理解支持的详细信息,请参阅 自然语言理解

已创建默认识别器以替换以下识别器:

  • LUIS 识别器 - 基于定义的语言理解(LUIS)服务从用户的话语中提取意向和实体。
  • QnA Maker 识别器 - 基于定义的 QnA Maker 服务从用户的话语中提取意向。
  • 交叉训练的识别器集 - 将来自多个识别器的识别结果进行比较,以决定适用的识别结果。

LUIS 识别器

语言理解 (LUIS) 是一种基于云的 API 服务,可在用户对话的自然语言文本中应用自定义机器学习智能,以便预测整体含义并提炼出相关的详细信息。 LUIS 识别器使你能够基于已定义的 LUIS 应用程序(已提前进行了训练)从用户言语中提取意向和实体。

提示

有关如何使用 LUIS 将语言理解合并到机器人的详细信息,请参阅:

多语言识别器

在生成复杂的多语言机器人时,通常每一种语言和地区都对应一个识别器。 多语言识别器可使你基于用户传入的活动中的区域设置属性轻松指定要使用的识别器。

有关详细信息,请参阅 Composer 文档中的多语言支持文章。

Orchestrator 识别器

Orchestrator 是针对对话 AI 应用程序优化的语言理解解决方案。 它将替换 Bot Framework 调度程序。 Orchestrator 识别器使你能够从用户的话语中提取意向,该意向可用于路由到适当的技能或识别器,例如 LUIS 或 QnA Maker。

提示

有关如何使用 Orchestrator 将语言理解合并到机器人的详细信息,请参阅:

QnA Maker 识别器

QnAMaker.aiAzure AI 服务中的一项服务,使你能够通过现有内容(文档、URL、PDF 等)创建丰富的问答对。 可以使用 QnA Maker 识别器实现与服务的集成。

注意

QnA Maker 识别器将发出 QnAMatch事件,你可以使用 OnQnAMatch 触发器处理此事件。 整个 QnA Maker 响应将在 answer 属性中提供。

识别器集

有时,可能需要在每轮对话上运行多个识别器。 这时候可以使用识别器集。 每轮对话上都会运行所有识别器,其结果是所有识别结果的并集。

正则表达式识别器

RegEx 识别器使你能够基于正则表达式模式从言语中提取意向和实体数据。

正则表达式识别器主要包括:

  • IntentsIntents 对象包含 IntentPattern 对象的列表,这些 IntentPattern 对象由一个 Intent 属性和一个 Pattern 属性组成,前者即该意向的名称,后者包含一个用于分析言语以确定意向的正则表达式。
  • EntitiesEntities 对象包含 EntityRecognizer 对象的列表。 Bot Framework SDK 定义了几个 EntityRecognizer 类,可帮助你确定用户言语中所包含的实体:
    • AgeEntityRecognizer
    • ConfirmationEntityRecognizer
    • CurrencyEntityRecognizer
    • DateTimeEntityRecognizer
    • DimensionEntityRecognizer
    • EmailEntityRecognizer
    • EntityRecognizer
    • EntityRecognizerSet
    • GuidEntityRecognizer
    • HashtagEntityRecognizer
    • IpEntityRecognizer
    • MentionEntityRecognizer
    • NumberEntityRecognizer
    • NumberRangeEntityRecognizer
    • OrdinalEntityRecognizer
    • PercentageEntityRecognizer
    • PhoneNumberEntityRecognizer
    • RegExEntityRecognizer
    • TemperatureEntityRecognizer
    • TextEntity
    • TextEntityRecognizer
    • UrlEntityRecognizer

提示

  • 当输入言语与任何已定义的意向都不匹配时,RegexRecognizer 将发出“None”意图。 可以使用 Intent = "None" 创建 OnIntent 触发器来处理这种情况。
  • 正则表达式识别器在测试和快速原型设计方面非常有用。 对于更复杂的机器人,建议使用 LUIS 识别器。
  • 正则表达式语言快速参考或许可以为你提供很大的帮助。

其他信息