实体选项

您可以通过多个实体选项更改实体匹配和数据提取的行为。这些选项是为系统实体预先配置的,因此对于系统实体无法更改,但对于您自己的自定义实体来说,则可进行更改。您可以根据所选的选项创建不同种类的实体:

此外,还有以下两个选项,这些选项不会确定实体的种类,但会影响实体匹配的行为:

本文档会逐一介绍上述选项。

如何查找此数据

构建代理时,最常见的方法是使用 Dialogflow 控制台(访问文档打开控制台)。以下说明着重介绍如何使用控制台。如需访问实体选项数据,请执行以下操作:

  1. 转到 Dialogflow 控制台
  2. 选择一个代理。
  3. 在左侧边栏菜单中选择实体 (Entities)。
  4. 选择自定义 (Custom) 标签页(对于为您的代理定义的自定义实体)或系统 (System) 标签页(对于您的代理使用的系统实体)。
  5. 查看任何现有实体的以下复选框选项:
    • 定义同义词 (Define synonyms)
    • 正则表达式实体 (Regexp entity)(仅限自定义实体)
    • 允许自动展开 (Allow automated expansion)(仅限自定义实体)
    • 模糊匹配 (Fuzzy matching)(仅限自定义实体)

如果您要使用 API 而非控制台来构建代理,请参阅 EntityTypes 参考。 API 字段名称与控制台字段名称类似。 以下说明重点介绍控制台与 API 之间的重要差异。

映射实体

映射实体提供从引用值到每个引用值的同义词的映射。每个映射实体条目都包含一个引用值和一个同义词列表。例如,以下每一行都是 size 实体类型的实体条目:

引用值 同义词
S S, small, tiny, little
M M, medium, average
L L, large, huge, big

请注意,上述每个实体条目的同义词列表中都包含引用值。为了让引用值得以匹配,需要将其作为同义词本身包含在内。当您最初通过控制台输入引用值时,该值会自动添加为同义词。

如果任何同义词匹配最终用户表述部分,则系统会提取相关引用值作为匹配项,并使用该值来解析关联的参数值

可以从同义词列表中省略引用值。这只是表示引用值与最终用户表述部分不匹配,但如果引用值的一个同义词匹配,则将引用值用作提取值。当您为最终用户未输入或说出的引用值使用特殊字符串时,这种做法十分可取。

许多系统实体都是映射实体。例如,@sys.date 系统实体匹配常规日期输入内容,如“January 1, 2015”或“The first of January of 2015”。这两项输入都映射到 ISO-8601 格式的引用值:“2015-01-01T12:00:00-03:00”。

如需创建映射实体,请执行以下操作:

  • 使用控制台,取消选中正则表达式实体 (Regexp entity) 选项,并选中定义同义词 (Define synonyms) 选项。
  • 使用 API,将 EntityType kind 字段设置为 KIND_MAP

列表实体

列表实体提供单值实体条目的列表。这些实体没有引用值和同义词。例如,以下每一行都是 material 实体类型的实体条目:

fabric
wood
metal

如果任何值匹配最终用户表述部分,则系统会提取该值作为匹配项,并使用该值来解析关联的参数值

许多系统实体都是列表实体。例如,@sys.color 系统实体匹配常规颜色输入内容,如“red”或“blue”。当某一颜色匹配时,提取值不会映射到任何引用值。例如,“scarlet”或“crimson”等红色系不会映射到“red”,但会被提取为原始值“scarlet”和“crimson”。

如需创建列表实体,请执行以下操作:

  • 使用控制台,取消选中正则表达式实体 (Regexp entity) 选项,并取消选中定义同义词 (Define synonyms) 选项。
  • 使用 API,将 EntityType kind 字段设置为 KIND_LIST

复合实体

复合实体是一种特殊种类的列表实体。列表实体的实体条目通常包含简单的字词或短语,但也可能包含其他实体类型。当某一实体类型被其他实体类型引用时,这种引用称为“别名”。如果某个列表实体包含其他实体类型的别名,则该列表实体称为复合实体。

创建别名时,您需要提供所引用实体类型的名称和所选的属性名称。如果某一复合实体在运行时匹配,则提取值会以 JSON 对象形式返回,其中别名属性名称用作 JSON 属性名称。别名的输入格式如下:

@entity-name:property-name

例如,您可以使用以下实体条目创建匹配城市或州/省/自治区/直辖市的 place 实体类型:

@sys.geo-city:city
@sys.geo-state:state

如果最终用户的表述包含“Nashville”部分,则匹配 place 实体类型。提取值将按如下形式返回:{"city": "Nashville"}

您还可以在一个实体条目中使用多个实体别名。请考虑以下 move 自定义实体类型,该类型包含 direction 实体类型和 @sys.number 系统实体类型的别名:

Direction 自定义映射实体类型

引用值 同义词
forward forward、forwards
back back、backward、backwards

Move 自定义列表实体类型

@sys.number:steps steps @direction:direction

如果 move 实体与包含“five steps backward”的最终用户表述匹配,则 move 实体将匹配。提取值将按如下形式返回:{"steps": 5, "direction": "back"}

许多系统实体都是复合实体。例如,@sys.unit-currency 系统实体用于匹配金额与货币名称。该实体与“50 euros”或“twenty dollars and five cents”之类的最终用户表述匹配。提取值以 JSON 对象形式返回,例如 {"amount": 50, "currency": "EUR"}

正则表达式实体

借助正则表达式实体,您可以提供正则表达式进行匹配。如需了解详情,请参阅正则表达式实体

如需创建正则表达式实体,请执行以下操作:

  • 使用控制台,选中正则表达式实体 (Regexp entity) 选项。
  • 使用 API,将 EntityType kind 字段设置为 KIND_REGEXP

自动扩展

您可以为自定义实体类型启用自动扩展功能。启用该功能后,您的代理可以识别尚未明确提供的值。例如,考虑一个 shopping list 实体类型:

引用值 同义词
bread bread
butter butter
milk milk
apple apple
ice cream ice cream

如果最终用户表述为“I need to buy some carrots”,则该实体类型将匹配“carrots”,即使未提供该值也是如此。代理会识别出“carrots”与其他值类似。请务必在训练语句中提供多个实体值示例,以帮助代理扩展实体类型,否则自动扩展功能可能无法发挥预期作用。

在考虑使用自动扩展功能时,您应遵循以下最佳做法:

  • 启用自动扩展功能并不能保证提取实体。对于有限列表,您应提供完整列表,而不是提供部分列表并启用自动扩展功能。
  • 如果您在多个实体中启用自动扩展功能,则可能会导致冲突和意外的分类结果。
  • 在训练语句中提供多个实体值示例。

如需启用自动扩展功能,请执行以下操作:

  • 使用控制台,选中允许自动扩展 (Allow automated expansion) 选项。
  • 使用 API,将 EntityType autoExpansionMode 字段设置为 AUTO_EXPANSION_MODE_DEFAULT

模糊匹配

您可以为自定义实体启用模糊匹配。启用模糊匹配后,值或同义词中的字词顺序便无关紧要。如需了解详情,请参阅模糊匹配

如需启用模糊匹配,请执行以下操作:

  • 使用控制台,选中模糊匹配选项。
  • 使用 API,将 EntityType enableFuzzyExtraction 字段设置为 true