我有方案
在我的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 */ }
答案 0 :(得分:4)
您可以在更新并训练LUIS应用程序后尝试correct top scoring intent,这可以帮助我们选择正确的话语意图。
将其分配给正确的意图后,您可以重新训练您的LUIS并进行新的测试以检查它是否显示正确的结果。
另一种方法:在代码逻辑中处理它。如果您希望在达到 GetHotel 意图时到达特定位置的酒店,您可以检测返回的LUIS结果是否包含location
实体,如果没有返回location
实体,则可以让QnA Maker调用以检索答案。
此外,如果可能,您可以修改代码结构和逻辑以首先调用QnA Maker,如果没有答案满足特定的阈值分数,则调用LUIS。