【问题标题】:Is there any way to extract only parameter not the entity?有没有办法只提取参数而不是实体?
【发布时间】:2020-02-08 09:30:55
【问题描述】:

我创建了一个“可编辑”实体,其条目为 {name, age, color, place}

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

用户:姓名

bot:输入你的名字?

用户:xyz

bot:记录已更新。选择要更新的选项 [选项是 {name, age, color, place}]

这很好用

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

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

用户:姓名

bot:输入你的名字?

用户:我的姓名是 Xyz

机器人:输入你的名字。

当用户在他的短语中包含“名称”时,机器人将其与实体匹配并再次提出相同的问题。 如何解决这个问题,我只想提取“Xyz”,尽管他使用了“我的名字是 Xyz”这个短语。

【问题讨论】:

    标签: dialogflow-es actions-on-google chatbot


    【解决方案1】:

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

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

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

    • “默认欢迎”
    • “更新名称选择”
    • “更新名称”

    对话

    检测到意图:默认欢迎

    代理说:“选择一个选项来更新 [选项是 {name, age, color, place}]”

    输出上下文:“选择选项”


    用户说:“名字”

    输入上下文:“选择选项”

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

    代理说:输入你的名字

    输出上下文:“更新名称”


    用户说:“我叫 Xyz”

    输入上下文:“更新名称”

    检测到意图:更新名称

    代理说:“记录已更新”


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

    参数

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

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

    在对话期间,当检测到此意图时,代理将尝试匹配所有必需的参数,并要求提供缺失的信息。最后,您将可以访问以下信息:

    考虑到这种意图很快就会变得难以管理。尝试为参数使用定义明确的实体和大量训练短语(请注意,在一个训练短语中,您可以收集多个参数,例如“我的名字是 Xyz,我 27 岁”)。

    【讨论】:

    • 感谢您的回复,但问题是如果我使用上下文而不是我必须做出 2 个意图来更新实体的每个值 {name, age, color, place}。你能用一个例子来解释一下,比如如何使用上下文更新所有值 {name, age, color, place} 与这三个意图。
    • 我编辑了答案。检查“参数”部分。简而言之,您可以在同一意图中获取要更新的所有信息;但是,您应该小心,因为它可能难以管理
    • 参数在我的情况下不起作用,我必须更新名称字段并提供动态响应,然后用户将选择他接下来要更新的内容。如果用户只想更新一个参数,您提供的解决方案将不起作用,如果我们使用参数,那么他必须回答所有提示更新单个参数。
    • 每次交互只更新一个参数,只需将所有参数设置为可选。
    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多