Dialogflow意图和实体
Dialogflow是Google的自然语言处理产品。 它支持各种欧洲和亚洲语言。 Dialogflow站点上提供了 全部文件 。
在尝试使用Dialogflow的实体之前,请确保您对 插槽 和 意图和实体映射 有深入的了解。
在链接您的意图和实体之前,请务必先将您的 Dialogflow代理的云配置 连接到您的机器人。
第一步是获取代理的意图名称。 要执行此操作,请启动Dialogflow,选择您正在使用其意图的代理,然后单击侧面导航中的 Intents。
在这里,您可以看到与此代理关联的所有意图。 这些是您需要在Stackchat机器人创建器中使用的意图名称。
要在检测到此意图时触发导航到Stackchati流程,请打开要导航到的 Configure AI流程 对话框。
在叠加层中,从Dialogflow添加要映射到Flow的意图名称。 请务必完全复制,因为它区分大小写。
将意图名称粘贴到Stackchat中的所需位置。
现在,您可以输入与该意图关联的实体。 您可以通过在Dialogflow中单击它来查看与意图关联的所有实体。
虽然意图表示用户在他们的话语中的总体意图,但实体代表我们想要提取的话语中的关键词。 Dialogflow中有两种类型的实体,自定义实体(由您创建的实体)和系统实体(Dialogflow提供的预构建实体,以便于处理最常用的常见概念)。
自定义实体并不比处理意图困难,因为它是Dialogflow和Stackchat之间的一对一映射。 例如,在上面使用的Weather意图中,有一个自定义实体,@Forecast_type
.
对于要映射的实体,复制Dialogflow的VALUE列中找到的文本,省略$
。
并将该值粘贴到Stackchat中,然后选择要将其映射到的Stackchat插槽。 在此示例中,Stackchat插槽与Dialogflow实体具有相同的名称,以防止混淆。
系统实体可以通过实体名称上的sys
前缀来识别,并且有两种主要类型的系统实体,以它们的结构来区分。 使用原始数据类型填充系统映射实体,并使用对象填充系统复合实体。
将系统复合实体链接到Stackchat插槽需要一些额外的步骤。 建议您查看 对话框系统实体的完整列表 ,以熟悉它们的工作原理。
系统映射实体以与自定义实体相同的方式添加到Stackchat。 上述意图的一个例子是@sys.geo-city
。 该实体识别话语中的城市(顾名思义),并由表示检测到的城市名称的字符串填充。
要将此系统实体映射到Stackchattext
插槽,可以将 VALUE 放置在Stackchat中的实体字段中,同样省略$
。
系统复合实体(即填充了对象的系统)具有多条可以映射到Stackchat插槽的信息。 这些需要不同的插槽配置。
从目前我们一直在关注的意图来看,系统复合实体的一个例子是@sys.date-period
。
我们来看一下 Dialogflow系统实体文档.
Name | Descriptions | Examples | Returned Data Type | Returned Object Example |
---|---|---|---|---|
@sys.date-period | Matches a date interval | April | Object: Strings in ISO-8601 format | {"startDate":"2018-04-01T12:00:00-06:00","endDate":"2018-04-30T12:00:00-06:00"} |
在 Returned Object Example 列中,我们可以看到该系统实体返回两个不同的值,“startDate”和“endDate”。
我们不能用日期周期对象填充Stackchat插槽,但是我们可以使用对象的属性填充Stackchat插槽,在这种情况下是date-period.startDate
和date-period.endDate
。
这种格式在Dialogflow中的所有系统复合实体中是一致的:entityname.specificdatapoint
。
由于从Dialogflow发送到Stackchat有两个数据点,我们需要将它们映射到两个Stackchatdate
时隙。 下图显示了如何最好地存储此信息。
除了检查 Dialogflow系统实体文档, 之外,另一种查看输出的好方法 system composite entity 是通过查看Dialogflow预览窗格中的 Diagnostic Info 来实现的。
在这里,话语是“下周的代顿天气”。
现在单击诊断信息。
在原始API响应中,我们可以看到系统映射实体(“geo-city”:“Dayton”
)和 system复合实体date-period
及其两个组件startDate
和endDate
。