使用实体
代理对话使用自然语言理解,基于用户在对话窗口中输入的内容来识别其意图。 例如,如果用户输入文本我尝试使用礼品卡,但不成功, 自然语言理解会帮助进行识别,并将用户定向到与礼品卡不成功相关的主题,即使未将该精确短语列为触发短语。
自然语言理解的一个关键方面是标识在用户对话框中使用的实体。 将实体视为表示特定类型的实际主题的信息单元,例如电话号码、邮政编码、城市或人员姓名。
Microsoft Copilot Studio 随附一组开箱即用的预生成实体。 这些实体表示现实对话框中最常用的一些信息,例如年龄、颜色、数字和姓名。 借助通过实体获得的知识,代理可以从用户输入中识别相关信息,并将其保存以供以后使用。
让我们使用预生成的实体 City。 像其他预生成实体一样,它可以从“实体”选项卡中访问。检查实体时,可以查看说明及其使用方式。
例如,当用户输入我们的业务总部位于西雅图时,通过使用此城市实体,代理知道西雅图表示信息的城市类型。 当代理提取此实体并将其保存到变量时,它会将“西雅图”保存为城市,即使周围信息为文本。
将问题节点插入到主题中时,可以在问题的“标识”部分使用实体。 例如,在下面的示例中,我们将询问用户居住在哪个城市。 通过将“标识”字段设置为“城市”,代理将从用户键入的文本中提取用户所在的城市。
该用户所在的城市将存储在名为 UserCity 的变量中,稍后可在主题或对话中使用。
现在,我们已经探讨了一些可用的预生成实体,下面我们来探讨如何根据需要生成自己的自定义实体。
一旦定义了您的实体,就可以在构建代理对话时使用它们。 使用它们的最简单方法是打开主题的创作画布并添加问题节点。 问题节点允许代理使用实体来识别用户提交的信息,并将此信息另存为变量。 问题节点的识别功能会告知代理需要从用户查询中识别哪些信息。
当对话中出现此问题时,用户只需键入他们要查找的部门。 然后,该项目将与实体列表中的项目进行比较和匹配。
在上图中,用户表达了对徒步旅行的兴趣,这是远足的另一种说法。 代理会识别此信息,并且由于我们将徒步旅行定义为远足的同义词,因此代理显示与远足相关的信息。
在某些情况下,组织可能会决定,他们希望向用户显示按钮以简化选择。 例如,如果您希望某些类别项目显示为用户可选择作为输入的按钮,请选中选择用户的选项,然后从列表中选取。 在对话中,客户可以选择所需的项目按钮,或者以文本形式手动输入其他类别。
使用槽填充
槽填充是一种自然语言理解概念,用于将提取的实体保存到对象。 简单来说,槽填充会匹配客户输入的内容,然后将其适当存储在变量中。 例如,当被要求提供类别类型时,客户可能会选择远足,也可能会键入徒步旅行,如下图所示。 由于徒步旅行被定义为同义词,仍然应视为用户输入了“远足”。 槽填充可确保即使输入了其他内容,它也与正确的类别相关联。 提取的实体远足将用作产品类别变量的值。
主动槽填充
另一个概念称为主动槽填充。 在这种情况下,用户可指定映射到多个实体的多条信息。 代理可自动理解什么信息属于哪个实体。
可以在节点级别手动控制主动槽填充。 如果您想要始终在特定节点内提示问题,而不管该槽是否已根据之前的用户响应填充,您可以禁用跳过问题选项,并针对该问题节点每次进行询问。
默认问题行为设置为允许跳过问题,这允许代理主动检测用户查询中的实体,而无需提示用户提供他们已提供的信息。
在以下示例中,用户写下了我想购买一些徒步旅行装备。 这其中包括客户想要购买装备的触发短语,还提供了第二条信息,即实际的装备类型。 在这种情况下,代理将同时填充购买装备实体和装备类型。 这与上一个示例不同,上一个示例中代理需要提示用户提供设备类型。 代理接受用户输入,并智能地跳过询问产品类别的问题。
注释
请注意,由于用户为户外运动类别实体提供了值,因此跳过了问题节点,从而允许代理推进对话,而无需询问用户已提供的信息。
代理始终积极关注用户输入,提前记住信息,以便适当地跳过不必要的步骤。
让我们重新开始测试,并尝试另一个案例。 在这一轮中,我们添加了更多问题节点,询问远足装备的类型和价格范围(使用金钱实体)等信息。
这次出现产品类别问题时,用户可以说我想买一双 100 美元以下的远足鞋,而不是只告诉代理产品类别。
在此示例中,代理不仅能够找到正确的远足产品类别路径,还能主动填充用于询问远足装备类型和目标价格范围信息的槽。
上一单元中讨论的预生成实体涵盖许多常见信息类型。 但是,在某些情况下,组织可能需要适用于更多特殊应用场景的语言理解。 例如,假设您需要为一家户外商店生成代理。 该代理可能需要识别不同类型的户外产品。 可以创建名为户外商店类别的自定义实体。 此实体可存储商店提供的所有不同的户外产品, 此实体将帮助确保当有人键入钓鱼、滑雪或划船等户外产品时,代理能够将他们引导到正确的位置。
通过选择“设置”按钮,导航到实体选项卡,然后选择添加实体来创建自定义实体。 创建自定义实体时,需要定义要创建的实体类型。
自定义实体
可以创建两种类型的实体:
- 封闭式列表:用于定义短小的项目列表,例如大小、部门或位置的列表。
- 正则表达式 (regex):用于定义特定逻辑模式,例如 ID 编号、信用卡号或 IP 地址。
封闭式列表实体
要定义在与客户交互时可能有用的短小项目列表时(例如我们前面提到的户外公司示例),最好使用封闭式列表实体。 在下图中,我们创建了名为“户外商店类别”的封闭式列表自定义实体。 我们添加了户外产品类别名称列表。
当用户与聊天会话交互时,系统将查找列表中定义的值。 如果我们已创建特定于列表中项目的主题,用户可轻松转到其中的一个主题。 例如,如果用户输入我有一个棒球方面的问题,系统将识别列表中的棒球项目,并且根据配置,可能会显示棒球主题。
使用智能匹配
当客户与代理交互时,有时会键入错误的内容,或者输入的短语与实体中定义的短语略有不同。 例如,客户可能会输入垒球,而不是棒球。 这两项运动都使用相同类型的设备。 在产品类别方面,垒球应视为与棒球相同。 通过智能匹配,代理可以基于向实体提供的列表项目以模糊方式接受用户输入。 这意味着,代理不必查找完全匹配的项目。
启用智能匹配后,代理将自动更正拼写错误,并在语义上扩展匹配逻辑,例如自动将垒球与棒球匹配。
使用同义词
同义词选项与智能匹配相似,与智能匹配的不同之处在于它们不是自动的。 同义词是手动输入的。 它们会扩展逻辑以包括具有相似含义或实质相似的字词。 例如,将滑雪、单板滑雪和雪鞋健行等运动分组在一起并不罕见,因为它们都是雪上运动。 若要在我们的列表中满足此要求,可以将单板滑雪和雪鞋健行添加为滑雪产品类别的同义词。 如果用户输入单板滑雪或雪鞋健行,代理将理解这些字词与滑雪类别相关。 对于瑜伽等其他活动,可以添加普拉提。 智能匹配和同义词无缝协作,以使代理更智能。
正则表达式 (regex) 实体
利用正则表达式 (regex) 实体,您能够定义可用于匹配和提取输入中的信息的逻辑模式。 Regex 实体非常适合根据用户输入进行复杂模式匹配,或者如果您需要允许用户如何在对话中格式化或输入其输入的特定变体,此类实体也是绝佳之选。
例如,您可以使用 regex 实体,从用户输入到代理中的字符串中识别跟踪 ID、许可证编号、信用卡号或 IP 地址等项目。
选择 regex 实体时,您需要定义以下内容:
- 名称:定义 Regex 实体的名称。
- 描述:用于定义有关实体的更多详细信息的可选描述。
- 模式: 定义用于提取文本的模式。
在上图中,我们要创建名为跟踪编号的 regex 表达式实体。 输入的语法指定跟踪编号将以九位数开头并以一个大写或小写字母结尾。 (Ex.100456789A)
Regex 实体使用 .NET 正则表达式语法。
您可以使用以下链接了解有关创建 .NET 正则表达式语法的更多信息:
接下来,我们将讨论在主题中使用变量。