Förstå hur du skapar textklassificeringsprojekt

Slutförd

Anpassade textklassificeringsprojekt är din arbetsyta för att skapa, träna, förbättra och distribuera din klassificeringsmodell. Du kan arbeta med projektet på två sätt: via Language Studio och via REST-API:et. Language Studio är det GUI som ska användas i labbet, men REST-API:et har samma funktioner. Oavsett vilken metod du föredrar är stegen för att utveckla din modell desamma.

Projektlivscykel för Azure AI Language

Diagram that shows a life cycle with steps to define labels, tag data, train model, view model, improve model, deploy model, and classify text.

  • Definiera etiketter: Förstå de data som du vill klassificera och identifiera de möjliga etiketter som du vill kategorisera i. I vårt videospelsexempel skulle våra etiketter vara "Action", "Adventure", "Strategy" och så vidare.
  • Taggdata: Tagga eller märka dina befintliga data och ange etiketten eller etiketterna som varje fil hamnar under. Det är viktigt att märka data eftersom det är så din modell lär sig att klassificera framtida filer. Bästa praxis är att ha tydliga skillnader mellan etiketter för att undvika tvetydigheter och ge bra exempel på varje etikett som modellen kan lära sig av. Vi skulle till exempel märka spelet "Quest for the Mine Brush" som "Adventure" och "Flight Trainer" som "Action".
  • Träna modell: Träna din modell med etiketterade data. Träning lär vår modell vilka typer av videospelsammanfattningar som ska märkas som genre.
  • Visa modell: När din modell har tränats visar du resultatet av modellen. Din modell poängsätts mellan 0 och 1, baserat på precisionen och återkallandet av de data som testats. Notera vilken genre som inte presterade bra.
  • Förbättra modellen: Förbättra din modell genom att se vilka klassificeringar som inte kunde utvärderas till rätt etikett, se etikettfördelningen och ta reda på vilka data som ska läggas till för att förbättra prestandan. Du kan till exempel hitta din modell som blandar "Adventure" och "Strategy"-spel. Försök att hitta fler exempel på varje etikett som ska läggas till i datauppsättningen för omträning av din modell.
  • Distribuera modell: När din modell fungerar som du vill distribuerar du din modell för att göra den tillgänglig via API:et. Din modell kan ha namnet "GameGenres" och när den har distribuerats kan den användas för att klassificera spelsammanfattningar.
  • Klassificera text: Använd din modell för att klassificera text. Labbet beskriver hur du använder API:et och du kan visa API-referensen

Så här delar du upp datauppsättningar för träning

När du etiketterar dina data kan du ange vilken datauppsättning du vill att varje fil ska vara:

  • Träning – Träningsdatauppsättningen används för att träna modellen. De data och etiketter som tillhandahålls matas in i maskininlärningsalgoritmen för att lära din modell vilka data som ska klassificeras till vilken etikett. Träningsdatauppsättningen blir den större av de två datauppsättningarna, vilket rekommenderas att vara cirka 80 % av dina etiketterade data.
  • Testning – Testdatauppsättningen är märkt med data som används för att verifiera din modell när den har tränats. Azure tar data i testdatauppsättningen, skickar dem till modellen och jämför utdata med hur du etiketterade dina data för att avgöra hur väl modellen presterade. Resultatet av den jämförelsen är hur din modell får poäng och hjälper dig att veta hur du kan förbättra dina förutsägande prestanda.

Under steget Träna modell finns det två alternativ för hur du tränar din modell.

  • Automatisk delning – Azure tar alla dina data, delar upp dem i de angivna procentsatserna slumpmässigt och tillämpar dem i träning av modellen. Det här alternativet är bäst när du har en större datamängd, data är naturligt mer konsekventa eller om fördelningen av dina data omfattar dina klasser i stor utsträckning.
  • Manuell delning – Ange manuellt vilka filer som ska finnas i varje datauppsättning. När du skickar träningsjobbet kommer Azure AI Language-tjänsten att berätta om uppdelningen av datamängden och distributionen. Den här uppdelningen används bäst med mindre datamängder för att säkerställa att rätt fördelning av klasser och variation i data finns för att träna din modell korrekt.

