因此,这里有几件事情要解决,即您如何构建 LUIS 模型以及对调度的期望。 跳至 2.) 如果您是正在阅读这篇文章并且已经有实体在子 LUIS 模型中完美运行的用户。 @AlexandreViegas,请阅读第 1.) 点以帮助正确构建您的 LUIS 模型在调度中正确检测意图。
1.使用简单实体 + 短语列表来利用 LUIS 的机器学习——而不是列出实体
现在看来,您选择使用 列表实体 并不是最好的方法,也不是它的预期使用方式。相反,列表实体用于可能以多种方式指代同一事物的术语。
何时需要使用列表实体的示例
例如,California、Cali、CA 和 The Golden State 都是指同一事物(州)的术语。您可以创建一个“州”列表实体,包括美国所有 50 个州及其昵称。现在,由于这是一个封闭的显式列表,当您使用列表实体时,没有机器学习 - LUIS 只会在文本完全匹配时检测“状态”列表实体。
当您想要使用列表实体的另一个例子是学校的“部门”。您可以使用“chemistry”、“CHEM142”、“chem”等来指代该特定系,并与学校的其他系一起使用。
为什么要使用简单实体并添加短语列表
你可以参考我写的另一个StackOverflow answer,关于如何创建一个简单的实体并使用短语列表增强实体的信号。
为了不完全重复上面链接中给出的答案,本质上,您希望使用一个简单的实体,因此 LUIS 可以正确地将术语预测为 CellPhoneType 实体,即使您没有明确将其包含在您的模型中。
例如,您可以有一个 Phone 意图,其中包含将各种单词标记为 CellPhoneIntententity 的话语。
当我进入“测试”面板时,我输入“sunflower”和“moonstone”作为手机(也许将来某些电话公司会使用这些名称作为手机型号):
您可以在上面看到 LUIS 正确预测 Phone 意图并正确地将 sunflower 和 moonstone 提取为 CellPhoneType 实体。
但是,如果我输入英语中不存在的手机品牌名称(例如 Blackberry 的“Z3”或 T-Mobile 的“G2X”),LUIS 无法使用我们的模型检测到这一点。 (见 2 最近的话语)。
您可以在上面看到话语“i'd like to order a z3”和“my g2x is broken”不能正确预测为Phone 意图,z3 或g2x 也不会被检测为CellPhoneType 实体。这就是短语列表的用武之地。正如docs 中所述,短语列表有助于增强手机类型的信号以及添加专有 或 外来词 到您的 LUIS 模型,例如许多手机型号的“虚构”词。如果您需要有关如何创建短语列表的指导,请再次参考我链接到的 StackOverflow 答案。
在词组列表中添加不同的手机型号名称后
2。 直接
查询由dispatch创建的LUIS模型的端点
澄清:
如何使用父调度 LUIS 应用从子 LUIS 模型中提取实体
确保同时发布子 LUIS 应用和父调度应用。
转到您的父调度创建的 LUIS 应用,转到 管理 > 密钥和端点 > 单击“端点” 打开浏览器选项卡,您可以在其中查询 URL 中的父应用在q=
之后
在 URL 中的 q= 之后输入您的话语,以查看从 connectedServiceResult 下的子 LUIS 模型中提取的实体和意图
https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx?verbose=true&timezoneOffset=-360&subscription-key=b7xxxxxxxxxxxxxxxxxxxxxxxxxxxx67&q=my%20iphone%20is%20broken
{
"query": "my iphone is broken",
"topScoringIntent": {
"intent": "l_Reminders",
"score": 0.99594605
},
"intents": [
{
"intent": "l_Reminders",
"score": 0.99594605
},
{
"intent": "None",
"score": 0.002990469
}
],
"entities": [],
"connectedServiceResult": {
"query": "my iphone is broken",
"topScoringIntent": {
"intent": "Phone",
"score": 0.9658808
},
"intents": [
{
"intent": "Phone",
"score": 0.9658808
},
{
"intent": "Calendar.Add",
"score": 0.0142210266
},
{
"intent": "Calendar.Find",
"score": 0.0112086516
},
{
"intent": "None",
"score": 0.009813501
},
{
"intent": "Email",
"score": 0.0025855056
}
],
"entities": [
{
"entity": "iphone",
"type": "CellPhoneType",
"startIndex": 3,
"endIndex": 8,
"score": 0.998970151
}
]
}
}
您可以在上面看到,从调度创建的父 LUIS 应用正确地将 iphone 从话语 my iphone is broken 识别为 CellphoneType 实体。
注意:您不会在父调度的测试面板中看到子 LUIS 模型的结果,因为 UI 不显示 connectedServiceResult