LUIS:批量测试为实体返回不正确的结果

LUIS: Batch testing returning incorrect results for entities

我正在训练 LUIS 模型来识别更改数据库中个人的出生日期或预期出生日期的意图。除了 datetimeV2 实体之外,预计还会检测到 number:MemberID 或 number:FamilyID。如果不是,将以编程方式处理。

示例话语 - https://i.imgur.com/l8W670F.png

我的问题是,当批量测试 LUIS 时,它将 builtin.number 的真阳性结果标记为假阳性。我不知道这是 LUIS 的错误还是我的模型或批处理文件有问题。我在下面标记了批量训练结果的屏幕截图,并将添加来自批量测试文件的片段。

我曾尝试重新训练模型并结合意图,但没有成功。我为每个意图添加了多达 60 个话语,但我最终得到了一个训练过度的模型,问题比我开始时更多。此外,我添加了模式,但这同样没有帮助。

批量结果图 - https://i.imgur.com/0ki5CaV.png

误报 - https://i.imgur.com/q0T82wh.png

[
  {
    "text": "change dob to 09/16/2013 for Charles Patterson in family 53183",
    "intent": "ChangeDOB",
    "entities": [
      {
        "entity": "datetimeV2",
        "startPos": 14,
        "endPos": 24
      },
      {
        "entity": "FirstName",
        "startPos": 29,
        "endPos": 36
      },
      {
        "entity": "LastName",
        "startPos": 37,
        "endPos": 46
      },
      {
        "entity": "number:FamilyID",
        "startPos": 57,
        "endPos": 62
      }
    ]
  },
  {
    "text": "change birth dt for 47224 to 10/22/2015",
    "intent": "ChangeDOB",
    "entities": [
      {
        "entity": "number:MemberID",
        "startPos": 20,
        "endPos": 25
      },
      {
        "entity": "datetimeV2",
        "startPos": 29,
        "endPos": 39
      }
    ]
  },
  {
    "text": "repair birthday to 04/30/2019 in family 84842",
    "intent": "ChangeDOB",
    "entities": [
      {
        "entity": "datetimeV2",
        "startPos": 19,
        "endPos": 29
      },
      {
        "entity": "number:FamliyID",
        "startPos": 40,
        "endPos": 45
      }
    ]
  },
  {
    "text": "alter birthday to 01/18/2004 for Harry Taylor in family 31902",
    "intent": "ChangeDOB",
    "entities": [
      {
        "entity": "datetimeV2",
        "startPos": 18,
        "endPos": 28
      },
      {
        "entity": "FirstName",
        "startPos": 33,
        "endPos": 38
      },
      {
        "entity": "LastName",
        "startPos": 39,
        "endPos": 45
      },
      {
        "entity": "number:FamilyID",
        "startPos": 56,
        "endPos": 61
      }
    ]
  },
  {
    "text": "change date of birth to 11/15/2003 for 87546",
    "intent": "ChangeDOB",
    "entities": [
      {
        "entity": "datetimeV2",
        "startPos": 24,
        "endPos": 34
      },
      {
        "entity": "number:MemberID",
        "startPos": 39,
        "endPos": 44
      }
    ]
  }
]

最终,批处理结果应该显示当前被标记为误报的话语的真阳性,因为它们确实包含它正确检测到的number:MemberID。

实际上,您正在使用实体角色功能将 number:MemberIDnumber:FamilyID 标记为子类型,对吗?如果是这种情况,那么这就是您的批量测试不起作用的原因。

特别是在 LUIS docs on batch testing 中,它是这样说的:

看来您不能使用批量测试来测试这些类型的具有角色的实体的话语。

您可以通过 UserVoice 论坛请求开发此功能,该论坛可帮助我们的团队从社区获得反馈,并可能帮助确定我们应该首先开发的功能的优先级。