使用CLI生成Dispatch模型时,它不会从参考中的Luis应用程序传递实体。这极大地影响了调度应用程序的准确性。
例如,对于话语“我的[iPhone]不工作”,iPhone附加到实体列表名称CellPhoneType。 iPhone,三星,智能手机列表中有三个项目。
在机器人模拟器中,使用Dispatch,如果我写“我的iPhone不工作”,调度模型将它传递给Luis,就像它应该的那样。但是,如果我写“我的智能手机无法正常工作”,则调度工具会将其发送给QnA Maker。
我检查了模型,实体未在参考中传递。我也用简单的实体进行了测试,它们也不起作用。
我安装了最新版本的CLI。
这是正常的,这是一个错误吗?有没有解决这个问题的工作?
这里有几件事要说明你如何建立你的LUIS模型以及从派遣中得到什么。如果您是正在阅读此帖子的用户,并且已经拥有精美的子LUIS模型实体,请跳至2.)。 @AlexandreViegas,读取点1.)以帮助正确构建LUIS模型以在调度中正确检测意图。
1.使用简单实体+短语列表来利用LUIS的机器学习 - 而不是列表实体
现在看起来您选择使用列表实体并不是最好的方式,而不是如何使用它。相反,列表实体用于可能有多种方式引用同一事物的术语。
您何时想要使用列表实体的示例
例如,California,Cali,CA和The Golden State都是指同一事物(州)的术语。您可以创建“状态”列表实体,包括所有50个美国州及其昵称。现在,因为这是一个封闭的显式列表,所以当您使用列表实体时没有机器学习 - 如果存在精确的文本匹配,LUIS将仅检测“状态”列表实体。
你想要使用列表实体的另一个例子是学校的“部门”。您可以拥有“化学”,“CHEM142”,“化学”等等,这些都是指特定部门,并与学校其他部门一起进行。
为什么要使用简单实体并添加短语列表
你可以参考我写的其他StackOverflow answer,关于如何使用短语列表创建一个简单的实体并增强实体的信号。
为了不完全复制上面链接中给出的答案,实质上,您希望使用一个简单的实体,因此LUIS可以正确地将术语预测为CellPhoneType
实体,即使您未在模型中明确包含它。
例如,你可以有一个Phone
意图用话语标记各种单词作为CellPhoneIntent
entity。
当我进入测试面板时,我输入“向日葵”和“月光石”作为手机组成(也许将来有些手机公司会创建以这些名称为模型的手机):
在上面你可以看到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答案。
将不同名称的手机型号添加到短语列表qazxsw poi qazxsw poi后
2.查询直接由dispatch创建的LUIS模型的端点
澄清:
如何使用父调度LUIS应用程序从子LUIS模型中提取实体
connectedServiceResult
之后键入你的话语,在q=
下查看从子LUIS模型中提取的实体和意图q=
connectedServiceResult
上面你可以看到从dispatch创建的父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
}
]
}
}
作为iphone
实体。
注意:您不会在父调度的“测试”面板中看到子LUIS模型的结果,因为UI不显示my iphone is broken