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