Dialogflow意图和实体

Dialogflow是Google的自然语言处理产品。 它支持各种欧洲和亚洲语言。 Dialogflow站点上提供了 全部文件

在尝试使用Dialogflow的实体之前,请确保您对 插槽意图和实体映射 有深入的了解。

在链接您的意图和实体之前,请务必先将您的 Dialogflow代理的云配置 连接到您的机器人。

第一步是获取代理的意图名称。 要执行此操作,请启动Dialogflow,选择您正在使用其意图的代理,然后单击侧面导航中的 Intents

Dialogflow Intents list

具有9个意图的Dialogflow代理。

在这里,您可以看到与此代理关联的所有意图。 这些是您需要在Stackchat机器人创建器中使用的意图名称。

要在检测到此意图时触发导航到Stackchati流程,请打开要导航到的 Configure AI流程 对话框。

Dialogflow AI Configuration Location

列表视图中的配置AI按钮。

在叠加层中,从Dialogflow添加要映射到Flow的意图名称。 请务必完全复制,因为它区分大小写。

Dialogflow Copy Intent from Dialogflow

需要完全匹配包括案例。

将意图名称粘贴到Stackchat中的所需位置。

Dialogflow Paste Intent to Stackchat

完全匹配。

现在,您可以输入与该意图关联的实体。 您可以通过在Dialogflow中单击它来查看与意图关联的所有实体。

虽然意图表示用户在他们的话语中的总体意图,但实体代表我们想要提取的话语中的关键词。 Dialogflow中有两种类型的实体,自定义实体(由您创建的实体)和系统实体(Dialogflow提供的预构建实体,以便于处理最常用的常见概念)。

自定义实体并不比处理意图困难,因为它是Dialogflow和Stackchat之间的一对一映射。 例如,在上面使用的Weather意图中,有一个自定义实体,@Forecast_type.

A Dialogflow Custom Entity

您可以为自定义实体指定任何名称。

对于要映射的实体,复制Dialogflow的VALUE列中找到的文本,省略$

Dialogflow Entity Value

别忘了省略$。

并将该值粘贴到Stackchat中,然后选择要将其映射到的Stackchat插槽。 在此示例中,Stackchat插槽与Dialogflow实体具有相同的名称,以防止混淆。

Dialogflow Entity Connection to Slot

Dialogflow VALUE粘贴到Stackchat中。

系统实体可以通过实体名称上的sys前缀来识别,并且有两种主要类型的系统实体,以它们的结构来区分。 使用原始数据类型填充系统映射实体,并使用对象填充系统复合实体

系统复合实体链接到Stackchat插槽需要一些额外的步骤。 建议您查看 对话框系统实体的完整列表 ,以熟悉它们的工作原理。

系统映射实体以与自定义实体相同的方式添加到Stackchat。 上述意图的一个例子是@sys.geo-city。 该实体识别话语中的城市(顾名思义),并由表示检测到的城市名称的字符串填充。

Dialogflow System Entity

系统实体都以“sys.”开头。

要将此系统实体映射到Stackchattext插槽,可以将 VALUE 放置在Stackchat中的实体字段中,同样省略$

Dialogflow System Entity in Stackchat

请记住,这是区分大小写的。

系统复合实体(即填充了对象的系统)具有多条可以映射到Stackchat插槽的信息。 这些需要不同的插槽配置。

从目前我们一直在关注的意图来看,系统复合实体的一个例子是@sys.date-period

Complex Dialogflow System Entity @sys.date-period

@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.startDatedate-period.endDate

这种格式在Dialogflow中的所有系统复合实体中是一致的:entityname.specificdatapoint

由于从Dialogflow发送到Stackchat有两个数据点,我们需要将它们映射到两个Stackchatdate时隙。 下图显示了如何最好地存储此信息。

Complex Dialogflow System Entity Mapped to Slots

一切仍然是区分大小写的。

除了检查 Dialogflow系统实体文档, 之外,另一种查看输出的好方法 system composite entity 是通过查看Dialogflow预览窗格中的 Diagnostic Info 来实现的。

在这里,话语是“下周的代顿天气”。

Complex Dialogflow Preview

话语在顶部。

现在单击诊断信息

Complex Dialogflow System Entity in Raw API Response

原始查询和提取的实体。

在原始API响应中,我们可以看到系统映射实体“geo-city”:“Dayton”)和 system复合实体date-period及其两个组件startDateendDate