Тестирование высказывания: сравнение с «опубликованным» приводит к тому, что строка JSON полностью отличается от результатов, полученных при запросе API - PullRequest
3 голосов
/ 14 февраля 2020

Я только что обучил свое приложение LUIS и опубликовал его для производства. Если я протестирую это на высказывании, я могу увидеть, как этот результат сравнивается с опубликованной версией, и посмотреть на результат JSON. Проблема в том, что я получаю совершенно иной JSON результат, чем когда я запрашиваю API через его URL. Вот результат теста JSON:

{
  "query": "please show me *johnson*",
  "prediction": {
    "normalizedQuery": "please show me *johnson*",
    "topIntent": "Show",
    "intents": {
      "Show": {
        "score": 0.985523641
      }
    },
    "entities": {
      "ShowObject": [
        "*johnson*"
      ],
      "$instance": {
        "ShowObject": [
          {
            "type": "ShowObject",
            "text": "*johnson*",
            "startIndex": 15,
            "length": 9,
            "score": 0.8382344,
            "modelTypeId": 1,
            "modelType": "Entity Extractor",
            "recognitionSources": [
              "model"
            ]
          }
        ]
      }
    }
  }
}

, а вот результат запроса API:

{
  "query": "please show me *johnson*",
  "topScoringIntent": {
    "intent": "Show",
    "score": 0.985523641
  },
  "intents": [
    {
      "intent": "Show",
      "score": 0.985523641
    }
  ],
  "entities": [
    {
      "entity": "* johnson *",
      "type": "ShowObject",
      "startIndex": 15,
      "endIndex": 23,
      "score": 0.8382344
    }
  ]
}

Проблема с результатом запроса API заключается в том, что он не возвращает достаточно информацию о сущности, и она возвращает отличную от сущность, чем результат теста. Обратите внимание, что результат теста возвращает *johnson* без пробелов рядом со звездочками, как и в исходном запросе, но результат запроса API возвращает * johnson * с пробелами около звездочек. Я не хочу, чтобы он вставлял пробелы, поэтому я предпочитаю результат теста, а не результат запроса API.

Почему они отличаются, и как я могу получить запрос API для возврата результата, подобного тесту , т.е. без изменения входной строки для добавления пробелов рядом со звездочками.

Вот URL запроса API, включающий параметры:

https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/[app ID removed]?q=please+show+me+*johnson*&timezoneOffset=0&verbose=true&spellCheck=false&staging=false

1 Ответ

0 голосов
/ 24 февраля 2020

О, теперь я вижу - это, вероятно, символ поиска по шаблону, верно? Если это так, я лично не знаю, как убрать это из ответа LUIS, и я видел подобное, я думаю, когда там тоже есть @mention. Однако, если это равно для облегчения поиска, так что вы знаете, что есть хороший шанс иметь * до и / или после сущности «ShowObject», то это должно быть достаточно легко проверить и заменить либо строка, либо регулярное выражение (замените «звезда плюс пространство» пробелом, я имею в виду - я понимаю, что вам нужна сама звезда). По сути, вы бы заменили «[start] [space]» на «[start] », и то же самое в конце. Не красиво, но выполнимо и просто в реализации ...

Просто из интереса, вы также ожидаете * в середине строки?

...