IBM Cloud Docs
定义要在客户输入中查找的信息

定义要在客户输入中查找的信息

实体表示用户输入中与用户目的相关的信息。

如果意图代表动词(用户想要完成的任务),实体则代表名词(该任务的目标或背景)。 例如,如果意向是获取天气预报,那么需要相关的位置和日期实体,然后应用程序才能返回准确的预测。

识别用户输入中的实体可帮助您设计更有用的目标响应。 例如,您可能具有 #buy_something 意向。 用户发出触发 #buy_something 意向的请求时,助手的响应应该反映出对客户希望购买的物品的理解。 可以添加 @product 实体,然后将其用于从用户输入中抽取有关客户感兴趣的产品的信息。 ( @ 前缀有助于明确将其标识为实体。)

您可以根据用户在请求中检测到的 @product 值,在对话树中添加多个响应,每个响应的措辞都不同。

实体求值概述

助手使用下列其中一种求值方法来检测用户输入中的实体:

基于字典的方法

助手在用户输入中查找与您为实体定义的值、同义词或模式相匹配的词汇。

  • 同义词实体: 将术语类别定义为实体 (color),然后在该类别中定义一个或多个值 (blue)。对于每个值,指定一组同义词 (aquanavy)。

    在运行时,助手会将用户输入中与您为实体定义的值或同义词完全匹配的词汇识别为该实体的提及项。

  • 模式实体: 将术语类别定义为实体 (contact_info),然后在该类别中定义一个或多个值 (email)。对于每个值,指定一个正则表达式,用于定义该值类型的提及项的文本模式。 对于 email 实体值,您可能需要指定一个正则表达式来定义 text@text.com 模式。

    在运行时,您的助手会在用户输入中寻找与您的正则表达式匹配的模式,并将任何匹配项识别为该实体的提及。

  • 系统实体:IBM 为您预构建的同义词实体。 系统实体涵盖常用的类别,例如数字、日期和时间。 您只需启用系统实体就可以开始使用该实体。

基于注释的方法

定义基于注释的实体(也称为上下文实体)时,会基于注释的词汇以及您在注释的语句中使用该词汇的上下文对模型进行训练。 这种上下文实体模型使您的助手能够根据用户在输入时对某个词或短语的使用方式,计算出该词或短语作为实体实例的置信度。

  • 上下文实体: 首先,将术语类别定义为实体 (product)。接下来,转至“意向”页面并挖掘现有意向用户示例以查找实体的任何提及项,并将其标记为此类提及项。 例如,您可能转至 #buy_something 意向,然后找到了用户示例:I want to buy a Coach bag。 您可以将 Coach bag 标注为 @product 实体的提及项。

    出于培训目的,Coach bag 作为 @product 实体的值被添加进来。

    在运行时,助手将仅根据在语句中使用词汇的上下文对词汇进行求值。 如果提及词汇的用户请求的结构与在其中标注了提及项的意向用户示例的结构相匹配,那么助手会将该词汇解释为该实体类型的提及项。 例如,用户输入可能包括 I want to buy a Gucci bag。 由于此语句的结构与所注释的用户示例 (I want to buy a Coach bag) 类似,因此助手会将 Gucci bag 识别为 @product 实体提及项。

    将上下文实体模型用于实体时,助手不会在用户输入中查找实体的完全文本或模式匹配项,而是关注提及该实体的语句的上下文。

    如果选择使用注释来定义实体值,请为每个实体至少添加 10 个注释,以向上下文实体模型提供足够的数据,使该模型变得可靠。

创建实体

  1. 单击 实体

  2. 单击创建实体

    还可以单击系统实体以从 IBM 提供的常见实体列表中选择可应用于任何用例的实体。 有关更多详细信息,请参阅启用系统实体

  3. 实体名称字段中,输入实体的描述性名称。

    实体名称可以包含字母(Unicode 格式)、数字、下划线和连字符。 例如:

    • @location
    • @menu_item
    • @product

    请勿在名称中包含空格。 名称长度不能超过 64 个字符。 名称不能以字符串 sys- 开头,因为该字符串保留用于系统实体。

    实体名称前自动添加“at”符号 @,以表明该术语是一个实体。 您无需添加该符号。

  4. 单击创建实体

    创建实体的截屏
    创建实体

  5. 对于此实体,选择是希望助手使用基于字典的方法还是基于注释的方法来查找此实体的提及项,然后遵循相应的过程。

    对于创建的每个实体,请仅选择一个要使用的实体类型。 为实体添加注释后,上下文模型会立即初始化,并成为分析用户输入以查找该实体的提及项的主要方法。 在用户输入中使用提及项的上下文优先于可能存在的任何完全匹配项。 有关更多信息,请参阅 实体评估概述

