Не удалось извлечь намерение и набрать json путь из ответа Луиса - PullRequest
1 голос
/ 09 февраля 2020

Привет, народ, Я изо всех сил пытаюсь извлечь 2 лучших результата из ответов API LUIS и их соответствующих показателей. Из приведенного ниже ответа мне нужно извлечь 4 значения:

{
  "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": {}
  }
}

1 Ответ

2 голосов
/ 10 февраля 2020

Вам просто нужно отсортировать список намерений по их баллам. Вот пример JavaScript, предполагая, что ваш ответ JSON сохранен в result:

// Convert result to an array of intents
const intentsArray = Object.entries(result.prediction.intents).map(([k, v]) => ({ intent: k, score: v.score }));
// Sort the array, descending
const sorted = intentsArray.sort((a, b) => b.score - a.score);
// Pull out the top two entries
const top2 = sorted.slice(0, 2);
// Show the result
console.log(JSON.stringify(top2, null, 2));

В результате:

[
  {
    "intent": "NAME_INFO",
    "score": 0.0462775342
  },
  {
    "intent": "MONTHLY_HOUSING_INFO",
    "score": 0.0363982953
  }
]
...