将实体添加到 LUIS 模型
实体是机器人从符合意图的特定话语中提取的信息。
例如,让 My name is John Doe
属于一个名为 introduction
的意图。为了让机器人理解并从句子中提取名称 John Doe
,你需要定义一个实体。你可以根据需要为实体命名,但最好将其命名为与其提取的内容相关的内容。在我们的例子中,我们可以称我们的实体 name
。
可以在不同意图之间重用实体,以提取不同的内容。因此,最好的原则是创建一个只提取数据类型并在不同意图中使用它的实体。因此,在上面的例子中,假设 Book a flight on Emirates
属于意图 booking
,那么同一个实体 name
可用于提取飞行名称 emirates
。
在继续定义实体之前,你需要记住两件事 -
- 实体在意图中的每个话语应该是唯一的。实体不能在同一个话语中使用两次。
- LUIS 不区分大小写。这意味着通过实体提取提取和接收的所有内容都是小写的。因此,通过实体提取区分大小写的数据可能是一个坏主意。
添加预建实体
顾名思义,预构建的实体是预先构建的,即它们已经被配置为在添加它们的意图中提取特定类型的数据。一个例子可以是实体 number
,它从分配给它的意图中提取数字。数字可以是数字或字母,如 10
或 ten
。
有关所有预建实体的完整列表,你可以访问[预建实体列表] [1]。
要添加预建实体,
- 转到
entities
选项卡。 - 单击
Add pre-built entities
并选择要添加到模型的实体,然后单击保存。
添加自定义实体自定义实体有 4 种类型,
- 简单 :一个简单的实体提取一个特定的数据,上面例子中的
name
是一个简单的实体。 - 分层 :具有子实体(子类型)的父实体,它们依赖于父实体。
- 复合 :由两个或多个独立在一起的实体组成的组。
- 列表 :仅识别给定列表中的单词的实体。
定义简单实体
- 去
entities
标签。 - 点击
Add Custom Entities
- 为你的实体命名,检查所需的实体类型并点击
Save
。
只需将 Entity Type
更改为上述类型之一,即可以相同的方式添加所有其他类型的实体。在分层和复合实体类型中,你还需要将子名称与父实体名称一起提供。定义列表实体与其他实体略有不同。
定义列表实体
按照上述步骤创建 List Entity
后,将 Entity Type
设置为 List,你将被定向到你刚定义的实体的详细信息页面。
- 定义规范值。这是当用户键入任何同义词时机器人将收到的标准值。
- 定义规范值的同义词。它们将在实体遇到时转换为规范值。
你还可以使用以下格式的 JSON 对象数组导入整个列表:
[
{
"canonicalForm": "Hey",
"list": [
"Howdy",
"Hi"
]
},
.
.
.
]
将实体与意图相关联
Pre-built
和 list
实体已经定义了一组可以从所有语言中提取的值,但是,需要训练 Simple
,Hierarchical
和 Composite
话语来获取值。
这可以通过
- 转到
intents
选项卡,然后选择要添加实体的意图。 - 添加一个具有你想要提取的虚拟值的话语。说,你可以添加
My name is John Doe
作为话语。 - 单击并将鼠标拖动到要实体提取的单词上。你将需要在上面的示例中突出显示
john doe
。 - 将打开一个下拉列表,其中列出了项目中可用的所有实体。根据需要选择相应的一个。
Name
将是上例中选择的实体。 - 每次添加具有不同虚拟值的更多话语以及你可以想到的所有可能结构。
- 培训并发布你的 LUIS 模型。