LUIS 意向不返回带有空格的实体的全部值

LUIS Intent not returning the entire value of the entity with space

提问人:Manisha Biswas 提问时间:10/4/2018 最后编辑:D.RosadoManisha Biswas 更新时间:10/10/2018 访问量:647

问:

我创建了一个 LUIS Utterance,如下所示,其中包含一个简单的实体: 客户 ABC 的处理订单

其中 abc 替换为简单实体 vf_NARCName

在机器人中,当我输入如下问题时: 客户动物皮肤科医院的订单正在进行中

这里的客户名称是 Animal Dermatology Hospital,它被空格分隔,然后当我通过 LUIS Rest API 获取数据时,我将 Animal 作为实体值而不是 Animal Dermatology Hospital 获取,有时也没有实体值返回

 {
      "query": " orders in process for customer Animal Dermatology Service",
      "topScoringIntent": {
        "intent": "OrderDetails_2a598c9b-7cb5-4113-9aca-435b55bbe19e",
        "score": 0.7547371
      },

返回数据

{
  "query": "how many orders are currently in process for customer Animal Dermatology Service",
  "topScoringIntent": {
    "intent": "OrderDetails_2a598c9b-7cb5-4113-9aca-435b55bbe19e",
    "score": 0.6452578
  },
  "entities": []
}

但是,如果我仅使用 Animal 查询它,则返回正确的数据

返回数据

{
      "query": "how many orders are currently in process for customer Animal",
      "topScoringIntent": {
        "intent": "OrderDetails_2a598c9b-7cb5-4113-9aca-435b55bbe19e",
        "score": 0.8928922
      },
      "entities": [
        {
          "entity": "animal",
          "type": "vf_NARCName",
          "startIndex": 54,
          "endIndex": 59,
          "score": 0.500023663
        }
      ]
    }
.NET JSON botframework azure-language-understanding

评论


答:

0赞 adamasan 10/5/2018 #1

这似乎是训练数据的数量和类型的问题。必须为 LUIS 提供足够的示例,以便能够理解 的值可以由单个单词或一系列单词组成。vf_NARCName

在这种情况下,我建议您尝试设置一个短语列表,例如“CompanyNames”,并提供一些多样化的示例,例如“Animal Dermatology Service”、“Animal Dermatology”和其他可能在生产中提交给您的机器人的客户名称的真实示例。

您可以在此处阅读有关短语列表的更多信息: https://learn.microsoft.com/en-us/azure/cognitive-services/luis/luis-how-to-add-features

我过去也遇到过同样的问题,有两件事能够提供帮助,大量的训练数据和短语列表。

评论

0赞 Manisha Biswas 10/9/2018
我也面临同样的问题。如何使用大量训练数据进行训练。如果我们使用短语列表,它会起作用吗?由于我有成千上万的客户,我无法为他们定义短语列表
0赞 Zeryth 10/10/2018
是的,@ManishaBiswas短语列表肯定是您帮助进行实体检测的一种方式。(有关其他策略,请参阅我之前的回答,以帮助提高实体检测的准确性)。“由于我有成千上万的客户,我无法为他们定义短语列表” - 在你选择的任何策略中,都没有办法绕过它:LUIS 需要以某种方式提供更多数据才能更好地检测实体
6赞 Zeryth 10/5/2018 #2

LUIS 应用本质上需要有关该实体如何发生的更多话语。

我会说 stategy 1.)可能是最有用的,但列出您可能还包含的其他选项,以帮助进行实体检测。


  1. 添加更多具有vf_NARCName实体有价值的变体的话语

文档中“构建应用”部分的第一个教程中所述,请确保包括:

  • 每个意向至少有 15 个话语,其中包括实体的不同显示方式

您应该有意识地包括以下变化

  • 词序差异(实体可以出现在话语中)
  • 时态(如“was”、“is”、“will be”,如本教程所示)
  • 语法正确性
  • 话语和实体本身长度(字数统计)

最后一点可能是您应该包含更多示例的一点。因此,请检查包含长度不仅为 1 个单词的实体,而且包含 2 个或 3 个甚至更长的实体(如果应用中可能的话)。vf_NARCName


  1. 添加短语列表

作为描述短语列表的文档状态,

短语列表包括一组值(单词或短语),这些值 属于同一类,必须以类似方式对待

这是帮助向 LUIS 发送另一个信号以帮助检测实体的另一种方式。vf_NARCName

有关如何在此处添加短语列表的教程。


  1. 最后,您可能想考虑使用 Pattern.any

正如 Pattern.any 文档在这里所说的那样,

使用 pattern.any 实体从话语中提取数据,其中 话语的格式正确,数据的结尾可能位于何处 容易与话语的其余单词混淆

因此,如果您知道您可能拥有实体本身字数非常长的潜在实体,那么使用 Pattern.any 实体可能会受益。vf_NARCName

例如,您可能将“”作为实体。LUIS 可能很难确定该实体的确切结束位置,但可以使用 Pattern.any 来做到这一点。The Department of People Who like Really Long Names, But Hate Novelsvf_NARCName