添加基于字典的实体

基于字典的实体用于定义特定术语,同义词或模式。 在运行时,仅当用户输入中某个词汇与值或该值的其中一个同义词完全匹配(或者在启用模糊匹配的情况下匹配程度极高)时,助手才会查找实体提及项。

  1. 值名称字段中,输入值。 例如,对于 @city 实体,可以输入 New York City

    实体值可以是最大长度为 64 个字符的任何字符串。

    **重要信息:**不要在实体名称或值中包含敏感或个人信息。 应用程序中的URL中可以包含名称和值。

  2. 为该值添加同义词。 例如,可以将 NYCThe Big Apple 添加为 New York City 的同义词。

    同义词可以是最大长度为 64 个字符的任何字符串。

    如果要定义助手在用户输入中查找的模式,例如产品订单号或电子邮件地址,请改为定义模式值。 有关更多详细信息,请参阅添加用于识别模式的实体

    **注:**可以为单个实体值添加同义词模式,但不能同时添加这两者。

  3. 如果希望助手识别其语法与您指定的实体值和同义词类似的词汇,而不需要完全匹配,请将模糊匹配开关设置为开启

    例如,如果您将 apple 添加为 @fruit 实体的值,并且用户输入 applesappel,如果启用模糊匹配,您的助手会将该词识别为 @fruit 提及。 有关更多信息,请参阅模糊匹配如何工作

  4. 单击添加值并重复该过程以添加更多实体值。

    如果要接连添加多个值,请按 Shift+Enter 键以完成当前值的添加,并使焦点保留在值字段中,这样就可以添加下一个值。

  5. 添加实体值后,点击关闭箭头 完成实体创建。

您创建的实体被添加,系统会根据新数据自行训练。

添加用于识别模式的实体

您可以创建在用户输入中查找模式的实体。 例如,可以通过查找模式 {word}+@+{word}+.com 的符合条件项来查找电子邮件地址的提及项。 或者,您的产品订单号可能遵循特定的格式,例如 TWEX3433JKL。 可以创建模式,用于在用户的话语中查找具有该语法的字符串。

