Общие сведения о типах проектов классификации

Завершено

Настраиваемая классификация текста назначает метки, которые в службе языка ИИ Azure — это класс , который разработчик определяет, текстовым файлам. Например, сводка по видеоигре может классифицироваться как жанр "Приключения", "Стратегия", "Экшн" или "Спорт".

Пользовательская классификация текстов поддерживает проекты двух типов:

  • В проектах классификации с использованием одной метки каждому файлу можно назначить только один класс. В приведенном выше примере сводка по видеоигре может классифицироваться только как жанр "Приключения" или "Стратегия".
  • Классификация с использованием нескольких меток — каждому файлу можно назначить несколько классов. Такой тип проекта позволяет классифицировать сводку по видеоигре как жанр "Приключения" или "Приключения и стратегия".

При создании проекта пользовательской классификации текстов можно указать, какой проект нужно создать.

Проекты классификации с использованием одной или нескольких меток

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

Маркировка данных

В проектах с одной меткой каждый файл назначается один класс во время процесса маркировки; Назначение классов в языке ИИ Azure позволяет выбрать только один класс.

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

Схема: сопоставление документов с метками при классификации с одной меткой и с несколькими метками.

Добавление правильных меток к данным, особенно для проектов с несколькими метками, напрямую влияет на качество модели. Чем выше качество, четкость и вариация набора данных, тем точнее будет модель.

Оценка и улучшение модели

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

  • Ложное срабатывание — модель прогнозирует x, но файл не помечен x.
  • Ложный отрицательный — модель не прогнозирует метку x, но файл на самом деле помечен x.

Эти метрики превратятся в три меры, предоставляемые языком искусственного интеллекта Azure:

  • Отклик модели — сколько из фактически имеющихся меток было идентифицировано; соотношение истинно положительных результатов ко всем элементам с метками.
  • Точность модели — сколько прогнозируемых меток являются правильными; соотношение истинно положительных результатов ко всем выявленным положительным результатам.
  • Оценка F1 — функция отклика и точности модели, предназначенная для предоставления единой оценки в целях максимальной сбалансированности каждого компонента

Совет

Дополнительные сведения о метриках оценки языка ИИ Azure, в том числе о том, как вычисляются эти метрики

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

Например, предположим, ваша модель правильно классифицирует игру в жанре "Экшн" и некоторые игры в жанре "Экшн и стратегия", но неправильно делает это для игр жанра "Стратегия". Чтобы улучшить модель, вы хотите найти более качественные и разнообразные сводки для игр "Действия и стратегия", а также "Стратегия" игры, чтобы научить вашу модель, как различать два. Эта проблема возрастает экспоненциально вместе с количеством возможных классов, в которые модель выполняет классификацию.

Полезные данные API

Язык ИИ Azure предоставляет REST API для создания и взаимодействия с моделью с помощью текста JSON для указания запроса. Этот API абстрагируется на несколько пакетов SDK для конкретного языка, однако в этом модуле примеры ориентированы на базовый REST API.

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

Модели классификации отдельных меток указывают тип customSingleLabelClassificationпроекта:

{
  "projectFileVersion": "<API-VERSION>",
  "stringIndexType": "Utf16CodeUnit",
  "metadata": {
    "projectName": "<PROJECT-NAME>",
    "storageInputContainerName": "<CONTAINER-NAME>",
    "projectKind": "customSingleLabelClassification",
    "description": "Trying out custom multi label text classification",
    "language": "<LANGUAGE-CODE>",
    "multilingual": true,
    "settings": {}
  },
  "assets": {
    "projectKind": "customSingleLabelClassification",
        "classes": [
            {
                "category": "Class1"
            },
            {
                "category": "Class2"
            }
        ],
        "documents": [
            {
                "location": "<DOCUMENT-NAME>",
                "language": "<LANGUAGE-CODE>",
                "dataset": "<DATASET>",
                "class": {
                    "category": "Class2"
                }
            },
            {
                "location": "<DOCUMENT-NAME>",
                "language": "<LANGUAGE-CODE>",
                "dataset": "<DATASET>",
                "class": {
                    "category": "Class1"
                }
            }
        ]
    }
}

Несколько моделей классификации меток указывают тип проекта CustomMultiLabelClassification

{
  "projectFileVersion": "<API-VERSION>",
  "stringIndexType": "Utf16CodeUnit",
  "metadata": {
    "projectName": "<PROJECT-NAME>",
    "storageInputContainerName": "<CONTAINER-NAME>",
    "projectKind": "customMultiLabelClassification",
    "description": "Trying out custom multi label text classification",
    "language": "<LANGUAGE-CODE>",
    "multilingual": true,
    "settings": {}
  },
  "assets": {
    "projectKind": "customMultiLabelClassification",
    "classes": [
      {
        "category": "Class1"
      },
      {
        "category": "Class2"
      }
    ],
    "documents": [
      {
        "location": "<DOCUMENT-NAME>",
        "language": "<LANGUAGE-CODE>",
        "dataset": "<DATASET>",
        "classes": [
          {
            "category": "Class1"
          },
          {
            "category": "Class2"
          }
        ]
      },
      {
        "location": "<DOCUMENT-NAME>",
        "language": "<LANGUAGE-CODE>",
        "dataset": "<DATASET>",
        "classes": [
          {
            "category": "Class2"
          }
        ]
      }
    ]
  }
}