Om du vill använda den automatiska uppdelningen placerar du alla filer i träningsdatauppsättningen när du etiketterar dina data (det här alternativet är standardvärdet). Om du vill använda den manuella uppdelningen anger du vilka filer som ska testas jämfört med träning under etikettering av dina data.

Distribueringsalternativ

Med Azure AI Language kan varje projekt skapa både flera modeller och flera distributioner, var och en med sitt eget unika namn. Fördelarna är bland annat möjligheten att:

  • Testa två modeller sida vid sida
  • Jämför hur uppdelningen av datamängder påverkar prestanda
  • Distribuera flera versioner av din modell

Kommentar

Varje projekt har en gräns på tio distributionsnamn

Under distributionen kan du välja namnet på den distribuerade modellen, som sedan kan väljas när du skickar in en klassificeringsuppgift:

<...>
  "tasks": [
    {
      "kind": "CustomSingleLabelClassification",
      "taskName": "MyTaskName",
      "parameters": {
        "projectName": "MyProject",
        "deploymentName": "MyDeployment"
      }
    }
  ]
<...>

Använda REST API

REST-API:et som är tillgängligt för Azure AI Language-tjänsten möjliggör CLI-utveckling av Azure AI Language-projekt på samma sätt som Language Studio tillhandahåller ett användargränssnitt för att skapa projekt. Language Studio utforskas ytterligare i den här modulens labb.

Mönster för att använda API:et

API:et för Azure AI Language-tjänsten fungerar asynkront för de flesta anrop. I varje steg skickar vi först en begäran till tjänsten och återkommer sedan med tjänsten via ett efterföljande anrop för att hämta status eller resultat.

Med varje begäran krävs en rubrik för att autentisera din begäran:

Tangent Värde
Ocp-Apim-Subscription-Key Nyckeln till din Azure AI Language-resurs

Skicka en första begäran

URL:en för att skicka begäran till varierar beroende på vilket steg du befinner dig på, men alla är prefix med slutpunkten som tillhandahålls av din Azure AI Language-resurs.

Om du till exempel vill träna en modell skapar du ett POST till URL:en som skulle se ut ungefär så här:

<YOUR-ENDPOINT>/language/analyze-text/projects/<PROJECT-NAME>/:train?api-version=<API-VERSION>
Platshållare Värde Exempel
<YOUR-ENDPOINT> Slutpunkten för din API-begäran https://<your-custom-resource>.cognitiveservices.azure.com
<PROJECT-NAME> Namnet på projektet (värdet är skiftlägeskänsligt) myProject

Följande brödtext skulle bifogas till begäran:

    {
        "modelLabel": "<MODEL-NAME>",
        "trainingConfigVersion": "<CONFIG-VERSION>",
        "evaluationOptions": {
            "kind": "percentage",
            "trainingSplitPercentage": 80,
            "testingSplitPercentage": 20
        }
    }
Tangent Värde
<YOUR-MODEL> Ditt modellnamn.
trainingConfigVersion Den modellversion som ska användas för att träna din modell.
runValidation Booleskt värde för att köra validering på testuppsättningen.
evaluationOptions Anger utvärderingsalternativ.
kind Anger datadelningstyp. Kan vara percentage om du använder en automatisk delning eller set om du delar upp datamängden manuellt
testingSplitPercentage Obligatoriskt heltalsfält endast om type är procent. Anger testningsdelning.
trainingSplitPercentage Obligatoriskt heltalsfält endast om type är procent. Anger träningsdelning.

Svaret på ovanstående begäran blir en 202, vilket innebär att begäran lyckades. location Hämta värdet från svarshuvudena, som ser ut ungefär som följande URL:

<ENDPOINT>/language/analyze-text/projects/<PROJECT-NAME>/train/jobs/<JOB-ID>?api-version=<API-VERSION>
Tangent Värde
<JOB-ID> Identifierare för din begäran

Den här URL:en används i nästa steg för att hämta träningsstatusen.

Hämta träningsstatus

Om du vill få träningsstatus använder du URL:en från rubriken för begärandesvaret för att skicka en GET-begäran , med samma huvud som tillhandahåller vår Azure AI Language-tjänstnyckel för autentisering. Svarstexten liknar följande JSON:

