Descripción de tipos de proyectos de clasificación

Completado

La clasificación de texto personalizada asigna etiquetas, que en el servicio de Lenguaje de Azure AI es una clase que el desarrollador define, a archivos de texto. Por ejemplo, un resumen de videojuegos podría clasificarse como "Aventura", "Estrategia", "Acción" o "Deportes".

La clasificación de texto personalizada tiene dos tipos de proyectos:

  • Clasificación de etiqueta única: solo puede asignar una clase a cada etiqueta. Siguiendo el ejemplo anterior, un resumen de videojuegos solo se podría clasificar como "Aventura" o "Estrategia".
  • Clasificación de varias etiquetas: puede asignar varias clases a cada archivo. Este tipo de proyecto permite clasificar un resumen de videojuegos como "Aventura" o "Aventura y estrategia".

Al crear el proyecto de clasificación de texto personalizado, puede especificar qué proyecto desea compilar.

Proyectos de una sola etiqueta frente a varias

Además de la capacidad de colocar archivos en varias clasificaciones, las principales diferencias con proyectos de clasificación de varias etiquetas son el etiquetado, las consideraciones para mejorar el modelo y la carga de la API para las tareas de clasificación.

Etiquetado de datos

En proyectos de etiqueta única, a cada archivo se le asigna una clase durante el proceso de etiquetado; la asignación de clases en Lenguaje de Azure AI solo permite seleccionar una clase.

Al etiquetar proyectos de varias etiquetas, puede asignar tantas clases como desee por archivo. El impacto de la complejidad agregada significa que los datos deben permanecer claros y proporcionar una buena distribución de posibles entradas para que el modelo aprenda.

Conceptual diagram that shows mapping of documents to labels for single label and multiple label classifications.

Etiquetar datos de forma correcta, especialmente para proyectos de varias etiquetas, se correlaciona directamente con el rendimiento del modelo. Cuanto mayores sean la calidad, claridad y variación del conjunto de datos, más preciso será el modelo.

Evaluación y mejora del modelo

La medición del rendimiento predictivo del modelo va más allá del número de predicciones correctas. Las clasificaciones correctas son cuando la etiqueta real es x y el modelo predice una etiqueta x. En el mundo real, los documentos producen diferentes tipos de errores cuando una clasificación no es correcta:

  • Falso positivo: el modelo predice x, pero el archivo no está etiquetado como x.
  • Falso negativo: el modelo no predice la etiqueta x, pero el archivo sí tiene la etiqueta x.

Estas métricas se traducen en tres medidas proporcionadas por Lenguaje de Azure AI:

  • Coincidencia : de todas las etiquetas reales, cuántas se han identificado; la proporción de verdaderos positivos con todo lo que se etiquetó.
  • Precisión : cuántas de las etiquetas predichas son correctas; la proporción de verdaderos positivos con todos los positivos identificados.
  • Puntuación F1 : función de coincidencia y precisión, diseñada para proporcionar una única puntuación para maximizar el equilibrio de cada componente

Sugerencia

Obtenga más información sobre las Métricas de evaluación de Lenguaje de Azure AI, incluido cómo se calculan estas métricas exactamente

Con un proyecto de etiqueta única, puede identificar qué clases no se clasifican tan bien como otras, y encontrar más datos de calidad para usarlos en el entrenamiento del modelo. En el caso de proyectos de varias etiquetas, averiguar los datos de calidad se vuelve más complejo debido a la matriz de posibles permutaciones de etiquetas combinadas.

Por ejemplo, vamos a que el modelo clasifique correctamente los juegos de "Acción" y algunos juegos de "Acción y estrategia", pero con errores en los juegos de "Estrategia". Para mejorar el modelo, querrá encontrar más resúmenes de alta calidad y variados para los juegos de "Acción y estrategia", así como "Estrategia", para enseñar a su modelo cómo diferenciarlos. Este desafío aumenta exponencialmente con más clases posibles en las que el modelo se clasifica.

Carga de API

Lenguaje de Azure AI proporciona una API de REST para compilar e interactuar con el modelo mediante un cuerpo JSON para especificar la solicitud. Esta API se abstrae en varios SDK específicos del lenguaje; pero, para este módulo, centraremos nuestros ejemplos en la API de REST base.

Para enviar una tarea de clasificación, la API requiere el cuerpo JSON para especificar qué tarea se va a ejecutar. Obtendrá más información sobre la API de REST en la unidad siguiente, pero merece la pena familiarizarse con partes del cuerpo necesario.

Los modelos de clasificación de etiqueta única especifican un tipo de proyecto 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"
                }
            }
        ]
    }
}

Los modelos de clasificación de varias etiquetas especifican un tipo de proyecto 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"
          }
        ]
      }
    ]
  }
}