【问题标题】:Difficulty in LUIS extracting numbersLUIS 提取数字的困难
【发布时间】:2018-11-23 03:01:54
【问题描述】:

我有一个用于预订音频呼叫的 LUIS 模型,例如“BookAcall”,并且我的话语如下“ 我使用预建实体 Number 从句子中提取任何数字实体。

为 2 个地点预订 5 人的语音通话

现在,从 LUIS json 我得到了两个实体作为数字。

  1. 5 和 other 是 2 但在 LUIS 中无法理解 5 不是 Of people 和 2没有地点

需要建议。 谢谢

下面是话语和实体的截图,我使用列表类型的实体作为用户数。

{
  "query": "book a call tomorrow for 5 people for 2 location",
  "topScoringIntent": {
    "intent": "BookACall",
    "score": 0.9560004
  },
  "intents": [
    {
      "intent": "BookACall",
      "score": 0.9560004
    },
    {
      "intent": "CryptoTrading",
      "score": 0.0283502769
    },
    {
      "intent": "None",
      "score": 0.00855541
    }
  ],
  "entities": [
    {
      "entity": "tomorrow",
      "type": "builtin.datetimeV2.date",
      "startIndex": 12,
      "endIndex": 19,
      "resolution": {
        "values": [
          {
            "timex": "2018-06-15",
            "type": "date",
            "value": "2018-06-15"
          }
        ]
      }
    },
    {
      "entity": "location",
      "type": "NoOfLocation",
      "startIndex": 40,
      "endIndex": 47,
      "resolution": {
        "values": [
          "Location"
        ]
      }
    },
    {
      "entity": "people",
      "type": "NoOfUsers",
      "startIndex": 27,
      "endIndex": 32,
      "resolution": {
        "values": [
          "People"
        ]
      }
    },
    {
      "entity": "5",
      "type": "builtin.number",
      "startIndex": 25,
      "endIndex": 25,
      "resolution": {
        "value": "5"
      }
    },
    {
      "entity": "2",
      "type": "builtin.number",
      "startIndex": 38,
      "endIndex": 38,
      "resolution": {
        "value": "2"
      }
    }
  ]
}

【问题讨论】:

  • 人和地点是实体吗?
  • 我在 LUIS 中使用 NoOfUsers 作为列表类型的实体,如屏幕截图所示
  • 所以我想位置也是一个实体
  • @AnitaGeorge 是的

标签: botframework bots azure-language-understanding


【解决方案1】:

添加一个包含模式中数字的模式

【讨论】:

  • 如果使用输入 5 而不是数字 5 会怎样?
【解决方案2】:

为 2 个地点预订 5 人的语音通话

因为人和地点都是实体。您可以通过检查实体的start index and end index 来尝试跟踪与人员和位置对应的数字。

场景可能是:

为 2 个地点预订 5 人的语音通话 为 5 人预订 2 个地点的语音通话

因此,如果您获得 2 个数字类型实体和一个位置类型,则人员类型检查是否先出现哪个数字,然后检查哪个实体是人还是位置先出现。通过这种方式,您可以进行映射。

【讨论】:

  • 您好 Anita,我已添加 LUIS 返回的 json 结果。我无法应用您的解决方案。能否请您浏览一下 JSON。
  • 您使用什么编程语言来解析结果,以便我给出更清晰的答案。您能否提供解析 api 响应的代码
【解决方案3】:

正如 DFBerry 在此 SO thread 中建议的那样,您可以创建一个 composite entity 并将用户的数字实体和列表类型实体作为子实体。然后您可以从返回的响应中提取该复合实体中的用户数。

创建一个复合实体,如下所示:

从该复合实体中提取用户数:

【讨论】:

  • 是的...做了同样的事情。谢谢。
猜你喜欢
  • 2016-11-21
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2019-11-06
  • 2015-02-12
相关资源
最近更新 更多