如何设置 Microsoft LUIS 以检测组合名称(破折号分隔)
How to setup Microsoft LUIS to detect composed names (dash separated)
我想在 LUIS 中检测一个人的名字,包括一个具有组合名字的人(例如:Mary-Anne)
设置:
- 名称的简单自定义实体
- 破折号分隔词的模式特征:^\w*-\w*$
- 一个功能短语列表,尝试至少使用一些示例:[marc-andre, marie-anne, jean-marc]
我训练并发布了(在登台上),但是,它从未检测到整个组合名称,而是只会 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 在连字符周围插入空格,但 startIndex
和 endIndex
字段标识原始话语中实体的索引。因此,如果您的代码在 query
字段上不使用 startIndex
和 endIndex
来解析 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
}
]
}
我想在 LUIS 中检测一个人的名字,包括一个具有组合名字的人(例如:Mary-Anne)
设置:
- 名称的简单自定义实体
- 破折号分隔词的模式特征:^\w*-\w*$
- 一个功能短语列表,尝试至少使用一些示例:[marc-andre, marie-anne, jean-marc]
我训练并发布了(在登台上),但是,它从未检测到整个组合名称,而是只会 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 在连字符周围插入空格,但 startIndex
和 endIndex
字段标识原始话语中实体的索引。因此,如果您的代码在 query
字段上不使用 startIndex
和 endIndex
来解析 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
}
]
}