Compreender os tipos de projetos de classificação

Concluído

A classificação de texto personalizada atribui rótulos, que no serviço Azure AI Language é uma classe que o desenvolvedor define, a arquivos de texto. Por exemplo, um resumo de videojogo pode ser classificado como "Aventura", "Estratégia", "Ação" ou "Desporto".

A classificação de texto personalizada se enquadra em dois tipos de projetos:

  • Classificação de rótulo único - você pode atribuir apenas uma classe a cada arquivo. Seguindo o exemplo acima, um resumo de videogame só pode ser classificado como "Aventura" ou "Estratégia".
  • Classificação de vários rótulos - você pode atribuir várias classes a cada arquivo. Este tipo de projeto permitiria classificar um resumo de videojogo como "Aventura" ou "Aventura e Estratégia".

Ao criar seu projeto de classificação de texto personalizado, você pode especificar qual projeto deseja criar.

Projetos de rótulo único vs. múltiplo

Além da capacidade de colocar arquivos em várias classificações, as principais diferenças com vários projetos de classificação de rótulos são rotulagem, considerações para melhorar seu modelo e a carga útil da API para tarefas de classificação.

Dados de rotulagem

Em projetos de rótulo único, cada arquivo recebe uma classe durante o processo de rotulagem; atribuição de classe no Azure AI Language só permite que você selecione uma classe.

Ao rotular vários projetos de rótulo, você pode atribuir quantas classes quiser por arquivo. O impacto da complexidade adicional significa que seus dados devem permanecer claros e fornecer uma boa distribuição de possíveis entradas para seu modelo aprender.

Diagrama conceitual que mostra o mapeamento de documentos para rótulos para classificações de rótulo único e múltiplo.

Rotular dados corretamente, especialmente para vários projetos de rótulos, está diretamente correlacionado com o desempenho do seu modelo. Quanto maior for a qualidade, clareza e variação do seu conjunto de dados, mais preciso será o seu modelo.

Avaliar e melhorar o seu modelo

Medir o desempenho preditivo do seu modelo vai além de quantas previsões estavam corretas. As classificações corretas são quando o rótulo real é x e o modelo prevê um rótulo x. No mundo real, os documentos resultam em diferentes tipos de erros quando uma classificação não está correta:

  • Falso positivo - o modelo prevê x, mas o arquivo não é rotulado como x.
  • Falso negativo - o modelo não prevê o rótulo x, mas o arquivo na verdade é rotulado x.

Essas métricas são traduzidas em três medidas fornecidas pela Linguagem de IA do Azure:

  • Recall - De todos os rótulos reais, quantos foram identificados, a proporção de verdadeiros positivos para tudo o que foi rotulado.
  • Precisão - Quantos dos rótulos previstos estão corretos, a proporção de verdadeiros positivos para todos os positivos identificados.
  • F1 Score - Uma função de recordação e precisão, destinada a fornecer uma pontuação única para maximizar para um equilíbrio de cada componente

Gorjeta

Saiba mais sobre as métricas de avaliação da Linguagem de IA do Azure, incluindo exatamente como essas métricas são calculadas

Com um projeto de rótulo único, você pode identificar quais classes não são classificadas, bem como outras, e encontrar mais dados de qualidade para usar no treinamento do seu modelo. Para projetos de rótulos múltiplos, descobrir dados de qualidade torna-se mais complexo devido à matriz de possíveis permutações de rótulos combinados.

Por exemplo, vamos que seu modelo está classificando corretamente os jogos de "Ação" e alguns jogos de "Ação e Estratégia", mas falhando em jogos de "Estratégia". Para melhorar seu modelo, você vai querer encontrar mais resumos variados e de alta qualidade para jogos de "Ação e Estratégia", bem como jogos de "Estratégia" para ensinar seu modelo a diferenciar os dois. Este desafio aumenta exponencialmente com mais classes possíveis em que o seu modelo está a classificar-se.

Carga útil da API

A Linguagem de IA do Azure fornece uma API REST para criar e interagir com seu modelo, usando um corpo JSON para especificar a solicitação. Essa API é abstraída em vários SDKs específicos de idioma, no entanto, para este módulo, concentraremos nossos exemplos na API REST base.

Para enviar uma tarefa de classificação, a API requer que o corpo JSON especifique qual tarefa executar. Você aprenderá mais sobre a API REST na próxima unidade, mas vale a pena se familiarizar com partes do corpo necessário.

Os modelos de classificação de rótulo único especificam um tipo de projeto de 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"
                }
            }
        ]
    }
}

Vários modelos de classificação de rótulos especificam um tipo de projeto de 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"
          }
        ]
      }
    ]
  }
}