对话语言理解(CLU) 是 Azure AI 语言中基于云的 AI 产品/服务。 它是最新一代的 语言理解(LUIS), 并且与以前创建的 LUIS 应用程序向后兼容。 CLU 采用最先进的机器学习智能,允许用户构建用于预测对话话语中意向和实体的自定义自然语言理解模型。
CLU 在 LUIS 上具有以下优势:
- 使用最先进的机器学习模型提高准确性,以便更好地进行意向分类和实体提取。 LUIS 需要更多示例来通用化意向和实体中的某些概念,而 CLU 的更高级机器学习则通过要求更少的数据来减轻客户的负担。
- 多语言对模型学习和培训的支持。 只需使用一种语言训练项目,即可直接预测 96 种语言的意向和实体。
- 使用业务流程工作流轻松与不同的 CLU 和自定义问答项目集成。
- 在部署之前,能够使用 Language Studio 和 API 在体验中添加测试数据,以便进行模型性能评估。
若要开始,可以 创建新项目 或 迁移 LUIS 应用程序。
下表对 LUIS 和 CLU 的功能进行并排比较。 它还突出显示了迁移到 CLU 后对 LUIS 应用程序的更改。 选择链接的概念以了解有关更改的详细信息。
LUIS 功能 | CLU 功能 | 迁移之后 |
---|---|---|
机器学习和结构化 ML 实体 | 学习的实体组件 | 没有子实体的机器学习实体将作为 CLU 实体传输。 结构化 ML 实体仅将叶节点(没有自己的子实体的最低级别子实体)作为 CLU 中的实体传输。 CLU 中实体的名称是与父级串联的子实体的名称。 例如 Order.Size |
列表、正则表达式和预定义的实体 | 列表、正则表达式和预构建的 实体组件 | 列表、正则表达式和预生成实体作为 CLU 中的实体进行转移,并根据实体类型填充实体组件。 |
Pattern.Any 实体 |
目前不可用 |
Pattern.Any 实体已被移除。 |
每个应用程序的单个文化 | 多语言模型 为每个项目启用多种语言。 | 项目的主要语言设置为你的 LUIS 应用程序区域性。 可以训练项目以扩展到不同的语言。 |
实体角色 | 不再需要角色。 | 实体角色作为实体转移。 |
设置:规范化标点符号、规范化音调符号、规范化单词表单、使用所有训练数据 | 不再需要设置。 | 设置不会被传输。 |
模式和短语列表特征 | 不再需要模式和短语列表功能 。 | 不会传输模式和短语列表功能。 |
实体特征 | 实体组件 | 作为功能添加到某个实体的列表或预生成实体作为添加的组件转移到该实体。 不会为意向转移实体功能。 |
意向和言语 | 意向和言语 | 所有意向和话语都会转移。 话语用其转移的实体进行标记。 |
应用程序 GUID | 项目名称 | 为每个迁移的应用程序创建一个项目,其中包含应用程序名称。 应用程序名称中的任何特殊字符都将在 CLU 中删除。 |
版本控制 | 每次训练时,都会创建一个模型,并作为您的项目的一个版本。 | 为所选应用程序版本创建项目。 |
使用批处理测试进行评估 | 使用测试集进行评估 | 需要添加测试数据集。 |
适用于 LUIS 资源的基于角色的访问控制 (RBAC) | 适用于语言资源的基于角色的访问控制 (RBAC) | 迁移后,必须手动添加语言资源 RBAC。 |
单一训练模式 | 标准和高级 训练模式 | 应用程序迁移后需要训练。 |
两个发布时段和版本发布 | 具有自定义命名的十个部署槽位 | 在应用程序的迁移和培训后需要部署。 |
.NET、Python、Java 和 Node.js 形式的 LUIS 创作 API 和 SDK 支持 | CLU 编写 REST API。 | 有关详细信息,请参阅 快速入门文章 ,了解有关 CLU 创作 API 的信息。 使用 CLU 创作 API 时,需要进行重构。 |
.NET、Python、Java 和 Node.js 中的 LUIS 运行时 API 和 SDK 支持 | CLU 运行时 API。 对 .NET 和 Python 的 CLU 运行时 SDK 支持。 | 有关详细信息 ,请参阅如何调用 API 。 重构 是使用 CLU 运行时 API 响应所必需的。 |
使用以下步骤使用 LUIS 门户或 REST API 迁移 LUIS 应用程序。
按照以下步骤开始使用 LUIS 门户进行迁移:
登录到 LUIS 门户后,单击屏幕顶部横幅上的按钮以启动迁移向导。 迁移会将所选 LUIS 应用程序复制到 CLU。
“迁移概述”选项卡简要介绍了对话语言理解及其优点。 按“下一步”继续。
确定想要将 LUIS 应用程序迁移到的语言资源。 如果您已创建语言资源,请先选择您的 Azure 订阅,然后选择您的语言资源,接着选择下一步。 如果没有语言资源,请单击链接以创建新的语言资源。 之后,选择资源,然后选择“ 下一步”。
选择要迁移的所有 LUIS 应用程序,并指定其每个版本。 选择“下一步”。 选择应用程序和版本后,系统会向你显示一条消息,告知你有哪些功能不会从你的 LUIS 应用程序迁移。
审查你选择的语言资源和 LUIS 应用。 选择 “完成 ”以迁移应用程序。
弹出窗口允许跟踪应用程序的迁移状态。 尚未开始迁移的应用程序的状态为 “未启动”。 已开始迁移的应用程序的状态为 “正在进行”,一旦应用程序完成迁移,其状态为 “成功”。 失败的应用程序意味着必须重复迁移过程。 迁移完成所有应用程序后,请选择“ 完成”。
迁移应用程序后,可以执行以下步骤:
CLU 支持模型 JSON 版本 7.0.0。 如果 JSON 格式较旧,则首先需要将其导入 LUIS,然后使用最新版本从 LUIS 导出。
在 CLU 中,单个实体可以有多个实体组件,这些组件是不同的提取方法。 然后,这些组件使用可以定义的规则组合在一起。 可用的组件包括:
- 学习:与 LUIS 中的 ML 实体等效,标签用于训练机器学习模型,以基于提供的标签的内容和上下文预测实体。
- 列表:与 LUIS 中的列表实体一样,列表组件与一组同义词完全匹配,并将它们映射回名为 列表键的规范化值。
- 预生成:预生成组件允许使用预生成的提取器为 LUIS 和 CLU 中可用的常见类型定义实体。
- 正则表达式:正则表达式组件使用正则表达式捕获自定义定义的模式,与 LUIS 中的正则表达式实体完全相同。
LUIS 中的实体作为 CLU 中同名的实体转移,并转移等效的组件。
迁移后,结构化机器学习叶节点和底层子实体将传输到新的 CLU 模型,同时忽略所有父实体和更高级别的实体。 实体的名称是与其父实体连接在一起的底层实体的名称。
LUIS 实体:
- 披萨订单
- 配料
- 尺寸
迁移的 CLU 中的 LUIS 实体:
- 披萨订单.配料
- 披萨订单.尺寸
在 CLU 里,你也不能为 2 个不同的实体标记相同的字符区间。 CLU 中的已学习组件是互斥的,并且不会仅为已学习组件提供重叠的预测。 迁移 LUIS 应用程序时,重叠的实体标签会保留最长的标签并忽略任何其他标签。
有关实体组件的详细信息,请参阅 实体组件。
角色将作为不同的实体与其标记的话语一起转移。 每个角色的实体类型决定了填充哪个实体组件。 例如,列表实体角色作为与角色同名的实体转移,并带有填充的列表组件。
用作意向特征的实体不会被转移。 用作其他实体的特征的实体会填充该实体的相关组件。 例如,如果将名为 SizeList 的列表实体用作名为 Size 的机器学习实体的功能,则 Size 实体将传输到 CLU,其中包含从 SizeList 添加到其列表组件的列表值。 这同样适用于预生成实体和正则表达式实体。
任何提取的实体都有 100% 的置信度分数,因此实体置信度分数不应用于在实体之间做出决策。
对话语言理解项目接受不同语言的话语。 此外,可以使用一种语言训练模型,并将其扩展为以其他语言进行预测。
培训言语(英语): 你怎么样?
标记的意向:问候语
运行时话语(法语):你好吗?
预测意向:问候语
CLU 使用最先进的模型来增强不同意向分类和实体提取模型的机器学习性能。
这些模型对次要变体不区分,无需以下设置: 规范化标点符号、 规范化音调符号、 规范化单词形式,以及 使用所有训练数据。
此外,新模型不支持短语列表功能,因为它们不再需要用户提供的补充信息,以提供语义相似的字词,以提高准确性。 模式还用于通过基于规则的匹配技术改善意图分类,这些技术在新的模型范例中已不再必要。 以下问题更详细地说明了这一点。
LUIS 中存在多个在 CLU 中不再可用的功能。 这包括进行特征工程的能力、拥有 patterns 和 pattern.any 实体以及结构化实体。 如果在 LUIS 中依赖于这些功能,请使用以下指南:
模式:在 LUIS 中添加了模式,通过定义正则表达式模板话语来帮助意向分类。 这包括定义仅以模式为基础的意图(没有语句示例)的功能。 CLU 能够使用最先进的模型进行通用化。 你可以提供一些与 CLU 中的意图匹配的特定模式的话语,系统可能会将不同的模式分类为主要意图,而无需使用模式模板话语。 这简化了制定这些模式的要求,这些模式在 LUIS 中受到限制,并提供更好的意向分类体验。
短语列表特征:关联特征的能力主要表现为通过突出显示要使用的关键元素/特征来帮助对意向进行分类。 这不再需要,因为 CLU 中使用的深度模型已经能够识别语言固有的元素。 反过来,删除这些功能不会影响模型的分类能力。
结构化实体:定义结构化实体的功能主要是启用话语的多层次分析。 由于子实体的可能性不同,LUIS 需要定义实体的所有不同组合,并将其作为示例呈现给模型。 在 CLU 中,这些结构化实体不再受支持,因为重叠的学习组件不受支持。 可通过几种方法处理这些结构化提取:
- 非模糊提取:在大多数情况下,检测叶实体便足以了解整个跨度内所需的项目。 例如,可以通过针对出发地和目的地预测的单独跨度来识别完全跨越出发地和目的地(伦敦到纽约,或从家到工作地点)的结构化实体(例如 Trip)。 它们作为单独的预测存在,这将为你提供有关 Trip 实体的信息。
- 模棱两可的提取:当不同子实体的边界不清楚时。 为了说明,以“我想订购辣椒披萨和额外的奶酪素食披萨”为例。 虽然可以提取不同的披萨类型和配料变化,但在没有上下文的情况下提取它们会在一定程度上模糊额外奶酪的添加位置。 在这种情况下,跨度的程度取决于上下文,需要使用机器学习来确定。 对于不明确的提取,可以使用以下方法之一:
- 将子实体合并到同一实体的不同组件中。
LUIS 实现:
- Pizza Order(实体)
- Size(子实体)
- 数量(子实体)
CLU 实现:
- Pizza Order(实体)
- 大小(列表实体组件:小、中、大)
- 数量(预生成的实体组件:数字)
在 CLU 中,将为 披萨订单 的整个范围(包括大小和数量)进行标记,这将返回包含大小列表键的披萨订单,以及同一实体对象中数量的数字值。
- 对于实体包含多个深度级别的更复杂的问题,可以为实体结构中的每个深度级别创建一个项目。 这为你提供了以下选项:
- 将话语传递给每个项目。
- 将每个项目在 CLU 之前阶段的分析进行整合。
有关此概念的详细示例,请查看 GitHub 上提供的披萨示例项目。
CLU 保存用于训练模型的数据资产。 可以随时导出模型的资产或将它们加载回项目中。 因此,模型充当项目的不同版本。
可以使用 语言工作室 导出 CLU 项目,也可以 以编程方式 在本地存储不同版本的资产。
CLU 使用多分类而不是二元分类来提供训练模型的不同方法。 因此,分数的解释不同,而且在训练选项上也有所不同。 虽然可能会取得更好的结果,但必须观察分数的差异,并确定接受意向预测的新阈值。 可以在项目设置中轻松为 None 意图 添加置信度评分阈值。 如果最高意向未超过提供的置信度分数阈值,则返回 None 作为首要意向。
与 LUIS 相比,新的 CLU 模型对语言的语义理解更好,反过来又有助于使模型随着数据大幅减少而通用化。 虽然不应追求减少数据量,但应期望 CLU 在性能和应对变体及同义词方面比 LUIS 更出色。
现有 LUIS 应用程序在 2025 年 10 月 1 日之前可用。 之后,将无法再使用这些应用程序,服务终结点将不再正常运行,并且应用程序将被永久删除。
CLU 仅支持 JSON 格式。 你可以将 .LU 文件导入 LUIS 以及将其以 JSON 格式导出,也可以按照上面的迁移步骤为应用程序执行相应操作。
有关详细信息,请参阅 服务限制 文章。
CLU 应用程序的 API 对象不同于 LUIS,因此需要代码重构。
如果使用 LUIS 编程 API 和 运行时 API,则可以将其替换为其等效 API。
CLU 创作 API:CLU 提供了一个导入 API,可以使用相同的名称替换项目的全部内容,而不像 LUIS 那样使用针对添加话语、删除实体和重命名意图等单个操作的特定 CRUD API。 如果服务使用 LUIS 编程 API 为其他客户提供平台,则必须考虑这种新的设计范例。 所有其他 API(例如: 列出项目、 训练、 部署和 删除 )都可用。 API 用于诸如导入和部署等操作,它们是异步操作,而不是 LUIS 中的同步操作。
CLU 运行时 API:新的 API 请求和响应包括许多相同的参数,例如: 查询、 预测、 首要意向、 意向、 实体及其值。 CLU 响应对象提供更简单的方法。 实体预测会按原样提供于话语文本中,任何其他信息(例如解析或列表键)则会通过名为 extraInformation
和 resolution
的额外参数来提供。
可以使用 .NET 或 Python CLU 运行时 SDK 替换 LUIS 运行时 SDK。 目前没有可用于 CLU 的创作 SDK。
CLU 提供标准培训,以英语训练和学习,与 LUIS 的训练时间相当。 它还提供高级培训,持续时间要长得多,因为它将训练扩展到所有其他 受支持的语言。 训练 API 仍然是一个异步过程,你需要评估为解决方案使用的 DevOps 流程中的更改。
在 LUIS 中,你将经历“生成-训练-测试-发布”过程,而在 CLU 中,则是生成-训练-评估-部署-测试。
- 生成:在 CLU 中,可以在训练之前定义意向、实体和言语。 CLU 还提供了在生成用于模型评估的应用程序时指定 测试数据 的功能。 评估是检查模型在测试数据上的表现,并提供精度、召回率和 F1 指标。
- 训练:每次训练时,都会创建一个具有名称的模型。 你可以覆盖已训练的模型。 可以指定使用标准培训还是高级培训,并决定是否使用您的测试数据进行评估,或者选择从培训数据中排除一部分作为测试数据使用。 训练完成后,可以评估模型在外部的表现。
- 部署:训练完成后,你有一个具有名称的模型,可以部署用于预测。 部署也将获得命名并具有分配的模型。 同一模型可以被多次部署。 你可以使用其他模型覆盖部署,也可以将模型更换为项目中的其他部署。
- 测试:部署完成后,可以通过部署终结点使用它进行预测。 你也可以在“测试部署”页中,在工作室对其进行测试。
这个过程与 LUIS 的做法相比,有很大的不同,因为应用程序 ID 附加到所有东西上,并且可以在预生产或生产环境中部署应用程序的某个版本。
这会影响使用的 DevOps 进程。
否,无法将 CLU 导出到容器。
删除 LUIS 应用程序名称中的任何特殊字符。 如果清除的名称长度大于 50 个字符,则会删除额外的字符。 如果删除特殊字符后的名称为空(例如,如果 LUIS 应用程序名称为 @@
),则新名称 将无标题。 如果已经存在同名的对话语言理解项目,则迁移的 LUIS 应用程序会在第一个重复项后追加 _1
,之后的每个重复项依次加 1。 如果新名称的长度为 50 个字符,并且需要重命名,则删除最后 1 或 2 个字符才能连接数字,但仍在 50 个字符的限制内。
如果您有任何在本文中未回答的问题,请考虑在我们的 Microsoft 问答线程中留下您的问题。