Entender os tipos de projetos de classificação
A classificação de texto personalizado atribui rótulos, que no serviço de Linguagem do Azure é uma classe que o desenvolvedor define, a arquivos de texto. Por exemplo, um resumo de videogame pode ser classificado como "Aventura", "Estratégia", "Ação" ou "Esportes".
A classificação de texto personalizado 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ó poderia ser classificado como "Aventura" ou "Estratégia".
- Classificação de vários rótulos – você pode atribuir várias classes a cada arquivo. Esse tipo de projeto permite que você classifique um resumo de videogame 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 versus vários
Além da capacidade de colocar arquivos em várias classificações, as principais diferenças com projetos de classificação com múltiplos rótulos são a rotulagem, as considerações para melhorar seu modelo e a carga útil da API para tarefas de classificação.
Rotular dados
Em projetos de rótulo único, cada arquivo recebe uma classe durante o processo de rotulagem; A atribuição de classe no Idioma do Azure permite que você selecione apenas uma classe.
Ao rotular vários projetos de rótulo, você pode atribuir quantas classes desejar por arquivo. O impacto da complexidade adicionada significa que seus dados precisam permanecer claros e fornecer uma boa distribuição de possíveis entradas para seu modelo aprender.
A rotulagem correta de dados, especialmente para projetos de vários rótulos, está diretamente correlacionada ao desempenho do modelo. Quanto maior a qualidade, a clareza e a variação do conjunto de dados, mais preciso será o modelo.
Avaliando e melhorando seu modelo
Medir o desempenho preditivo do 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 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 do Azure:
- Recall – de todos os rótulos reais, quantos foram identificados; a taxa de verdadeiros positivos em relação a tudo o que foi rotulado.
- Precisão – quantos dos rótulos previstos estão corretos; a taxa de verdadeiros positivos com relação a todos os positivos identificados.
- Pontuação F1 – uma função de recall e precisão, destinada a fornecer uma única pontuação para maximizar o equilíbrio de cada componente
Dica
Saiba mais sobre as métricas de avaliação da Linguagem do Azure, incluindo exatamente como essas métricas são calculadas
Com um único projeto de rótulo, você pode identificar quais classes não são classificadas tão bem quanto outras e encontrar mais dados de qualidade para usar no treinamento do modelo. Para vários projetos de rótulo, descobrir dados de qualidade torna-se mais complexo devido à matriz de possíveis permutações de rótulos combinados.
Por exemplo, o seu modelo está classificando corretamente os jogos de "Ação" e alguns jogos de "Ação e Estratégia", mas falha nos jogos de "Estratégia". Para melhorar seu modelo, você desejará encontrar resumos mais 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. Esse desafio aumenta exponencialmente com mais classes possíveis em que seu modelo está classificando.
Conteúdo da API
A Linguagem 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 para linguagens de programação, 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 os elementos necessários do corpo da requisição.
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 single 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ótulo 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"
}
]
}
]
}
}