【问题标题】:LUIS Intent identification conflictLUIS 意图识别冲突
【发布时间】:2017-11-07 14:47:16
【问题描述】:

我正在尝试实现一个分层聊天机器人,利用 LUIS 来识别主要意图和次要意图。 作为其中的一部分,创建了许多 LUIS 模型并进行了培训。 然而,在各种情况下观察到 LUIS 的行为很奇怪且出乎意料。 例如,使用以下话语训练了一个名为 Leave 的 LUIS 模型。

话语意图 我有资格获得领养假吗?离开查询 我的假期余额是多少?离开查询 什么是病假?离开查询 谁批准我的病假?离开批准

在训练这些话语后,针对休假上下文的查询按预期工作。 但是,当针对 Leaves 模型验证以下消息并期望接收“None”意图时,LUIS 将返回其他意图“None”,这没有任何意义。

查询预期意图实际意图 我有资格获得贷款吗?无 离开查询 我的贷款余额是多少 无 离开查询 谁批准我的贷款 无 离开查询

这里的问题是“我是否有资格获得贷款”根本不属于此 LUIS 模型,并且期待“”意图。 这个想法是当话语不属于查询的 LUIS 模型时接收 None 意图,以便可以检查其他模型的有效意图。 但是我总是有一些意图而不是“none”。

不确定我是否在这里做错了什么。 任何有关这方面的帮助/指导都会很有帮助。

【问题讨论】:

  • 你能用项目符号、查询、话语、意图来格式化,这样它就更易读了吗?

标签: microsoft-cognitive azure-language-understanding


【解决方案1】:

我同意史蒂文上面的建议

  1. 训练意图是一种很好的做法
  2. 定义实体会有所帮助

如果您想根据某个域对您的意图进行分类,例如,在当前情况下离开。我建议创建一个值为 leave 的 List 实体。

如果您想要任何带有离开词的内容,请离开查询意图。

anything about [leave ]

当前版本结果

Top scoring intent
Leave Query (1)
Other intents
None (0.28)

其余句子没有离开

anything about loan

当前版本结果

Top scoring intent
None (0.89)
Other intents
Leave Query (0)

虽然这里有限制,但您可以让它更明确,例如评分将是 10 用于离开查询。

这取决于您的用例,您是想采用确定性方法还是预测性方法。对于机器对机器通信,您可能会考虑采用确定的方法,但对于聊天机器人之类的东西,您可能更喜欢采用预测方法。

不过,这是一个不错的小技巧,可能会对您有所帮助。

希望对你有帮助

【讨论】:

  • 这是最有帮助的,在我的情况下,它是为了在“我感觉很好”和“我感觉不舒服”之类的词之间进行微妙的单字区分,并且意图来自 scores 。 93 和 .94 到 .95 和 .05 ?
  • 嗯,这实际上是用西班牙语表达的,以防万一有些人尝试这个并没有得到类似的分数?
【解决方案2】:

您的模型训练有素,注册了多少话语?只是为了检查一下,在收到“我有资格获得贷款吗?”和“谁批准我的贷款”并训练他们匹配的机器人后,你是否进入了 LUIS 门户离开意图?

请注意,在任何语言理解模型经过彻底训练之前,它们都容易出错。

在查看您的话语时,我注意到它们都非常相似:

  • 我有资格获得领养假吗?” vs “我有资格获得贷款吗?”
  • 我的假期是什么余额?” vs “我的贷款余额是多少?”
  • 谁批准我的病假?” vs“谁批准我的贷款”

这些话语的差异很小。它们是非常笼统的问题,您没有表示当前正在使用任何实体。虽然通过您的简单示例可以理解这些问题缺少实体,但实体肯定有助于 LUIS 了解要匹配的意图。

要解决此问题,您需要进一步训练模型并添加实体。您可能会使用一些额外的表达方式,例如“我的假期余额是多少?”、“查看我的假期余额”、“告诉我我的假期余额”、“查看假期余额”等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    相关资源
    最近更新 更多