如何设置Microsoft LUIS以检测组合名称(短划线)

Aym*_*ric 2 azure-language-understanding

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

  • 一个简单的名称自定义实体
  • 用短划线分隔的单词的模式功能:^\w* - \w*$
  • 一个功能短语列表尝试至少得到一些工作的例子:[marc-andre,marie-anne,jean-marc]

我训练和发表(在分期)但它从未检测到整个组合名称,而是只返回第一部分作为实体(例如:实体是"marc"而不是"marc-andre").

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

将Denise的答案考虑在内

在Luis.ai用户界面中,我没有意识到在标记话语时,可以在指定实体时多次单击以选择多个单词.

话语标签

Den*_*Mak 5

我能够像你描述的那样配置一个简单的自定义实体.我在这里发布了你可以导入LUIS的JSON .

如果没有看到您的LUIS应用程序的JSON,很难说它为什么无法识别以破折号分隔的名称 - 请随时在此处为您的LUIS应用程序发布JSON.有时,由于缺少标签,LUIS应用程序将无法识别实体.让LUIS识别实体的关键部分是标注足够的示例.模式特征只是LUIS的一个提示 - 您仍然需要定义具有标记实体的示例语句.例如,如果您已定义名为MyNameIs的intent 并想要识别其中的Name实体,则您需要向包含以虚线分隔的名称的MyNameIs intent 添加各种话语,并使用实体标记每个名称. 在此输入图像描述

当我添加模式功能时,我用来+表示正则表达式中的"一个或多个"而不是*.但是,这种差异不应该破坏您的模式功能. 在此输入图像描述

连字符可能发生的另一个问题是LUIS返回的JSON.当您从LUIS检查JSON结果时,您可以看到如何标识Name实体.请注意,在entity字段中,LUIS在连字符周围插入空格,但是startIndex和endIndex字段标识原始话语中实体的索引.所以,如果你有一个解析的代码entity字段不使用startIndex,并endIndex在query现场为你所期望的行为可能不是.

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