调度CLI不从Luis App传递实体

问题描述 投票:0回答:1

使用CLI生成Dispatch模型时,它不会从参考中的Luis应用程序传递实体。这极大地影响了调度应用程序的准确性。

例如,对于话语“我的[iPhone]不工作”,iPhone附加到实体列表名称CellPhoneType。 iPhone,三星,智能手机列表中有三个项目。

在机器人模拟器中,使用Dispatch,如果我写“我的iPhone不工作”,调度模型将它传递给Luis,就像它应该的那样。但是,如果我写“我的智能手机无法正常工作”,则调度工具会将其发送给QnA Maker。

我检查了模型,实体未在参考中传递。我也用简单的实体进行了测试,它们也不起作用。

我安装了最新版本的CLI。

这是正常的,这是一个错误吗?有没有解决这个问题的工作?

botframework luis dispatch qnamaker
1个回答
1
投票

这里有几件事要说明你如何建立你的LUIS模型以及从派遣中得到什么。如果您是正在阅读此帖子的用户,并且已经拥有精美的子LUIS模型实体,请跳至2.)。 @AlexandreViegas,读取点1.)以帮助正确构建LUIS模型以在调度中正确检测意图。


1.使用简单实体+短语列表来利用LUIS的机器学习 - 而不是列表实体

现在看起来您选择使用列表实体并不是最好的方式,而不是如何使用它。相反,列表实体用于可能有多种方式引用同一事物的术语。

您何时想要使用列表实体的示例

例如,California,Cali,CA和The Golden State都是指同一事物(州)的术语。您可以创建“状态”列表实体,包括所有50个美国州及其昵称。现在,因为这是一个封闭的显式列表,所以当您使用列表实体时没有机器学习 - 如果存在精确的文本匹配,LUIS将仅检测“状态”列表实体。

你想要使用列表实体的另一个例子是学校的“部门”。您可以拥有“化学”,“CHEM142”,“化学”等等,这些都是指特定部门,并与学校其他部门一起进行。

为什么要使用简单实体并添加短语列表

你可以参考我写的其他StackOverflow answer,关于如何使用短语列表创建一个简单的实体并增强实体的信号。

为了不完全复制上面链接中给出的答案,实质上,您希望使用一个简单的实体,因此LUIS可以正确地将术语预测为CellPhoneType实体,即使您未在模型中明确包含它。

例如,你可以有一个Phone意图用话语标记各种单词作为CellPhoneIntententity。 enter image description here

当我进入测试面板时,我输入“向日葵”和“月光石”作为手机组成(也许将来有些手机公司会创建以这些名称为模型的手机):

enter image description here

在上面你可以看到LUIS正确预测Phone意图并正确地提取sunflowermoonstone作为CellPhoneType实体。

但是,如果我输入英语中不存在的手机品牌名称 - 例如Blackberry的“Z3”或T-Mobile的“G2X”,LUIS就无法使用我们的模型检测到这一点。 (见最近的2个话语)。 enter image description here

在上面你可以看到话语“i'd like to order a z3”和“my g2x is broken”没有正确预测为Phone意图,z3g2x也没有被检测为CellPhoneType实体。这是短语列表的来源。如docs中所述,短语列表有助于提升手机类型的信号,以及向LUIS模型添加专有或外来词,例如“制作” “许多手机型号的话。如果您需要有关如何创建短语列表的指导,请再次参考我链接到的StackOverflow答案。

将不同名称的手机型号添加到短语列表qazxsw poi qazxsw poi后


2.查询直接由dispatch创建的LUIS模型的端点

澄清:

  • 当您添加子LUIS模型以进行分派时,即使该子LUIS模型中包含实体,它也不会显示在由dispatch创建的父LUIS模型的模型中。
  • 如果您在模式中标记了实体,则上述项目符号的例外情况就是如此
  • 为什么实体不需要在父LUIS模型中进行标记,因为当您调用父LUIS模型的端点时,它会在引擎盖下进行共享调用,因此它不必ping两次LUIS。
  • 您可以在enter image description here属性中看到从子LUIS模型标记的实体

如何使用父调度LUIS应用程序从子LUIS模型中提取实体

  1. 确保发布子LUIS应用程序和父调度应用程序。
  2. 转到您的父调度创建的LUIS应用程序,转到管理>键和端点>单击“端点”以打开浏览器选项卡,您可以在enter image description here之后查询URL中的父应用程序
  3. 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

© www.soinside.com 2019 - 2024. All rights reserved.