要添加用于识别模式的实体,请执行以下操作:

  1. 按照标准流程创建基于词典的实体,但要从类型菜单中选择模式,而不是同义词

    在创建实体时显示选取模式类型
    选择模式类型

  2. 添加用于定义要查找的模式的正则表达式。

    • 对于每个实体值,最多有5种模式。
    • 每个模式(正则表达式)限制为 512 个字符。

    定义模式实体的截屏
    模式实体

    遵循以下语法规则:

    • 实体模式不能包含:

      • 肯定重复(例如,x*+
      • 反向引用(例如,\g1
      • 条件分支(例如 (?(cond)true)
    • 模式实体以 Unicode 字符开头或结尾,并且包含字边界(例如 \bš\b)时,模式匹配与字边界无法正确匹配。 在此示例中,对于输入 š zkouška,匹配会返回 Group 0: 6-7 š (š zkouška),而不是返回正确的 Group 0: 0-1 š (š zkouška)。

      正则表达式引擎以松散方式基于 Java 正则表达式引擎。 如果您尝试使用API或 Watson Assistant传不支持的图案,则会看到错误信息。

    例如,对于实体 ContactInfo,可以按如下所示定义电话、电子邮件和 Web 站点值的模式:

    • 电话
      • localPhone: (\d{3})-(\d{4}),例如 426-4968
      • fullUSphone: (\d{3})-(\d{3})-(\d{4}),例如 800-426-4968
      • internationalPhone: ^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$,例如 +44 1962 815000
    • 电子邮件
      • email: \b[A-Za-z0-9._%+-]+@([A-Za-z0-9-]+\.)+[A-Za-z]{2,}\b,例如 name@ibm.com
    • Website
      • website: (https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$,例如 https://www.ibm.com
  3. 单击添加值并重复该过程以添加更多实体值。

使用模式实体在用户输入中查找模式时,通常需要一种方法来存储用户输入文本中与模式匹配的部分。 为此,可以使用上下文变量。 有关更多信息,请参阅定义上下文变量

例如,您的对话框可能会询问用户的电子邮件地址。 对话节点条件包含一个与 @contactInfo:email 类似的条件。 您可以在对话节点的响应部分中使用以下语法来定义用于捕获并存储用户电子邮件地址文本的上下文变量:

保存模式
变量
email <? @contactInfo.literal ?>

此语法指示要查找用户输入中与电子邮件模式匹配的部分,并将该部分文本保存到名为 email 的上下文变量中。

捕获组

对于正则表达式,一对普通括号内模式中的任何部分都会被捕获为一个组。 例如,实体 @ContactInfo 具有模式 fullUSphone,其中包含三个捕获的组:

  • (\d{3}) - 美国区号
  • (\d{3}) - 前缀
  • (\d{4}) - 线路号码

分组功能很有用,例如,如果您希望助理询问电话号码,然后在回复时只使用区号。

要将用户输入的区号分配为上下文变量,请在对话节点的响应部分中使用以下语法来捕获组匹配:

保存捕获组
变量
area_code <? @ContactInfo.groups[1] ?>

有关在对话中使用捕获组的更多信息,请参阅存储和识别输入中的实体模式组

模糊匹配如何工作

模糊匹配可用于特定语言。 有关更多信息,请参阅支持的语言

模糊匹配具有以下组成部分:

  • 词干提取 - 此功能识别具有多种语法形式的实体值的词干形式。 例如,bananas 的主域是 banana,而 running 的主域是 run

  • 拼写错误检查 - 此功能可将用户输入映射到对应的正确实体,即使存在拼写错误或语法方面略有差异也能正确映射。 例如,如果您将 giraffe 定义为动物实体的同义词,并且用户输入包含 giraffesgirafe,模糊匹配可以映射该术语。

  • 部分匹配 - 部分匹配功能会自动建议在用户定义的实体中提供的基于子字符串的同义词,并为其分配低于完全实体匹配的置信度分数。

    仅在英语对话技能中支持部分匹配组件。

对于英语,模糊匹配会阻止捕获一些常见的有效英语单词作为实体的模糊匹配。 此功能使用标准英语字典中的单词。 您还可以定义英语实体值和同义词,模糊匹配仅与定义的实体值或同义词匹配。 例如,模糊匹配可能会将 unsureinsurance 匹配;但如果您将 unsure 定义为 @option 等实体的值或同义词,那么 unsure 将始终与 @option 匹配,而不会与 insurance 匹配。

不允许词干和拼写错误的模糊匹配功能之间的交互。 具体而言,如果对实体或输入进行词干,那么拼写模糊匹配不起作用。 例如,假定实体为 @lending,输入字为 pending。 在实体词干提取期间,@lending 会生成 lend。 在输入词干提取期间,pending 将生成 pend。 在此情况下,lendpend 不匹配,因为实体和输入是词干的。 此更改仅适用于英语语言。

添加上下文实体

使用基于注释的实体来注释示例句子中实体的出现,以向您的助手传授该实体的典型使用语境。

要训练上下文实体模型,您可以利用意图示例,这些示例提供了需要注释的句子。

此功能在英语对话技能中普遍可用,而在法语对话技能中作为 Beta 功能发布。 有关更多信息,请参阅支持的语言

使用意向的用户示例来定义上下文实体不会影响该意向的分类。 不过,标注的实体提及项还会添加为该实体的同义词。 意向分类会在意向用户示例中使用同义词提及项,以在意向与实体之间建立弱引用。

  1. 单击 意向

  2. 单击意向以将其打开。

  3. 单击注释实体,然后查看潜在实体提及项的意向示例。

  4. 单击意向示例中作为单个实体提及项的一部分的任一词、多个词或标点符号。

    在此示例中,mobile phones 是实体提及项。

    复审意向示例
    复审意向示例

    这将打开“搜索框”,可以使用该框来搜索突出显示的词或短语是其提及项的实体。

    具有搜索参数 prod 的搜索框
    搜索框

  5. 输入要搜索的实体名称。 您无需包含开头的 @ 符号。

    执行下列其中一个操作:

    • 如果实体具有任何现有实体值,那么会显示这些实体值以仅供参考。 您要将注释添加到实体,而不是添加到任何特定实体值。

    • 如果希望让模型知道该提及项是现有实体值的同义词,请在实体名称后添加冒号 (:) 以显示实体值的列表。 从显示的列表中选择实体值。 例如,@product:device

      具有搜索参数 prod 的搜索框
      显示实体值列表

  6. 选择要向其添加注释的实体或者实体和值。

    在此示例中,将添加 mobile phones 作为 @product 实体值的注释,并作为 @product:device 实体值的同义词。

    为每个上下文实体创建 至少 10 个注释。 建议生产使用更多注释。

  7. 如果任何实体都不适用,可以通过添加新实体的名称来创建新实体。 然后,从列表中选择 {entity_name}新实体 )选项。

    显示如何从注释页面
    创建新实体
    添加新 @location 实体

  8. 对于要注释的每个实体提及项重复此过程。

    确保对编辑的任何用户示例中出现的每个实体类型提及项进行注释。 有关更多详细信息,请参阅不注释的内容很重要

  9. 单击您创建的其中一个注释。 这将打开一个框,其中显示Go to: {entity-name}。 单击该链接可直接转至该实体。

    验证产品实体的值计算机
    转至实体

    注释将添加到关联实体中,系统将根据新数据自行训练。

    您标注的术语将作为新的词典值添加到实体中。 如果将注释的词汇与现有实体值相关联,那么会将该词汇添加为该实体值的同义词,而不是添加为独立的实体值。

    显示手机已添加为设备值的同义词
    手机已添加为同义词

  10. 要查看为特定实体注释的所有提及项,请在实体的配置页面中,单击注释选项卡。

    注释视图选择器已突出显示
    请参阅所有注释

    上下文实体可理解您未显式定义的值。 该系统根据您的用户示例的注释方式预测更多实体值,并使用这些值来训练其他实体。 任何类似的用户示例都会添加到注释视图中,以便您可以了解此选项如何影响训练。

    如果不希望上下文实体使用此扩展的实体值理解,请在该实体的注释视图中选择所有用户示例,然后单击删除

不注释的内容很重要

如果您有带注释的意向示例,并且该示例中的另一个词与同一实体的值或同义词相匹配,但并未对该值进行注释,那么这一省略行为会产生影响。 该模型还会根据您未注释的术语上下文进行学习。 因此,如果在用户示例中将一个词汇标注为某个实体的提及项,请确保同时标注其他任何适用的提及项。

  1. #Customer_Care_Appointments 意向包含两个具有词 visit 的意向示例。

    访问示例意向
    访问示例

  2. 词第二次出现时,您希望将词 visit 注释为 @meeting 实体的实体值。 此注释使 visit 等同于其他 @meeting 实体值,例如 appointment,如 “我想预约”“我想安排参观”。

    @meeting 实体
    使用 @meeting 实体进行注释访问

  3. 第一次出现时,词 visit 是用作动词。 其含义与 meeting 不同。 在这种情况下,可以从意向示例中选择词 appointment,并将其注释为 @meeting 实体的实体值。 模型会学习到同一示例中的词 visit 未注释这一事实。

    访问未选择的
    选择委任

启用系统实体

Watson Assistant 提供了若干系统实体,这些是可用于任何应用程序的常见实体。 通过启用系统实体,可以使用在许多用例中通用的训练数据来快速填充技能。

可以使用系统实体来识别其所表示的对象类型的大范围值。 例如,@sys-number 系统实体与任何数字值匹配,包括整数、小数部分,甚至包括写出为字的数字。

系统实体是集中维护的,因此任何更新都会自动可用。 您无法修改系统实体。

  1. 在“实体”页面上,单击系统实体

  2. 浏览系统实体的列表以选择对您的应用程序有用的系统实体。

    • 要查看有关系统实体的更多信息(包括匹配输入的示例),请单击列表中的实体。
    • 有关可用系统实体的详细信息,请参阅系统实体
  3. 对于要使用的每个系统实体将开关设置为开启

启用系统实体后,Watson Assistant 将重新训练。 训练完成后,即可以使用实体。

实体限制

可以创建的实体、实体值和同义词的数量取决于 Watson Assistant 服务套餐:

计划详细信息
套餐 每个技能的实体数 每个技能的实体值数 每个技能的实体同义词数
企业 1,000 100,000 100,000
高级 (旧版) 1,000 100,000 100,000
Plus 1,000 100,000 100,000
Lite,试用 100 100,000 100,000

启用供使用的系统实体数会计入套餐使用量总计。

套餐详细信息(续)
套餐 上下文实体数和注释数
企业 150 个上下文实体,带 3000 个注释
高级 (旧版) 150 个上下文实体,带 3000 个注释
Plus 100 个上下文实体,带 2000 个注释
Lite,试用 10 个上下文实体,带 1000 个注释

编辑实体

可以单击列表中的任何实体以将其打开进行编辑。 可以重命名或删除实体,也可以添加、编辑或删除值、同义词或模式。

如果将实体类型从synonym更改为pattern,或者从“模式”更改为“同义词”,那么将转换现有值,但这些值可能不会像原来那样有用。

下载实体

您可以将多个实体下载到CSV文件中,以便在另一个助手中上传并重复使用它们。

  • 模式信息包含在下载的CSV文件中。 使用 / 包装的任何字符串都被视为模式 (而不是同义词)。
  • 不会下载与上下文实体关联的注释。 您必须下载整个对话框,才能获取实体值和任何相关注释。
  1. 转至实体页面

    • 要下载所有实体,请不要选择任何单个实体。 而是单击 下载所有实体 图标 "下载所有实体" 图标

    • 若仅下载当前页面列出的实体,请勾选标题中的复选框。 此操作将选中当前页面上的所有实体。 然后点击 “下载”按钮

    • 要下载一个或多个特定实体,请选择要下载的实体,然后点击 “下载”按钮

  2. 指定生成的CSV文件的名称和存储位置,然后点击保存

上载实体

如果您有很多实体,那么从逗号分隔值(CSV)文件上传它们可能比逐一定义它们要容易。

实体注释不包含在实体CSV文件的上传中。 您必须上载整个对话框以保留上下文实体的关联注释。 如果您仅下载和上传实体,那么您下载的任何上下文实体在上传后将被视为基于词典的实体。

  1. 将实体收集到 CSV 文件中,或将其从电子表格导出为 CSV 文件。 文件中每一行的必需格式如下所示:

    <entity>,<value>,<synonyms>
    

    其中,<实体>是实体的名称,<值>是实体的值,<同义词>是以逗号分隔的该值的同义词列表。

    weekday,Monday,Mon
    weekday,Tuesday,Tue,Tues
    weekday,Wednesday,Wed
    weekday,Thursday,Thur,Thu,Thurs
    weekday,Friday,Fri
    weekday,Saturday,Sat
    weekday,Sunday,Sun
    month,January,Jan
    month,February,Feb
    month,March,Mar
    month,April,Apr
    month,May
    

    上传CSV文件时也支持模式。 使用 / 包装的任何字符串都被视为模式 (而不是同义词)。

    ContactInfo,localPhone,/(\d{3})-(\d{4})/
    ContactInfo,fullUSphone,/(\d{3})-(\d{3})-(\d{4})/
    ContactInfo,internationalPhone,/^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$/
    ContactInfo,email,/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/
    ContactInfo,website,/(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
    

    保存的 CSV 文件为 UTF-8 编码且无字节顺序标记 (BOM)。 CSV文件的最大容量为10 MB。 如果您的CSV文件较大,请考虑将其拆分为多个文件并分别上传。 打开对话技能,然后单击实体选项卡。

  2. 单击 上载 图标 "上载" 图标

  3. 拖动文件,或者浏览以从计算机中选择文件,然后单击 上载实体

    文件经过验证并上传,系统对新数据进行自我训练。 您可以在实体页面查看上传的实体。

删除实体

可以选择多个实体进行删除。

删除实体时,将除去与该实体关联的任何值、同义词、模式或注释。 日后无法检索这些数据。 所有引用这些实体或值的对话节点都必须手动更新为不再引用已删除的内容。

  1. 转至实体页面。

    • 要删除所有实体,请不要选择任何单独的实体。 而是单击 删除所有实体 图标 "删除所有实体" 图标

    • 要仅删除当前页面上列出的实体,请选中标题中的复选框。 此操作将选中当前页面上列出的所有实体。 然后点击 “删除” 按钮。

    • 要删除一个或多个特定实体,请选择要删除的实体,然后点击 “删除”按钮