{
  "result": {
    "modelLabel": "<MODEL-NAME>",
    "trainingConfigVersion": "<CONFIG-VERSION>",
    "estimatedEndDateTime": "2023-05-18T15:47:58.8190649Z",
    "trainingStatus": {
      "percentComplete": 3,
      "startDateTime": "2023-05-18T15:45:06.8190649Z",
      "status": "running"
    },
    "evaluationStatus": {
      "percentComplete": 0,
      "status": "notStarted"
    }
  },
  "jobId": "<JOB-ID>",
  "createdDateTime": "2023-05-18T15:44:44Z",
  "lastUpdatedDateTime": "2023-05-18T15:45:48Z",
  "expirationDateTime": "2023-05-25T15:44:44Z",
  "status": "running"
}

Det kan ta lite tid att träna en modell, så kom tillbaka regelbundet vid den här status-URL:en tills svaret status returnerar succeeded. När träningen har slutförts kan du visa, verifiera och distribuera din modell.

Använda en distribuerad modell

Att använda modellen för att klassificera text följer samma mönster som ovan, med en POST-begäran som skickar jobbet och en GET-begäran för att hämta resultatet.

Skicka text för klassificering

Om du vill använda din modell skickar du en POST till analysslutpunkten på följande URL:

<ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Platshållare Värde Exempel
<YOUR-ENDPOINT> Slutpunkten för din API-begäran https://<your-custom-resource>.cognitiveservices.azure.com

Viktigt!

Kom ihåg att inkludera resursnyckeln i rubriken för Ocp-Apim-Subscription-Key

Följande JSON-struktur skulle kopplas till begäran:

{
  "displayName": "Classifying documents",
  "analysisInput": {
    "documents": [
      {
        "id": "1",
        "language": "<LANGUAGE-CODE>",
        "text": "Text1"
      },
      {
        "id": "2",
        "language": "<LANGUAGE-CODE>",
        "text": "Text2"
      }
    ]
  },
  "tasks": [
     {
      "kind": "<TASK-REQUIRED>",
      "taskName": "<TASK-NAME>",
      "parameters": {
        "projectName": "<PROJECT-NAME>",
        "deploymentName": "<DEPLOYMENT-NAME>"
      }
    }
  ]
}
Tangent Värde
<TASK-REQUIRED> Vilken uppgift du begär. Uppgiften gäller CustomMultiLabelClassification för flera etikettprojekt eller CustomSingleLabelClassification för projekt med en etikett
<LANGUAGE-CODE> Språkkoden, till exempel en-us.
<TASK-NAME> Ditt uppgiftsnamn.
<PROJECT-NAME> Projektnamnet.
<DEPLOYMENT-NAME> Ditt distributionsnamn.

Svaret på ovanstående begäran blir en 202, vilket innebär att begäran lyckades. operation-location Leta efter värdet i svarsrubrikerna, som ser ut ungefär så här:

<ENDPOINT>/language/analyze-text/jobs/<JOB-ID>?api-version=<API-VERSION>
Tangent Värde
<YOUR-ENDPOINT> Slutpunkten för din API-begäran
<JOB-ID> Identifierare för din begäran

Den här URL:en används för att hämta dina aktivitetsresultat.

Hämta klassificeringsresultat

Skicka en GET-begäran till slutpunkten från föregående begäran med samma huvud för autentisering. Svarstexten liknar följande JSON:

{
  "createdDateTime": "2023-05-19T14:32:25.578Z",
  "displayName": "MyJobName",
  "expirationDateTime": "2023-05-19T14:32:25.578Z",
  "jobId": "xxxx-xxxxxx-xxxxx-xxxx",
  "lastUpdateDateTime": "2023-05-19T14:32:25.578Z",
  "status": "succeeded",
  "tasks": {
    "completed": 1,
    "failed": 0,
    "inProgress": 0,
    "total": 1,
    "items": [
      {
        "kind": "customSingleClassificationTasks",
        "taskName": "Classify documents",
        "lastUpdateDateTime": "2022-10-01T15:01:03Z",
        "status": "succeeded",
        "results": {
          "documents": [
            {
              "id": "<DOC-ID>",
              "class": [
                  {
                      "category": "Class_1",
                      "confidenceScore": 0.0551877357
                  }
              ],
              "warnings": []
            }
          ],
          "errors": [],
          "modelVersion": "2022-04-01"
        }
      }
    ]
  }
}

Klassificeringsresultatet finns i objektmatrisens objekt för varje dokument som skickas results .