You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:无法从LUIS响应中提取意图及分数,需提取Top2高分意图与分数

解决LUIS响应的意图提取问题

嘿,我来帮你搞定这两个从LUIS响应里提取数据的问题!下面针对你的需求给出具体的实现方案,我用JavaScript来举例——毕竟这是处理LUIS响应最常用的语言之一:


一、提取指定意图(比如topIntent)及其分数

从你提供的LUIS响应里,要拿到topIntent和对应的分数很简单,只需要先定位到prediction节点,再通过topIntent的值去intents对象里取对应的分数就行。

代码示例:

// 假设这是你拿到的LUIS响应JSON对象
const luisResponse = {
  "query": "turn on all lights",
  "prediction": {
    "topIntent": "NAME_INFO",
    "intents": {
      "NAME_INFO": { "score": 0.0462775342 },
      "MONTHLY_HOUSING_INFO": { "score": 0.0363982953 },
      "WHAT_NEXT_INFO": { "score": 0.03436338 },
      "ADDRESS_INFO": { "score": 0.0306101535 },
      "SOCIAL_SECURITY_INFO": { "score": 0.0280603524 },
      "SECURITY_DEPOSIT_RETURN": { "score": 0.0137537634 },
      "None": { "score": 0.003310648 },
      "SECURITY_DEPOSIT_INFO": { "score": 0.00294959615 }
    },
    "entities": {}
  }
};

// 提取topIntent和对应的分数
const topIntent = luisResponse.prediction.topIntent;
const topIntentScore = luisResponse.prediction.intents[topIntent].score;

console.log(`Top Intent: ${topIntent}, Score: ${topIntentScore}`);
// 输出:Top Intent: NAME_INFO, Score: 0.0462775342

如果你的LUIS响应是字符串格式,记得先解析成JSON对象:const luisResponse = JSON.parse(luisResponseString);


二、提取得分最高的2个意图及其分数

要拿到分数最高的前2个意图,需要先把intents这个对象转换成数组,然后按分数从高到低排序,最后取前两个元素。

代码示例:

// 基于上面的luisResponse对象
const intentsArray = Object.entries(luisResponse.prediction.intents)
  .map(([intentName, intentData]) => ({
    intent: intentName,
    score: intentData.score
  }));

// 按分数降序排序
const sortedIntents = intentsArray.sort((a, b) => b.score - a.score);

// 取前2个
const top2Intents = sortedIntents.slice(0, 2);

console.log("Top 2 Intents:");
top2Intents.forEach((item, index) => {
  console.log(`${index+1}. Intent: ${item.intent}, Score: ${item.score}`);
});
// 输出:
// 1. Intent: NAME_INFO, Score: 0.0462775342
// 2. Intent: MONTHLY_HOUSING_INFO, Score: 0.0363982953

关键步骤说明:

  • Object.entries():把intents对象转换成键值对数组,每个元素是[意图名称, {score: 分数}]的格式
  • map():把数组转换成包含intent和score的对象数组,方便后续排序和使用
  • sort():按分数从高到低排序(b.score - a.score是降序,反过来就是升序)
  • slice(0,2):截取前2个元素,得到得分最高的两个意图

内容的提问来源于stack exchange,提问作者Christian Verbois

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:02:42