LUIS意图不返回具有空格的实体的整个值

Man*_*was 5 .net json botframework azure-language-understanding

我创建了一个这样的LUIS话语,其中包含一个简单的实体:客户abc的订单处理

其中abc被简单实体vf_NARCName替换

在我输入类似问题的机器人中:客户动物皮肤病医院的订单正在处理中

这里的客户名称是动物皮肤病医院,由空间分隔,然后当我通过LUIS Rest API获取数据时,我将动物作为实体值而不是动物皮肤病医院,有时也没有实体值返回

 {
      "query": " orders in process for customer Animal Dermatology Service",
      "topScoringIntent": {
        "intent": "OrderDetails_2a598c9b-7cb5-4113-9aca-435b55bbe19e",
        "score": 0.7547371
      },
Run Code Online (Sandbox Code Playgroud)

返回数据

{
  "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": []
}
Run Code Online (Sandbox Code Playgroud)

但是如果我只用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
        }
      ]
    }
Run Code Online (Sandbox Code Playgroud)

Zer*_*yth 6

您的LUIS应用程序基本上需要更多关于该实体如何发生的话语.

我会说,状态1.)可能是最有用的,但列出了你可能包括的其他选项,以帮助你的实体检测.


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

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

  • 每个意图至少有15个话语,其中包括实体如何出现的不同方式

你应该有意识地包括的变化是:

  • 在词序(差异,其中可以在话语中发生的实体)
  • 时态(如"was","is","将是",如本教程所示)
  • 语法正确性
  • 话语和实体本身的长度(字数)

最后一点可能就是你应该包含更多例子.因此,请检查包含vf_NARCName长度不仅仅为1个字的实体的话语,但如果在您的应用中有可能,请检查2或3个甚至更长的实体.


  1. 添加短语列表

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

短语列表包括属于同一类的一组值(单词或短语),并且必须进行类似处理

这是另一种可以帮助向LUIS发送另一个信号以帮助检测您的vf_NARCName实体的方法.

有关如何在此处添加词组列表的教程.


  1. 最后,您可能希望研究使用Pattern.any

正如Pattern.any文档所述,

使用pattern.any实体从话语中提取数据,其中话语格式良好,数据的结尾可能容易与话语的剩余单词混淆

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

例如,你可能有" The Department of People Who like Really Long Names, But Hate Novels"作为一个vf_NARCName实体.LUIS可能很难确定该实体的确切位置,但可以使用Pattern.any来实现.


art*_*tie 0

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

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

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

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