【问题标题】:How can I create a list of a combination of attributes in API.AI (Dialogflow)如何在 API.AI (Dialogflow) 中创建属性组合列表
【发布时间】:2017-11-07 01:50:09
【问题描述】:

我有一个要求,我想接受来自 API.AI 的 2 个属性的列表,例如,用户可以说以下任何一个:

添加 2 个橙子和 3 个香蕉 2 我的购物车

将 2 个橙子、3 个香蕉和 5 个苹果添加到我的购物车

所以它应该向我的应用程序发送计数和水果名称组合的列表。有什么建议吗?

【问题讨论】:

  • @AlecFenichel - 这实际上是 Dialogflow 的一个有效问题;给出的示例需要使用高级功能(复合实体),由此产生的答案将对其他开发人员有用。它不涉及编写任何代码。请参阅下面的答案。
  • 感谢@Dan Imrie-Situnayake 的回复。我曾尝试过这种方法。但是,这里的问题是我们在定义实体“fruit”时需要提供所有同义词。在更广泛的场景中,比如允许您添加杂货的应用程序,“水果”可以采用数千个值,它似乎不可扩展。在不定义“水果”的同义词的情况下,我们还有其他方法吗?
  • @Alec Fenichel 。正如 Dan 所提到的,这实际上是一个关于如何将对话流复合实体用于上述用例的问题。

标签: dialogflow-es


【解决方案1】:

您可以使用Composite Entities 来做到这一点。

首先,创建一个列出所有水果及其同义词的实体(我们称之为fruit)。

然后创建一个复合实体(我们称之为number-of-fruit),如下所示:

您只需要一个值,没有同义词,它应该包含您希望收集的两个参数:

  • @sys.number-integer:number@sys.number-integer 部分代表整数的系统实体,:number 部分是我们将给这个参数起的名字)

  • @fruit:fruit@fruit 部分是我们的水果实体的名称,:fruit 部分是我们将给这个参数命名的名称)

现在,当您将包含此格式项目的示例添加到意图时,您会看到检测到新的复合实体:

但是,示例中的出现当前被视为两个单独的参数,而不是列表。要将这些实体视为一个列表而不是两个离散项目,请选择第二个突出显示的示例并单击与第一个参数对应的项目(在屏幕截图中,它是带有蓝色文本的项目 number-of-fruit):

现在,您将看到参数部分表明此参数是一个列表:

保存并训练后,您可以通过控制台测试这是否适用于任意长度的列表:

【讨论】:

  • 感谢丹的回复。我曾尝试过这种方法。但是,这里的问题是我们在定义实体“fruit”时需要提供所有同义词。在更广泛的场景中,比如允许您添加杂货的应用程序,“水果”可以采用数千个值,它似乎不可扩展。在不定义“水果”的同义词的情况下,我们还有其他方法吗?
  • 在这种情况下,听起来您还有第二个问题。您能否将原始问题标记为已回答并创建另一个问题?如果你在这里链接它,我可以尽快回答。
  • 我有同样的问题,除了我想区分 2 个列表,我正在构建一个转换器应用程序,它可以从一种类型转换为另一种类型,一种类型 = 值列表,另一种类型 = 值列表,任何想法如何实现这一点,在此先感谢
  • @SandeepMaller 编写一个 cron 作业,获取所有食品的列表并每 x 小时更新一次实体,这就是我正在做的事情,使用 dialogflow 提供的 API 以编程方式发布实体
  • 刚刚发现你就是我看过的教程中的那个人。请在您的 YT 视频中包含此内容。谢谢! :)
猜你喜欢
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多