有没有办法只提取参数而不是实体?

Is there any way to extract only parameter not the entity?

我创建了一个实体 "editable",条目为{name, age, color, place}

bot:select 一个更新选项[选项是{name, age, color, place}]

用户:姓名

机器人:输入你的名字?

用户:Xyz

bot:记录已更新。 select 一个更新选项[选项是{name, age, color, place}]

这个很好用

但是如果用户说类似“my name is Xyz”的内容来更新名称。

bot:select 一个更新选项[选项是{name, age, color, place}]

用户:姓名

机器人:输入你的名字?

用户:我的名字是Xyz

机器人:输入你的名字。

当用户在他的短语中包含 "name" 时,机器人会将其与实体匹配并再次询问相同的问题。 如何解决这个问题,我只想提取 "Xyz" 尽管他使用短语 "my name is Xyz".

您可以使用 contexts 来处理对话的流程。上下文用于帮助 dialogflow 检测正确的意图。输出上下文是检测到意图后创建的上下文,输入上下文是检测到意图所需的上下文。

想想 dialogflow 上下文,作为对话的真实上下文,您可以在交互后期待一些短语。

下面是一个使用 3 个意图进行对话的示例:

  • "Default welcome"
  • "Updating name selection"
  • "Updating name"

对话

检测到意图:默认欢迎

代理人说:"Select an option to update [options are {name, age, color, place}]"

输出上下文:"select-option"


用户说:"name"

输入上下文:"select-option"

检测到意图:正在更新名称选择

代理人说:输入您的姓名

输出上下文:"update-name"


用户说:"My name is Xyz"

输入上下文:"update-name"

检测到意图:更新名称

代理人说:"record updated"


除此之外,还有follow-up intents用于此场景,优点之一是在后续意图中,自动创建上下文。

参数

您可以在同一个意图中获取所有要更新的信息。为此,您可以根据需要添加参数并利用 slot filling。请注意,您可以指定询问这些参数时要使用的定义提示。

您需要添加有助于识别给定不同参数的训练短语:

在对话过程中,当检测到此意图时,代理将尝试匹配所有必需的参数,并询问缺少的信息。最后,您将可以访问以下信息:

考虑到这种意图很快就会变得难以管理。尝试为您的参数使用明确定义的实体和大量训练短语(请注意,在一个训练短语中您可以收集多个参数,例如 "My name is Xyz and I'm 27")。