Пакетное тестирование с помощью набора примеров высказываний

Важно!

Служба LUIS будет прекращена 1 октября 2025 г., и с 1 апреля 2023 г. вы не сможете создавать новые ресурсы LUIS. Мы рекомендуем перенести приложения LUIS на распознавание устной речи , чтобы воспользоваться непрерывной поддержкой продуктов и многоязычными возможностями.

При пакетном тестировании проверяется активная обученная версия для измерения правильности прогнозирования. Пакетный тест позволяет оценить правильность каждого намерения и сущности в активной версии. Изучив результаты пакетного тестирования, вы сможете принять меры для повышения правильности. Например, можно добавить в намерение новые примеры речевых фрагментов, если приложение часто ошибается с определением намерений, или пометить сущности в речевом фрагменте.

Группировка данных для пакетного тестирования

Очень важно применять для пакетного тестирования высказывания, еще не знакомые службе LUIS. Если у вас есть готовый набор речевых фрагментов, разделите его на три части: добавленные в намерение; полученные от опубликованной конечной точки; предназначенные для пакетного тестирования LUIS после обучения.

Пакетный JSON-файл должен включать в себя речевые фрагменты с сущностями машинного обучения верхнего уровня, для которых отмечены начальная и конечная позиции. Речевые фрагменты не должны принадлежать к примерам, которые уже есть в приложении. Это должны быть речевые фрагменты, которые необходимо положительно прогнозировать для намерений и сущностей.

Вы можете разделить тестовые элементы по намерению и (или) сущности или расположить все эти элементы (до 1000 речевых фрагментов) в одном файле.

Распространенные ошибки при импорте пакета

Если при отправке пакетного файла в LUIS произошли ошибки, проверьте, не вызваны ли они одной из следующих распространенных причин:

  • Более 1000 речевых фрагментов в пакетном файле.
  • Объект JSON, содержащий высказывание, не имеет свойства entities. Свойство может быть пустым массивом.
  • Слова, которые были помечены в нескольких сущностях.
  • Метки сущностей с пробелом в начале или в конце.

Исправление ошибок, выявленных при пакетном тестировании

Если при пакетном тестировании будут обнаружены ошибки, вы можете добавить в намерение больше высказываний и (или) сопоставить дополнительные высказывания с сущностью, чтобы служба LUIS лучше различала намерения. Если вы уже добавили все нужные высказывания и присвоили все метки, но в прогнозировании при пакетном тестировании по-прежнему возникают ошибки, попробуйте добавить список фраз с характерным для предметной области словарем, который поможет LUIS обучаться быстрее.

Пакетное тестирование с помощью портала LUIS

Импорт и обучение приложения-примера

Импортируйте приложение для заказа пиццы, например 1 pepperoni pizza on thin crust.

  1. Загрузите и сохраните JSON-файл приложения.

  2. Войдите на портал LUIS и выберите Подписка и Ресурс для разработки, чтобы просмотреть приложения, назначенные этому ресурсу для разработки.

  3. Щелкните стрелку рядом с полем Новое приложение и выберите Импорт JSON, чтобы импортировать JSON в новое приложение. Присвойте приложению имя Pizza app.

  4. Выберите Обучение в правом верхнем углу области навигации, чтобы обучить приложение.

Роли в пакетном тестировании

Внимание!

Роли сущности не поддерживаются при пакетном тестировании.

Файл для пакетного тестирования

Пример JSON включает в себя один речевой фрагмент с помеченной сущностью, чтобы проиллюстрировать, как выглядит тестовый файл. В собственных тестах у вас должно быть много речевых фрагментов с правильными намерениями и помеченными сущностями машинного обучения.

  1. Создайте файл pizza-with-machine-learned-entity-test.json в текстовом редакторе или скачайте его.

  2. В пакетный файл в формате JSON добавьте речевой фрагмент с намерением, которое должно быть спрогнозировано в тесте.

    [
        {
            "text": "I want to pick up 1 cheese pizza",
            "intent": "ModifyOrder",
            "entities": [
                {
                    "entity": "Order",
                    "startPos": 18,
                    "endPos": 31
                },
                {
                    "entity": "ToppingList",
                    "startPos": 20,
                    "endPos": 25
                }
            ]
        }
    ]
    

