【问题标题】:LUIS: Adding patterns to intents is not taking any effectLUIS:向意图添加模式没有任何效果
【发布时间】:2020-04-21 01:28:44
【问题描述】:

我遵循tutorial中描述的内容

  • 我首先添加了一个 Pattern.any 实体
  • 接下来,我为所需的意图添加了一个模式
  • 我已经创建了一个如图所示的意图,现在我点击火车
  • 当我测试的时候,意图没有命中

知道缺少什么吗?

【问题讨论】:

    标签: artificial-intelligence azure-language-understanding


    【解决方案1】:

    TL;DR:阅读patterns docimprove your entity detection


    问题

    您在此处发布的示例的问题是 LUIS 未能实际检测到 command_paramsentity,因此它甚至无法与您显示的这 3 种模式中的任何一种匹配。

    Add common pattern template utterance formats to improve predictions中所述:

    为了使模式与话语匹配,首先话语中的实体必须匹配模板话语中的实体。这意味着在实体模式成功之前,实体必须在具有高度预测的示例话语中拥有足够多的示例。然而,模板并不能帮助预测实体,只能预测意图。

    虽然模式允许您提供更少的示例话语,但如果未检测到实体,则模式不匹配。

    因此,您需要构建您的 command_params 实体,以便在使用模式之前使其可检测。​​


    您的实体

    我不相信 Pattern.any 是适合您使用的实体类型,因为它是用于可变长度值的实体——例如,它们可能非常长。

    我不知道您的实体可以评估什么类型的值,但我怀疑走创建simple entity + phrase list(使用机器学习)的路线可能会更好list entity 如果实体值是已知集合(精确模式匹配),则取决于您的命令参数值。

    更新:还有regex entities,可能对你有用。 (同样,我不知道您的实体值可能是什么,因此很难准确指出要使用的正确实体)

    此外,如果您在了解如何改进一般实体检测方面需要帮助,请参阅this StackOverflow answer

    【讨论】:

    • 铂。 1:短语列表用于“增强”另一个实体的信号,但至少在某些情况下依赖于您尝试增强信号的实体以拥有足够的数据来识别它。因此,假设您正确定义了一个简单的“Apple”实体,并且 LUIS 正确检测到诸如“Golden Delicious”、“Granny Smith”、“Cosmic”等值。它甚至可以正确检测到一个全新的(虚构的)苹果作物,“Flamingo”,即使您没有在话语中明确将“Flamingo”值标记为“Apple”实体。
    • Pt 2. LUIS 使用基于话语上下文的机器学习来识别“哦,是的,通常这里会出现 'Apple' 实体,因此 'Flamingo' 必须是 'Apple'”。 “Flamingo”也是一个英文单词,因此 LUIS 已经具有该单词的“背景”知识(例如,可以根据英语知道它是一个名词)。但是,如果一所大学创建了一个在英语中不存在的新苹果作物名称——例如“Jirio”,那会怎样。 LUIS 没有该词的背景知识,就像“火烈鸟”一样。所以你可以创建一个短语列表来...
    • Pt 3. ...帮助将“Jirio”正确识别为“Apple”。我可以创建一个新的“Apples”短语列表,并包含“Golden Delicious”、“Granny Smith”、“Jirio”等 LOTS 值。LUIS 会查看“我不知道 'Jirio' 是什么,但我知道什么是“Golden Delicious”。根据“Apples”短语列表,“Jirio”看起来与“Golden Delicious”相同,因此更有可能将“Jirio”标记为“Apple”实体
    • Pt 4。如果您想要视觉效果,我会在StackOverflow post 中给出一个带有屏幕截图的手机示例:)
    • 感谢您的解释。我一直缺少的是您需要一个simple 实体来用于短语列表!我之前用list 实体尝试过这个,但它没有用。简单实体解决了我提取实体的模式性能不佳以及更广泛的同义词问题。很有帮助!
    【解决方案2】:

    这些模式非常直接。如果短语的部分不完全匹配,则无法识别意图。 (注意:您可以将这些短语直接添加到意图中,而不是在模式中,在这种情况下,它将识别意图而不是实体。如果您有一个对话框来提示用户缺少的实体,这会很有帮助。)

    在您的情况下,您编写模式的方式需要编写command create $mytest,它应该能够识别意图以及实体mytest。由于您没有在测试中包含 $ 字符,因此意图和实体均未被识别。

    您确实可以通过方括号 [] 将字符标记为 可选,尽管我在这方面取得了不同程度的成功。您的短语足够具体,可能适用于您的情况。因此,您可以制作像 command create [$]command_params 这样的模式,command create $mytestcommand create mytest 都可以工作并具有正确的实体。请注意,如果有人键入 command create $mytest please 之类的内容,它将选择整个短语 mytest please 作为您的实体。 (如果有人知道如何创建避免这种情况的模式,那就太好了!)。

    【讨论】:

    • 只是在这里添加评论,这个解决方案对于模式是准确的,但正如@zeryth 在下面提到的,Simple 实体(可能通过短语列表增强)可能是满足您要求的更好解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2015-09-25
    • 2016-09-07
    • 1970-01-01
    相关资源
    最近更新 更多