Inzicht in typen classificatieprojecten

Voltooid

Aangepaste tekstclassificatie wijst labels toe, die in de Azure AI Language-service een klasse is die de ontwikkelaar definieert, aan tekstbestanden. Een samenvatting van een videogame kan bijvoorbeeld worden geclassificeerd als 'Adventure', 'Strategy', 'Action' of 'Sports'.

Aangepaste tekstclassificatie valt in twee soorten projecten:

  • Classificatie van één label: u kunt slechts één klasse toewijzen aan elk bestand. Na het bovenstaande voorbeeld kon een samenvatting van een videogame alleen worden geclassificeerd als 'Adventure' of 'Strategy'.
  • Meerdere labelclassificaties : u kunt meerdere klassen toewijzen aan elk bestand. Met dit type project kunt u een samenvatting van een videogame classificeren als 'Adventure' of 'Adventure and Strategy'.

Wanneer u uw aangepaste tekstclassificatieproject maakt, kunt u opgeven welk project u wilt bouwen.

Projecten met één versus meerdere labels

Naast de mogelijkheid om bestanden in meerdere classificaties te plaatsen, zijn de belangrijkste verschillen met meerdere labelclassificatieprojecten labelen, overwegingen voor het verbeteren van uw model en de API-nettolading voor classificatietaken.

Gegevens labelen

In projecten met één label wordt aan elk bestand één klasse toegewezen tijdens het labelproces; met klassetoewijzing in Azure AI Language kunt u slechts één klasse selecteren.

Wanneer u meerdere labelprojecten labelt, kunt u zoveel klassen toewijzen als u per bestand wilt. De impact van de toegevoegde complexiteit betekent dat uw gegevens duidelijk moeten blijven en een goede verdeling bieden van mogelijke invoer voor uw model om van te leren.

Conceptueel diagram met de toewijzing van documenten aan labels voor één label en meerdere labelclassificaties.

Het correct labelen van gegevens, met name voor meerdere labelprojecten, is rechtstreeks gecorreleerd aan hoe goed uw model presteert. Hoe hoger de kwaliteit, helderheid en variatie van uw gegevensset, hoe nauwkeuriger uw model is.

Uw model evalueren en verbeteren

Het meten van voorspellende prestaties van uw model gaat verder dan het aantal voorspellingen dat juist was. De juiste classificaties zijn wanneer het werkelijke label x is en het model een label x voorspelt. In de praktijk resulteren documenten in verschillende soorten fouten wanneer een classificatie niet juist is:

  • Fout-positief: het model voorspelt x, maar het bestand heeft geen label x.
  • Fout-negatief: het model voorspelt geen label x, maar het bestand heeft het label x.

Deze metrische gegevens worden omgezet in drie metingen die worden geleverd door Azure AI Language:

  • Relevante overeenkomsten : van alle werkelijke labels, hoeveel er zijn geïdentificeerd; de verhouding van terecht-positieven tot alles wat is gelabeld.
  • Precisie : hoeveel van de voorspelde labels juist zijn; de verhouding van terecht-positieven tot alle geïdentificeerde positieven.
  • F1 Score - Een functie van relevante overeenkomsten en precisie, bedoeld om één score te bieden om te maximaliseren voor een balans van elk onderdeel

Tip

Meer informatie over de metrische gegevens van de Azure AI-taalevaluatie, inclusief precies hoe deze metrische gegevens worden berekend

Met één labelproject kunt u identificeren welke klassen niet evenals andere klassen worden geclassificeerd en meer kwaliteitsgegevens vinden die u kunt gebruiken bij het trainen van uw model. Voor meerdere labelprojecten wordt het uitzoeken van kwaliteitsgegevens complexer vanwege de matrix van mogelijke permutaties van gecombineerde labels.

Laten we bijvoorbeeld uw model 'Actie'-games en enkele 'Actie- en strategie'-games correct classificeren, maar mislukken bij 'Strategie'-games. Als u uw model wilt verbeteren, wilt u meer hoogwaardige en gevarieerde samenvattingen vinden voor zowel actie- als strategiegames, evenals strategiegames om uw model te leren hoe u de twee kunt onderscheiden. Deze uitdaging neemt exponentieel toe met meer mogelijke klassen waar uw model in classificeert.

API-nettolading

Azure AI Language biedt een REST API voor het bouwen en gebruiken van uw model, met behulp van een JSON-hoofdtekst om de aanvraag op te geven. Deze API wordt geabstraheerd in meerdere taalspecifieke SDK's, maar voor deze module richten we ons op onze voorbeelden op de basis-REST API.

Voor het verzenden van een classificatietaak moet de API de JSON-hoofdtekst opgeven welke taak moet worden uitgevoerd. In de volgende les leert u meer over de REST API, maar u moet vertrouwd raken met onderdelen van de vereiste hoofdtekst.

Classificatiemodellen met één label geven een projecttype van 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"
                }
            }
        ]
    }
}

Meerdere labelclassificatiemodellen geven een projecttype van 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"
          }
        ]
      }
    ]
  }
}