Запуск пакетного теста

  1. Нажмите кнопку Test (Тестировать) в верхней панели навигации.

  2. На правой панели щелкните ссылку Batch testing panel (Панель пакетного тестирования).

    Ссылка на пакетное тестирование

  3. Выберите Импорт. Откроется диалоговое окно, в котором нужно нажать Выбрать файл. Затем найдите JSON-файл с правильным форматом JSON, содержащий не более 1000 речевых фрагментов для тестирования.

    Ошибки импорта выводятся в красной строке уведомлений в верхней части браузера. Если при импорте возникают ошибки, набор данных не создается. Дополнительные сведения см. в разделе об общих ошибках.

  4. Выберите расположение для файла pizza-with-machine-learned-entity-test.json.

  5. Назовите набор данных pizza test и выберите Готово.

  6. Нажмите кнопку Запустить.

  7. Когда пакетное тестирование завершится, вы увидите такие столбцы:

    Столбец Описание
    Состояние Состояние теста. Элемент интерфейса Просмотреть результаты отображается только после завершения теста.
    Имя Имя, которое вы присвоили тесту.
    Размер Количество тестов в этом файле для пакетного тестирования.
    Последний запуск Дата последнего выполнения этого файла для пакетного тестирования.
    Последний результат Количество успешных прогнозов в тесте.
  8. Чтобы просмотреть подробные результаты теста, выберите Просмотреть результаты.

    Совет

    • При выборе пункта Загрузить будет загружен тот же файл, который вы отправили.
    • Если пакетное тестирование завершилось сбоем, это означает, что по крайней мере одно намерение с речевым фрагментом не совпало с прогнозом.

Просмотр намерений в результатах пакетного тестирования

Чтобы просмотреть результаты пакетного тестирования, щелкните See results (Просмотреть результаты). Результаты теста графически показывают, как тестовые речевые фрагменты спрогнозированы для активной версии.

Пакетная диаграмма отображает четыре квадранта результатов. В правой части диаграммы находится фильтр. Фильтр содержит намерения и сущности. При выборе раздела диаграммы или точки внутри диаграммы соответствующие высказывания отображаются под диаграммой.

При наведении курсора на диаграмму с помощью колеса мыши можно увеличить или уменьшить отображение. Это полезно в тех случаях, когда на диаграмме собрано много плотно сгруппированных точек.

Диаграмма состоит из четырех квадрантов, два из которых выделены красным цветом.

  1. В списке фильтров выберите намерение ModifyOrder. Речевой фрагмент спрогнозирован как истинно положительный результат. Это означает, что речевой фрагмент совпал с его положительным прогнозом, указанным в пакетном файле.

    Высказывание успешно соответствует его положительному прогнозу

    Зеленые флажки в списке фильтров также указывают на успешное выполнение теста для каждого намерения. Все остальные намерения перечислены с положительным результатом 1/1, потому что речевой фрагмент был протестирован для каждого намерения и является отрицательным для любых намерений, не перечисленных в пакетном тесте.

  2. Выберите намерение Confirmation. Это намерение не указано в пакетном тестировании, поэтому является отрицательным для речевого фрагмента, который указан в пакетном тесте.

    Высказывание успешно спрогнозировало отрицательное значение для намерения, не внесенного в список в пакетном файле

    Отрицательный тест выполнен успешно, как отмечено зеленым текстом в фильтре и на сетке.

Проверка результатов пакетного тестирования для сущностей

Сущность ModifyOrder, как машинная сущность с подсущностями, показывает, соответствует ли ожиданиям сущность верхнего уровня и как прогнозируются подсущности.

  1. Выберите сущность ModifyOrder в списке фильтров, а затем выберите круг на сетке.

  2. Прогнозирование сущности отображается под диаграммой. При этом отображаются сплошные линии для прогнозов, которые соответствуют ожиданиям, и пунктирные линии — для тех, которые не соответствуют.

    Родительский объект сущности успешно спрогнозировался в пакетном файле

Фильтрация результатов на диаграмме

Чтобы отфильтровать диаграмму по определенному намерению или сущности, выберите намерение или сущность на панели фильтрации справа. Точки данных и их распределение на диаграмме обновляются в зависимости от выбора.

Визуализированный результат пакетного тестирования

Примеры результатов на диаграммах

С диаграммами на портале LUIS можно выполнять описанные ниже действия.

Просмотр данных высказывания для одной точки

На диаграмме наведите указатель мыши на точку данных, чтобы увидеть оценку достоверности ее прогнозирования. Выберите точку данных для извлечения ее соответствующего высказывания из списка высказываний в нижней части страницы.

Выбранное высказывание

Просмотр данных раздела

В диаграмме из четырех частей выберите имя раздела, например False Positive (Ложноположительный результат), в правой верхней части диаграммы. Под диаграммой в списке отображаются все высказывания в указанном разделе.

Высказывания, выбранные по разделу

На предыдущем рисунке высказывание switch on помечено с намерением TurnAllOn, но получило прогнозирование намерения None. Это указывает на то, что для выполнения ожидаемого прогнозирования намерению TurnAllOn необходимы дополнительные высказывания.

Два красных раздела на диаграмме указывают на высказывания, которые не соответствуют ожидаемому прогнозированию. Это значит, что LUIS требуется дополнительное обучение.

Два зеленых раздела на диаграмме означают соответствие ожидаемому прогнозированию.

Дальнейшие шаги

Если тестирование показывает, что приложение LUIS не распознает правильные намерения и сущности, вы можете повысить производительность приложения LUIS, пометив дополнительные высказывания или добавив компоненты.