Förstå typer av klassificeringsprojekt

Slutförd

Anpassad textklassificering tilldelar etiketter, som i Azure AI Language-tjänsten är en klass som utvecklaren definierar, till textfiler. Till exempel kan en videospelsammanfattning klassificeras som "Adventure", "Strategy", "Action" eller "Sports".

Anpassad textklassificering ingår i två typer av projekt:

  • Klassificering med en etikett – du kan bara tilldela en klass till varje fil. I exemplet ovan kunde en videospelsammanfattning bara klassificeras som "Adventure" eller "Strategy".
  • Klassificering av flera etiketter – du kan tilldela flera klasser till varje fil. Med den här typen av projekt kan du klassificera en videospelsammanfattning som "Adventure" eller "Adventure and Strategy".

När du skapar ditt projekt för anpassad textklassificering kan du ange vilket projekt du vill skapa.

Projekt med en eller flera etiketter

Förutom möjligheten att placera filer i flera klassificeringar är de viktigaste skillnaderna med flera etikettklassificeringsprojekt etikettering, överväganden för att förbättra din modell och API-nyttolasten för klassificeringsuppgifter.

Etikettera data

I projekt med en etikett tilldelas varje fil en klass under etiketteringsprocessen. med klasstilldelning i Azure AI Language kan du bara välja en klass.

När du etiketterar flera etikettprojekt kan du tilldela så många klasser som du vill ha per fil. Effekten av den extra komplexiteten innebär att dina data måste vara tydliga och ge en bra fördelning av möjliga indata för din modell att lära sig av.

Konceptdiagram som visar mappning av dokument till etiketter för enkel etikett och flera etikettklassificeringar.

Att märka data korrekt, särskilt för flera etikettprojekt, är direkt korrelerat med hur bra din modell presterar. Ju högre kvalitet, tydlighet och variation av datamängden är, desto mer exakt blir din modell.

Utvärdera och förbättra din modell

Mätning av förutsägelseprestanda för din modell går utöver hur många förutsägelser som var korrekta. Korrekta klassificeringar är när den faktiska etiketten är x och modellen förutsäger en etikett x. I verkligheten resulterar dokument i olika typer av fel när en klassificering inte är korrekt:

  • Falskt positivt – modellen förutsäger x, men filen är inte märkt x.
  • Falskt negativt – modellen förutsäger inte etiketten x, men filen är i själva verket märkt x.

Dessa mått översätts till tre mått som tillhandahålls av Azure AI Language:

  • Recall – av alla faktiska etiketter, hur många som identifierades; förhållandet mellan sanna positiva identifieringar och alla som var märkta.
  • Precision – Hur många av de förutsagda etiketterna som är korrekta; förhållandet mellan sanna positiva identifieringar och alla identifierade positiva identifieringar.
  • F1-poäng – en funktion med träffsäkerhet och precision som är avsedd att ge en enda poäng för att maximera för en balans mellan varje komponent

Dricks

Läs mer om utvärderingsmått för Azure AI Language, inklusive exakt hur dessa mått beräknas

Med ett projekt med en etikett kan du identifiera vilka klasser som inte klassificeras lika bra som andra och hitta mer kvalitetsdata att använda när du tränar din modell. För flera etikettprojekt blir det mer komplext att räkna ut kvalitetsdata på grund av matrisen med möjliga permutationer av kombinerade etiketter.

Låt oss till exempel din modell korrekt klassificera "Action"-spel och vissa "Action and Strategy"-spel, men misslyckas med "Strategi"-spel. För att förbättra din modell vill du hitta mer högkvalitativa och varierande sammanfattningar för både "Action and Strategy"-spel, samt "Strategi"-spel för att lära din modell hur man skiljer de två. Den här utmaningen ökar exponentiellt med fler möjliga klasser som din modell klassificerar till.

API-nyttolast

Azure AI Language tillhandahåller ett REST-API för att skapa och interagera med din modell med hjälp av en JSON-brödtext för att ange begäran. Det här API:et abstraheras till flera språkspecifika SDK:er, men för den här modulen fokuserar vi våra exempel på rest-API:et.

För att skicka en klassificeringsaktivitet kräver API:et att JSON-brödtexten anger vilken uppgift som ska köras. Du får lära dig mer om REST-API:et i nästa lektion, men det är värt att bekanta dig med delar av den obligatoriska brödtexten.

Klassificeringsmodeller med en etikett anger en projekttyp för 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"
                }
            }
        ]
    }
}

Flera etikettklassificeringsmodeller anger en projekttyp för 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"
          }
        ]
      }
    ]
  }
}