如何设置 Microsoft LUIS 以检测组合名称(破折号分隔)

How to setup Microsoft LUIS to detect composed names (dash separated)

我想在 LUIS 中检测一个人的名字,包括一个具有组合名字的人(例如:Mary-Anne)
设置:

我训练并发布了(在登台上),但是,它从未检测到整个组合名称,而是只会 return 第一部分作为实体(例如:实体是 "marc" "marc-andre")。

您知道如何配置 LUIS 以正确检测我的组合名称实体吗?

考虑到 Denise 的回答进行更新

在 Luis.ai UI 中,我没有意识到在标记话语时,可以在指定实体时多次单击 select 多个单词。

我能够像您描述的那样配置一个简单的自定义实体。我 post 编辑了 JSON,您可以将其导入 LUIS here

没有看到您的 LUIS 应用程序的 JSON,很难说出为什么它无法识别以破折号分隔的名称 - 请随时为您的 LUIS 应用程序 post JSON这里。有时,由于缺少标签,LUIS 应用无法识别实体。让 LUIS 识别实体的一个关键部分是标记足够多的示例。模式特征只是对 LUIS 的提示——您仍然需要定义具有标记实体的示例话语。例如,如果您定义了一个名为 MyNameIs 的意图,并且想要识别其中的 Name 实体,您将需要添加各种MyNameIs 意图的话语包含以破折号分隔的名称,并用实体标记每个名称。

当我添加模式特征时,我使用 + 在正则表达式中指示 "one or more" 而不是 *。但是,这种差异不应破坏您的模式功能。

连字符可能发生的另一个问题是 LUIS returns 中的 JSON。当您检查来自 LUIS 的 JSON 结果时,您可以看到名称实体是如何识别的。请注意,在 entity 字段中,LUIS 在连字符周围插入空格,但 startIndexendIndex 字段标识原始话语中实体的索引。因此,如果您的代码在 query 字段上不使用 startIndexendIndex 来解析 entity 字段,则行为可能与您预期的不同。

{
  "query": "my name is anne-marie",
  "topScoringIntent": {
    "intent": "MyNameIs",
    "score": 0.9912877
  },
  "entities": [
    {
      "entity": "anne - marie",
      "type": "Name",
      "startIndex": 11,
      "endIndex": 20,
      "score": 0.8978088
    }
  ]
}