Principy vytváření projektů klasifikace textu

Dokončeno

Projekty vlastní klasifikace textu jsou vaším pracovním prostorem pro sestavování, trénování, vylepšování a nasazování klasifikačního modelu. S projektem můžete pracovat dvěma způsoby: prostřednictvím sady Language Studio a přes rozhraní REST API. Language Studio je grafické uživatelské rozhraní, které se použije v testovacím prostředí, ale rozhraní REST API má stejné funkce. Bez ohledu na to, jakou metodu dáváte přednost, jsou kroky pro vývoj modelu stejné.

Životní cyklus projektu 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.

  • Definovat popisky: Vysvětlení dat, která chcete klasifikovat, identifikujte možné popisky, do kterých chcete kategorizovat. V našem příkladu videohry by popisky byly "Akce", "Dobrodružství", "Strategie" atd.
  • Data značek: Označte nebo označte stávající data a určete popisek nebo popisky, pod které každý soubor spadá. Popisování dat je důležité, protože se v modelu dozvíte, jak klasifikovat budoucí soubory. Osvědčeným postupem je mít jasné rozdíly mezi popisky, aby nedocházelo k nejednoznačnosti, a poskytnout dobré příklady jednotlivých popisků, ze kterých se model může učit. Například bychom označili hru "Quest for the Mine Brush" jako "Adventure" a "Flight Trainer" jako "Action".
  • Trénování modelu: Vytrénujte model pomocí označených dat. Trénování naučí náš model, jaké typy souhrnů videoher by měly být označeny, jaký žánr.
  • Zobrazit model: Po vytrénování modelu si prohlédněte výsledky modelu. Model se vyhodnotí v rozmezí od 0 do 1 na základě přesnosti a úplnosti testovaných dat. Poznamenejte si, který žánr neprovádí dobře.
  • Vylepšení modelu: Vylepšete svůj model tím, že zjistíte, které klasifikace se nepodařilo vyhodnotit na správný popisek, podívejte se na distribuci popisků a zjistěte, jaká data se mají přidat, aby se zlepšil výkon. Můžete například najít kombinaci "Adventure" a "Strategie" hry. Zkuste najít další příklady jednotlivých popisků pro přidání do datové sady pro opětovné trénování modelu.
  • Nasazení modelu: Jakmile bude model fungovat podle potřeby, nasaďte ho, aby byl dostupný prostřednictvím rozhraní API. Váš model může mít název GameGenres a po nasazení se dá použít ke klasifikaci souhrnů her.
  • Klasifikovat text: Klasifikujte text pomocí modelu. Toto cvičení popisuje, jak používat rozhraní API, a můžete zobrazit referenční informace k rozhraní API.

Rozdělení datových sad pro trénování

Při označování dat můžete určit, jakou datovou sadu má mít každý soubor:

  • Trénování – trénovací datová sada se používá k skutečnému trénování modelu. Poskytnutá data a popisky se předávají do algoritmu strojového učení a učí váš model, jaká data by se měla klasifikovat na který popisek. Trénovací datová sada bude větší ze dvou datových sad, doporučuje se přibližně 80 % vašich označených dat.
  • Testování – Testovací datová sada je označená daty sloužící k ověření modelu po vytrénování. Azure vezme data v testovací datové sadě, odešle je do modelu a porovná výstup s popiskem dat a určí, jak dobře model funguje. Výsledkem tohoto porovnání je to, jak model získá skóre a pomůže vám zjistit, jak zlepšit prediktivní výkon.

V kroku Trénování modelu existují dvě možnosti, jak model vytrénovat.

  • Automatické rozdělení – Azure vezme všechna vaše data, náhodně je rozdělí na zadané procento a použije je při trénování modelu. Tato možnost je nejlepší v případě, že máte větší datovou sadu, data jsou přirozeně konzistentnější nebo distribuce vašich dat široce pokrývá vaše třídy.
  • Ruční rozdělení – Ručně určete, které soubory mají být v každé datové sadě. Když odešlete trénovací úlohu, služba Azure AI Language vám řekne rozdělení datové sady a distribuce. Toto rozdělení se nejlépe používá s menšími datovými sadami, aby se zajistilo správné rozdělení tříd a variant dat pro správné trénování modelu.

Pokud chcete použít automatické rozdělení, při označování dat vložte všechny soubory do trénovací datové sady (tato možnost je výchozí). Pokud chcete použít ruční rozdělení, určete, které soubory mají být při testování a trénování během označování dat.

Možnosti nasazení

Jazyk Azure AI umožňuje každému projektu vytvářet více modelů i více nasazení, z nichž každý má vlastní jedinečný název. Mezi výhody patří možnost:

  • Testování dvou modelů vedle sebe
  • Porovnání vlivu rozdělení datových sad na výkon
  • Nasazení více verzí modelu

Poznámka:

Každý projekt má limit deseti názvů nasazení.

Během nasazení můžete zvolit název nasazeného modelu, který pak můžete vybrat při odesílání úlohy klasifikace:

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

Použití rozhraní REST API

Rozhraní REST API dostupné pro službu Azure AI Language umožňuje vývoj projektů Azure AI jazyka CLI stejným způsobem jako Language Studio poskytuje uživatelské rozhraní pro vytváření projektů. Language Studio se dále zkoumá v cvičení tohoto modulu.

Model používání rozhraní API

