Compartir a través de

意向

重要

LUIS 将于 2025 年 10 月 1 日停用,从 2023 年 4 月 1 日开始,你将无法创建新的 LUIS 资源。 建议将 LUIS 应用程序迁移对话语言理解,以便从持续的产品支持和多语言功能中受益。

意向表示用户想执行的任务或操作。 这是用户的陈述中所表示的目的或目标。

定义一组意向,对应于用户希望在应用程序中执行的操作。 例如,旅行应用可以定义几个意向:

旅行应用意向 示例陈述
BookFlight “帮我预订下周去里约的航班”
“24 号飞里约”
“我需要下周日去里约热内卢的机票”
Greeting “嗨”
“你好”
“早上好”
CheckWeather “波士顿的天气怎样?”
“显示本周末的天气预报”
“给我一份饼干食谱”
“湖人赢了吗?”

所有应用程序均附带了预定义意向“None”,这是一个回退意向。

预生成意向

LUIS 为其每个预生成域提供预生成意向及其话语。 可以仅添加意向,而不添加整个域。 添加意向是将意向及其话语添加到应用的过程。 意向名称和话语列表都可以修改。

返回所有意向的得分

将陈述分配给单个意向。 当 LUIS 收到语句时,默认情况下,它将返回该语句的最高意向。

如果想要语句的所有意向的得分,可以在预测 API 的查询字符串中提供一个标志。

预测 API 版本 标志
V2 verbose=true
V3 show-all-intents=true

意向与实体

意向表示应用程序应为用户采取的操作,并且基于整个语句。 一句话语只能有一个评分最高的意向,但可以有多个实体。

当用户的意向将在客户端应用程序中触发操作时(例如,调用上表中的 checkweather() 函数),请创建意向。 然后创建实体以表示执行操作所需的参数。

Intent 实体 示例陈述
CheckWeather { "type": "location", "entity": "Seattle" }
{ "type": "builtin.datetimeV2.date","entity": "tomorrow","resolution":"2018-05-23" }
What's the weather like in Seattle tomorrow?(西雅图明天天气怎样?)
CheckWeather { "type": "date_range", "entity": "this weekend" } Show me the forecast for this weekend(显示本周末的天气预报)

None 意向

已创建 None 意向但有意留空。 None 意向是必需的意向,不能删除或重命名。 使用域外的陈述对其进行填充。

None 意向是回退意向,应占语句总数的 10%。 它在每个应用中都很重要,因为它用于训练应用域(主题区域)中不重要的 LUIS 语句。 如果不向 None 意向添加任何陈述,LUIS 会强制域外的陈述进入其中一个域意向。 这将因对 LUIS 进行了错误的陈述意向训练而扭曲预测评分。

当话语预测为 None 意向时,客户端应用程序可以询问更多问题或提供菜单以指导用户进行有效选择。

反面意图

如果希望确定正面和反面意向,例如“我想要一辆车”和“我不想要一辆车”,则可以创建两个意图(一个正面意向和一个反面意向),并为每个意向添加适当的陈述。 或者,可以创建单个意向,并将两个不同的正面和反面术语标记为实体。

意向和模式

如果你有可部分或全部定义为正则表达式的示例话语,请考虑使用与模式配对的正则表达式实体

使用正则表达式实体可以确保数据提取,以便匹配模式。 模式匹配可确保返回确切的意向。

意向平衡

应用域意向应让每个意向的陈述数保持平衡。 例如,请勿出现大多数意向具有 10 个语句,而其他意向具有 500 个语句的情况。 这样不平衡。 在这种情况下,需要查看具有 500 个语句的意向,了解是否可将其中许多意向重新组织为模式

平衡中不包含 None 意向。 该意向应包含应用中总陈述数的 10%。

意向限制

查看限制以了解可添加到模型中的意向数。

提示

如果所需意向数超过了最大意向数,请考虑系统是否使用了过多的意向,并确定是否应将多个意向合并到具有多个实体的单个意向中。 如果意向过于类似,则会增加 LUIS 区分它们的难度。 意向应具有足够的差异,以捕获用户要求的主要任务,但无需捕获代码所采用的每条路径。 例如,两个意向:在旅行应用中,BookFlight() 和 FlightCustomerService() 可能是单独的意向,但 BookInternationalFlight() 和 BookDomesticFlight() 太过于相似。 如果系统需要将其区分开来,请使用实体或其他逻辑,而不是意向。

请求具有大量意向的应用的帮助

如果减少意向数或将意向划分给多个应用不起作用,请与支持部门联系。 如果所持 Azure 订阅包含支持服务,请与 Azure 技术支持联系。

意向最佳做法:

应定义不同的意向

确保每个意向的词汇特定于该意向,而不会与其他意向的词汇重叠。 例如,如果要创建一款处理行程安排(例如航班和酒店)的应用,可以选择将这些主题领域视作彼此独立的意向或视为同一意向,其中包含话语中特定数据的实体。

如果两个意向的词汇相同,请合并意向并使用实体。

请考虑以下话语示例:

  1. 预订航班
  2. 预订酒店

“预订航班”和“预订酒店”使用了同样的词汇“预订 <名词>”。 此格式相同,所以它应该是同一意向,只是使用不同的词语(“航班”和“酒店”)作为提取的实体。

将特征添加到意向

特征描述了意向的概念。 特征可以是对该意向非常重要的单词短语列表,也可以是对该意向非常重要的实体。

请找到意向的平衡点

使用 LUIS 中的预测数据来判定意向是否存在重叠的情况。 重叠的意向会困扰 LUIS。 结果是评分最高的意向会与另一个意向非常接近。 由于 LUIS 不会在每次训练的数据中使用完全相同的路径,所以重叠意向可能会在训练中排到第一或第二的位置。 各意向的语句分数应相互拉开差距以避免出现上述差异情况。 更好地区分意向可以使得每次训练都得出预期的最高分意向。

平衡各意向间的语句数

为了使 LUIS 预测准确,每个意向(None 意向除外)中示例语句的数量必须相同(相对说来)。

如果一个意向有 500 个示例语句,所有其他意向有 10 个示例语句,则 500 个语句的意向的预测准确率会更高。

将示例语句添加到 None 意向

此意向是回退意向,指示应用程序以外的所有内容。 针对 LUIS 应用其余部分的每 10 个话语示例,向“None”意向中添加一个话语示例。

请勿将许多话语示例添加到意向

发布应用后,仅在开发生命周期过程中添加主动学习中的言语。 如果话语太过相似,请添加模式。

请勿混淆意向和实体的定义

为聊天机器人将执行的任何操作创建一个意向。 将实体用作实现操作的参数。

例如,为预订航班的机器人创建一个“BookFlight”意向。 请勿为每条航线或每个目的地都创建一个意向。 将这些数据用作实体,并在话语示例中进行标记。

后续步骤

如何使用意向