Node.js 当多个意图的得分高于默认阈值时,意图处理程序不工作
当多个LUIS意图的得分高于默认阈值(0.1)时,不处理高得分意图。例如,我收到的是路易斯的回复:Node.js 当多个意图的得分高于默认阈值时,意图处理程序不工作,node.js,botframework,azure-language-understanding,Node.js,Botframework,Azure Language Understanding,当多个LUIS意图的得分高于默认阈值(0.1)时,不处理高得分意图。例如,我收到的是路易斯的回复: "entities": [], "intents": [ { "intent": "Good", "score": 0.38138606327968266 }, { "intent": "Not Good", "score": 0.14239219383059437 }, { "intent":
"entities": [],
"intents": [
{
"intent": "Good",
"score": 0.38138606327968266
},
{
"intent": "Not Good",
"score": 0.14239219383059437
},
{
"intent": "getInfo1",
"score": 0.058470389996233038
},
{
"intent": "getInfo3",
"score": 0.052354321946208544
},
{
"intent": "End Conversation",
"score": 0.051956717501244802
},
{
"intent": "getInfo2",
"score": 0.049671852402879912
},
{
"intent": "getInfo4",
"score": 0.04166953247839323
},
{
"intent": "getInfo5",
"score": 0.032684937293639832
},
{
"intent": "getInfo6",
"score": 0.027630602530947044
},
{
"intent": "getInfo7",
"score": 0.027075797198458249
}
],
"query": "iam good",
"topScoringIntent": {
"intent": "Good",
"score": 0.38138606327968266
}
}
我相信下面的意图正在陷入某种冲突,因为它们的得分都大于0.1。
我尝试为相应处理程序的triggerAction
添加intentThreshold
参数。然而,这是没有用的
{“意图”:“好”,“分数”:0.38138606327968266},{“意图”:“不”
良好,“得分”:0.14239219383059437}
代码示例
//BOT REST end point
var server = restify.createServer(options);
server.listen(config.port,function() {
console.log('%s listening to %s', server.name, server.url);
});
var connector = new builder.ChatConnector({
appId: config.BOTFRAMEWORK_APPID,
appPassword: config.BOTFRAMEWORK_APPSECRET
});
server.post('/test', connector.listen());
var bot = new builder.UniversalBot(connector);
var recognizer = new builder.LuisRecognizer(config.model);
bot.recognizer(recognizer);
bot.dialog("/",[function(session){
if(utilities.isEmpty(session.userData.name)) {
// Greetings
builder.Prompts.text(session,prompt.greeting_text);
}else {
session.beginDialog("/beginConversation");
}
},
function(session,results){
session.userData.name = results.response;
console.log("username :"+ session.userData.name);
session.beginDialog("/beginConversation");
}]);
// beginConversation
bot.dialog("/beginConversation", function(session){
builder.Prompts.text(session,"Hello "+session.userData.name+"! "+prompt.conversation_begin_text);
});
// userGood
bot.dialog("/userGood", function(session){
session.userData.isHappy = true;
builder.Prompts.text(session,prompt.user_good_response_text+" "+prompt.address_query_text);
}).triggerAction({
matches: "Good",
intentThreshold:0.20
});
// userBad
bot.dialog("/userBad", function(session){
session.userData.isHappy = false;
builder.Prompts.text(session,prompt.user_bad_response_text+" "+prompt.address_query_text);
}).triggerAction({
matches: "Not Good",
intentThreshold:0.20
});
对话流程:
用户:嗨,机器人:来自机器人的问候!请告诉我你的名字
用户:John Doe
机器人:你好,约翰·多伊!你好吗
用户:我很好
我认为应该始终触发对应于最高得分意图的意图处理程序。bot应基于此意图处理程序进行响应
但是,尽管将triggerAction
的intentThreshold
参数显式设置为不同的阈值,但由于多个意图超过默认意图阈值,因此没有响应
我做错什么了吗
SDK版本:3.8.4您是否培训过您的LUIS模型识别非单词“Iam”?您在LUIS应用程序中使用了哪些训练数据来确定什么是“好”与“不好”?7个意图“getInfo1”-“getInfo7”的目的是什么?如果您所要做的只是让用户在“好”和“不好”之间进行选择-您可以通过选择提示轻松完成这一点,而无需使用LUIS@NilsW我没有训练LUIS识别“Iam”。然而,这只是我想在这里举的一个例子。我看到每当intent分数小于0.5时,就不会调用处理程序。另外,关于从
getInfo1
到getInfo7
的7个意图,这些意图是为了解决多个与功能相关的查询,因为预期bot将解决与产品相关的查询。谢谢你的输入。你训练你的路易斯模型识别非“Iam”这个词了吗?您在LUIS应用程序中使用了哪些训练数据来确定什么是“好”与“不好”?7个意图“getInfo1”-“getInfo7”的目的是什么?如果您所要做的只是让用户在“好”和“不好”之间进行选择-您可以通过选择提示轻松完成这一点,而无需使用LUIS@NilsW我没有训练LUIS识别“Iam”。然而,这只是我想在这里举的一个例子。我看到每当intent分数小于0.5时,就不会调用处理程序。另外,关于从getInfo1
到getInfo7
的7个意图,这些意图是为了解决多个与功能相关的查询,因为预期bot将解决与产品相关的查询。谢谢你的意见。