【问题标题】:Map to the wrong LUIS intent映射到错误的 LUIS 意图
【发布时间】:2018-11-01 00:53:22
【问题描述】:

我面临一个问题,即与任何意图不匹配的单词,它将假定它属于带有最多标记话语的意图。

例子:如果

  • 意图 A 由诸如 Animals 之类的话语组成
  • 意图 B 由诸如 Fruits 之类的话语组成
  • 意图 C 由 Insects 等话语组成
  • 意图 D 包含诸如人名之类的话语

Desired:如果随机词不符合任何 luis 意图,它将不符合任何 luis 意图。期望示例:如果输入了诸如“情绪”或“衣服”之类的词,它将匹配为“无”意图。

实际:当用户输入随机单词时,它与标记话语数量最多的 luis 意图相匹配。如果输入了诸如“情绪”之类的词,它将匹配为“A”意图,因为意图 A 包含最多数量的标记话语。

请就这个问题提出建议。

【问题讨论】:

  • 您能否提供一些样本和期望的结果以使您的问题更清楚?
  • @FerdinandFejskid,如上图所示,每当我输入与任何意图无关的内容时,它都会匹配为意图“A”。
  • 你测试的是单词而不是句子,我猜对了吗?
  • @FerdinandFejskid 是的
  • 您是否为每个 Intent 定义了实体?如果是,它们是列表实体吗?如果是这样,列表是否包含所有可能的值?还是解决方案不同?

标签: azure botframework azure-language-understanding


【解决方案1】:

设置一个分数阈值,低于该阈值您的应用将不会向用户显示任何响应(或者可能会显示“对不起,我没有收到您”的消息)。这样可以避免用任何 LUIS 不确定的内容来回应用户,这通常也会处理很多“离题”的输入。

我建议将阈值设置在 0.3 到 0.7 之间,具体取决于主题的严重性。这不是 LUIS 中的配置选项,而是在您的代码中执行的:

if(result.score >=0.5) { 
    // show response based on intent.
} else { 
    // ask user to rephrase
}

另外,您的意图似乎非常不平衡。您想尝试为每个意图使用大致相同数量的话语,理想情况下在 10 到 20 之间。

【讨论】:

    【解决方案2】:

    因此,如果没有更多关于您如何构建语言模型的详细信息,那么潜在的问题很可能是您在每个意图中没有足够的话语,没有足够的变化来显示不同话语的不同表达方式为了那个特定的意图。

    我所说的变化是指不同的话语长度(字数)、不同的词序、时态、语法正确性等(docs here

    记住每个意图应该有至少 15 个话语

    此外,正如最佳实践中所述,您是否也确保在您的“无”意图中包含示例话语Best practices 声明对于应用程序的其他部分中的每 10 个话语,您应该在 None 中拥有 1 个话语。

    最终:构建您的应用,使您的意图足够明显,并在意图中内置不同的示例话语,以便在您测试其他话语时,LUIS 更有可能与您的不同意图相匹配 - 如果您输入一个如果话语不遵循您的不同意图的任何类型的模式或上下文,LUIS 将知道检测到您的后备“无”意图的话语。

    如果您需要更具体的帮助,请发布您的语言模型的 JSON。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多