BOT框架中qnA和Luis之间的意图分数映射

时间:2018-03-01 17:16:34

标签: c# botframework luis qnamaker

我有方案

在我的BOT框架中,我使用以下标准处理了LUIS和QnA制造商

  

如果INTENT为NONE - 连接到QnA制造商并获得答案
  其他一些意图 - 将触发相应的答案。

它完美无缺,直到我最终得到以下情况:

1)我在QnA Maker中有一个问题 - 如何搜索酒店

2)在纽约的LUIS话语 搜索酒店 - BOT框架为此意图提供了专用的API方法,并根据所选实体获取结果。

现在,我遇到了麻烦 - 如果用户输入'我如何搜索酒店' - 它转向LUIS意图而不是QnA制造商 - 有没有更好的方法来处理这种情况而没有歧义

以下是我的示例代码:

[LuisIntent("")]
[LuisIntent("None")]

///If NO INTENT MATCHES - CALL QnA Maker
public async Task None(IDialogContext context, LuisResult result)
{
    try
    { /* QnA maker call */ }



[LuisIntent("GetHotel")]

///If NO INTENT MATCHES - CALL QnA Maker
public async Task None(IDialogContext context, LuisResult result)
{
    try
    { /* API call to get the results */ }

1 个答案:

答案 0 :(得分:4)

您可以在更新并训练LUIS应用程序后尝试correct top scoring intent,这可以帮助我们选择正确的话语意图。

enter image description here

将其分配给正确的意图后,您可以重新训练您的LUIS并进行新的测试以检查它是否显示正确的结果。

enter image description here

另一种方法:在代码逻辑中处理它。如果您希望在达到 GetHotel 意图时到达特定位置的酒店,您可以检测返回的LUIS结果是否包含location实体,如果没有返回location实体,则可以让QnA Maker调用以检索答案。

此外,如果可能,您可以修改代码结构和逻辑以首先调用QnA Maker,如果没有答案满足特定的阈值分数,则调用LUIS。