Rozhraní API pro službu Azure AI Language funguje asynchronně pro většinu volání. V každém kroku odešleme nejprve žádost do služby a pak se pomocí následného volání vraťte se službou a získejte stav nebo výsledek.

Při každém požadavku se k ověření požadavku vyžaduje hlavička:

Key Hodnota
Ocp-Apim-Subscription-Key Klíč k vašemu prostředku Azure AI Language

Odeslat počáteční žádost

Adresa URL pro odeslání požadavku se liší podle toho, ve kterém kroku se nacházíte, ale všechny jsou předponou koncového bodu poskytovaného prostředkem jazyka Azure AI.

Například pro trénování modelu byste vytvořili POST na adresu URL, která by vypadala nějak takto:

<YOUR-ENDPOINT>/language/analyze-text/projects/<PROJECT-NAME>/:train?api-version=<API-VERSION>
Zástupný symbol Hodnota Příklad
<YOUR-ENDPOINT> Koncový bod pro požadavek rozhraní API https://<your-custom-resource>.cognitiveservices.azure.com
<PROJECT-NAME> Název projektu (v hodnotě se rozlišují malá a velká písmena) myProject

K požadavku by se připojil následující text:

    {
        "modelLabel": "<MODEL-NAME>",
        "trainingConfigVersion": "<CONFIG-VERSION>",
        "evaluationOptions": {
            "kind": "percentage",
            "trainingSplitPercentage": 80,
            "testingSplitPercentage": 20
        }
    }
Key Hodnota
<YOUR-MODEL> Název vašeho modelu.
trainingConfigVersion Verze modelu, která se má použít k trénování modelu.
runValidation Logická hodnota pro spuštění ověřování v testovací sadě
evaluationOptions Určuje možnosti vyhodnocení.
kind Určuje datový typ rozdělení. Může to být percentage , pokud používáte automatické rozdělení nebo set pokud datovou sadu rozdělíte ručně.
testingSplitPercentage Povinné celočíselné pole pouze v případě, že type je procento. Určuje rozdělení testování.
trainingSplitPercentage Povinné celočíselné pole pouze v případě, že type je procento. Určuje rozdělení trénování.

Odpověď na výše uvedený požadavek bude výsledkem 202, což znamená, že požadavek byl úspěšný. location Získejte hodnotu z hlaviček odpovědi, která bude vypadat podobně jako následující adresa URL:

<ENDPOINT>/language/analyze-text/projects/<PROJECT-NAME>/train/jobs/<JOB-ID>?api-version=<API-VERSION>
Key Hodnota
<JOB-ID> Identifikátor vaší žádosti

Tato adresa URL se používá v dalším kroku k získání stavu trénování.

Získání stavu trénování

Pokud chcete získat stav trénování, použijte adresu URL z hlavičky odpovědi požadavku k odeslání požadavku GET se stejnou hlavičkou, která poskytuje klíč služby Azure AI Language pro ověřování. Text odpovědi bude podobný následujícímu formátu 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"
}

Trénování modelu může nějakou dobu trvat, takže pravidelně kontrolujte zpět na tuto adresu URL stavu, dokud odpověď status nevrátí succeeded. Po úspěšném trénování můžete model zobrazit, ověřit a nasadit.

Využívání nasazeného modelu

Použití modelu ke klasifikaci textu se řídí stejným vzorem, jak je uvedeno výše, s požadavkem POST, který odešle úlohu a požadavek GET pro načtení výsledků.

Odeslání textu pro klasifikaci

Pokud chcete použít model, odešlete post do koncového bodu analýzy na následující adrese URL:

<ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Zástupný symbol Hodnota Příklad
<YOUR-ENDPOINT> Koncový bod pro požadavek rozhraní API https://<your-custom-resource>.cognitiveservices.azure.com

Důležité

Nezapomeňte do hlavičky zahrnout klíč prostředku Ocp-Apim-Subscription-Key

K požadavku by byla připojena následující struktura JSON:

{
  "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>"
      }
    }
  ]
}
Key Hodnota
<TASK-REQUIRED> Který úkol požadujete. Úkol je CustomMultiLabelClassification určený pro více projektů popisků nebo CustomSingleLabelClassification pro projekty s jedním popiskem.
<LANGUAGE-CODE> Kód jazyka, například en-us.
<TASK-NAME> Název vašeho úkolu.
<PROJECT-NAME> Název vašeho projektu.
<DEPLOYMENT-NAME> Název vašeho nasazení.

Odpověď na výše uvedený požadavek bude výsledkem 202, což znamená, že požadavek byl úspěšný. operation-location Vyhledejte hodnotu v hlavičce odpovědi, která bude vypadat přibližně jako následující adresa URL:

<ENDPOINT>/language/analyze-text/jobs/<JOB-ID>?api-version=<API-VERSION>
Key Hodnota
<YOUR-ENDPOINT> Koncový bod pro požadavek rozhraní API
<JOB-ID> Identifikátor vaší žádosti

Tato adresa URL slouží k získání výsledků úkolů.

Získání výsledků klasifikace

Odešlete požadavek GET do koncového bodu z předchozího požadavku se stejnou hlavičkou pro ověřování. Text odpovědi bude podobný následujícímu formátu 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"
        }
      }
    ]
  }
}

Výsledek klasifikace je v objektu results pole položek pro každý odeslaný dokument.