Szövegbesorolási projektek létrehozásának ismertetése

Befejeződött

Az egyéni szövegbesorolási projektek a munkaterületek a besorolási modell létrehozásához, betanítása, fejlesztéséhez és üzembe helyezéséhez. A projekttel kétféleképpen dolgozhat: a Language Studióval és a REST API-val. A Language Studio a laborban használt grafikus felhasználói felület, de a REST API ugyanazokkal a funkciókkal rendelkezik. Függetlenül attól, hogy melyik módszert szeretné használni, a modell fejlesztésének lépései ugyanazok.

Az Azure AI Language projekt életciklusa

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

  • Címkék definiálása: Az osztályozni kívánt adatok megértése, a kategorizálni kívánt lehetséges címkék azonosítása. A videojáték-példánkban a címkék a "Action", az "Adventure", a "Strategy" és így tovább.
  • Címkeadatok: A meglévő adatok címkézése vagy címkézése, megadva az egyes fájlok címkéjét vagy címkéjét. Az adatok címkézése fontos, mivel a modell így tanulja meg a jövőbeli fájlok besorolását. Az ajánlott eljárás az, hogy egyértelmű különbségek legyenek a címkék között a kétértelműség elkerülése érdekében, és jó példákat adjon a modell egyes címkéire, amelyekből tanulni szeretne. Például a "Quest for the Mine Brush" játékot "Adventure"-nek, a "Flight Trainer"-t pedig "Action"-nek jelölnénk.
  • Modell betanítása: A modell betanítása a címkézett adatokkal. A betanítás megtanítja a modellnek, hogy milyen típusú videojáték-összefoglalókat kell címkézni, melyik műfajt.
  • Modell megtekintése: A modell betanítása után tekintse meg a modell eredményeit. A modell pontszáma 0 és 1 között történik a tesztelt adatok pontossága és visszahívása alapján. Jegyezze fel, melyik műfaj nem teljesített jól.
  • Modell továbbfejlesztése: A modell javítása: láthatja, hogy mely besorolások kiértékelése nem sikerült a megfelelő címkére, megtekintheti a címketerjesztést, és megtudhatja, hogy milyen adatokat kell hozzáadni a teljesítmény javításához. Előfordulhat például, hogy a modell keveredik az "Adventure" és a "Strategy" játékokkal. Próbáljon meg további példákat találni az egyes címkékre, hogy hozzáadja az adathalmazt a modell újratanításához.
  • Modell üzembe helyezése: Ha a modell a kívánt módon teljesít, telepítse a modellt, hogy elérhetővé tegye az API-val. Előfordulhat, hogy a modell neve "GameGenres", és az üzembe helyezés után használható a játékösszegzők besorolására.
  • Szöveg osztályozása: A modell használatával osztályozhatja a szöveget. A tesztkörnyezet bemutatja az API használatát, és megtekintheti az API-referencia

Adathalmazok felosztása betanításhoz

Az adatok címkézésekor megadhatja, hogy melyik adathalmaz legyen az egyes fájlok:

  • Betanítás – A betanítási adatkészlet a modell tényleges betanítására szolgál; a megadott adatok és címkék a gépi tanulási algoritmusba kerülnek, hogy megtanítsák a modellnek, hogy mely adatokra kell besorolni a címkét. A betanítási adatkészlet a két adathalmaz közül a nagyobb lesz, ajánlott a címkézett adatok körülbelül 80%-a.
  • Tesztelés – A tesztelési adatkészlet a betanítása után a modell ellenőrzésére használt címkével ellátott adatok. Az Azure a tesztelési adathalmazban lévő adatokat a modellnek küldi el, és összehasonlítja a kimenetet az adatok címkézésével annak megállapításához, hogy a modell milyen jól teljesített. Ennek az összehasonlításnak az eredménye az, hogy a modell hogyan lesz pontozott, és segít tudni, hogyan javíthatja a prediktív teljesítményt.

A Modell betanítása lépés során két lehetőség áll rendelkezésre a modell betanítására.

  • Automatikus felosztás – Az Azure az összes adatot véletlenszerűen felosztja a megadott százalékos értékekre, és alkalmazza őket a modell betanítására. Ez a lehetőség akkor a legjobb, ha nagyobb adathalmazsal rendelkezik, az adatok természetesen konzisztensebbek, vagy az adatok eloszlása széles körben lefedi az osztályokat.
  • Manuális felosztás – Manuálisan adja meg, hogy mely fájlok legyenek az egyes adathalmazokban. A betanítási feladat elküldésekor az Azure AI Language szolgáltatás tájékoztatja az adatkészlet és a disztribúció megosztásáról. Ezt a felosztást érdemes kisebb adathalmazokkal használni annak érdekében, hogy az osztályok és az adatváltozások megfelelő eloszlása megfelelő legyen a modell megfelelő betanításához.

Az automatikus felosztás használatához helyezze az összes fájlt a betanítási adatkészletbe az adatok címkézésekor (ez az alapértelmezett beállítás). A manuális felosztás használatához adja meg, hogy mely fájlok legyenek tesztelés alatt és betanításban az adatok címkézése során.

Telepítési beállítások

Az Azure AI Language lehetővé teszi, hogy minden projekt több modellt és több üzemelő példányt is létrehozhasson, mindegyiknek saját egyedi neve van. Az előnyök közé tartozik a következők képessége:

  • Két modell tesztelése egymás mellett
  • Az adathalmazok felosztásának összehasonlítása a teljesítményre gyakorolt hatásával
  • A modell több verziójának üzembe helyezése

Megjegyzés:

Minden projekt legfeljebb tíz üzembe helyezési névvel rendelkezik

Az üzembe helyezés során kiválaszthatja az üzembe helyezett modell nevét, amely aztán kiválasztható egy besorolási feladat elküldésekor:

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

A REST API használata

Az Azure AI Language szolgáltatáshoz elérhető REST API lehetővé teszi az Azure AI Language-projektek parancssori felületének fejlesztését ugyanúgy, ahogyan a Language Studio felhasználói felületet biztosít a projektek létrehozásához. A Language Studiót a modul laborjában részletesebben is megismerheti.

Az API használatának mintája

Az Azure AI Language szolgáltatás API-ja aszinkron módon működik a legtöbb híváshoz. Minden lépésben először elküldünk egy kérést a szolgáltatásnak, majd egy későbbi hívással visszalépünk a szolgáltatáshoz az állapot vagy az eredmény lekéréséhez.

Minden kéréshez fejléc szükséges a kérés hitelesítéséhez:

Kulcs Érték
Ocp-Apim-Subscription-Key Az Azure AI Language-erőforrás kulcsa

Kezdeti kérés elküldése

A kérés elküldéséhez használt URL-cím attól függően változik, hogy melyik lépésen van, de mindegyik előtagja az Azure AI Language-erőforrás által biztosított végpont.

Például egy modell betanításakor létre kell hoznia egy POST-t az URL-címre, amely az alábbihoz hasonlóan nézne ki:

<YOUR-ENDPOINT>/language/analyze-text/projects/<PROJECT-NAME>/:train?api-version=<API-VERSION>
Helyőrző Érték Példa
<YOUR-ENDPOINT> Az API-kérés végpontja https://<your-custom-resource>.cognitiveservices.azure.com
<PROJECT-NAME> A projekt neve (az érték megkülönbözteti a kis- és nagybetűk értékét) myProject

A kérelemhez a következő törzs lesz csatolva:

    {
        "modelLabel": "<MODEL-NAME>",
        "trainingConfigVersion": "<CONFIG-VERSION>",
        "evaluationOptions": {
            "kind": "percentage",
            "trainingSplitPercentage": 80,
            "testingSplitPercentage": 20
        }
    }
Kulcs Érték
<YOUR-MODEL> A modell neve.
trainingConfigVersion A modell betanítása érdekében használandó modellverzió.
runValidation Logikai érték, amely futtatja az ellenőrzést a tesztkészleten.
evaluationOptions Kiértékelési beállításokat ad meg.
kind Adatfelosztás típusát adja meg. percentage Lehet, hogy automatikus felosztást használ, vagy set ha manuálisan osztotta fel az adathalmazt
testingSplitPercentage Csak akkor szükséges egész szám mező, ha type százalékos érték. A tesztelés felosztását adja meg.
trainingSplitPercentage Csak akkor szükséges egész szám mező, ha type százalékos érték. A betanítás felosztását adja meg.

A fenti kérésre adott válasz egy 202lesz, ami azt jelenti, hogy a kérés sikeres volt. Ragadja meg a location válaszfejlécek értékét, amely az alábbi URL-címhez hasonlóan fog kinézni:

<ENDPOINT>/language/analyze-text/projects/<PROJECT-NAME>/train/jobs/<JOB-ID>?api-version=<API-VERSION>
Kulcs Érték
<JOB-ID> A kérés azonosítója

Ezt az URL-címet használja a következő lépésben a betanítási állapot lekéréséhez.

Betanítási állapot lekérése

A betanítási állapot lekéréséhez használja a kérés válaszának fejlécéből származó URL-címet a GET-kérés elküldéséhez, ugyanazzal a fejléccel, amely az Azure AI Language szolgáltatáskulcsot biztosítja a hitelesítéshez. A válasz törzse a következő JSON-hoz hasonló lesz:

{
  "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"
}

A modell betanítása eltarthat egy ideig, ezért rendszeresen ellenőrizze ezt az állapot URL-címet, amíg a válasz status vissza nem ad succeeded. A betanítás sikeres végrehajtása után megtekintheti, ellenőrizheti és üzembe helyezheti a modellt.

Üzembe helyezett modell felhasználása

A szöveg besorolására használt modell a fent vázolt mintát követi, a feladat elküldését végző POST-kérelem és az eredmények lekérésére irányuló GET-kérés.

Szöveg beküldése besoroláshoz

A modell használatához küldjön egy POST-t az elemzési végpontnak a következő URL-címen:

<ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Helyőrző Érték Példa
<YOUR-ENDPOINT> Az API-kérés végpontja https://<your-custom-resource>.cognitiveservices.azure.com

Fontos

Ne felejtse el belefoglalni az erőforráskulcsot a fejlécbe a következőhöz: Ocp-Apim-Subscription-Key

A kérelemhez a következő JSON-struktúra lesz csatolva:

{
  "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>"
      }
    }
  ]
}
Kulcs Érték
<TASK-REQUIRED> Melyik feladatot kéri. A feladat CustomMultiLabelClassification több címkeprojekthez vagy CustomSingleLabelClassification egycímkés projektekhez tartozik
<LANGUAGE-CODE> A nyelvi kód, például en-us.
<TASK-NAME> A feladat neve.
<PROJECT-NAME> A projekt neve.
<DEPLOYMENT-NAME> Az üzemelő példány neve.

A fenti kérésre adott válasz egy 202lesz, ami azt jelenti, hogy a kérés sikeres volt. Keresse meg a operation-location válaszfejlécek értékét, amely az alábbi URL-címhez hasonlóan fog kinézni:

<ENDPOINT>/language/analyze-text/jobs/<JOB-ID>?api-version=<API-VERSION>
Kulcs Érték
<YOUR-ENDPOINT> Az API-kérés végpontja
<JOB-ID> A kérés azonosítója

Ez az URL-cím a feladat eredményeinek lekérésére szolgál.

Besorolási eredmények lekérése

Küldjön get kérést a végpontnak az előző kérésből, ugyanazzal a fejléccel a hitelesítéshez. A válasz törzse a következő JSON-hoz hasonló lesz:

{
  "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"
        }
      }
    ]
  }
}

A besorolási eredmény az elemek tömbjének objektumán results belül található, minden elküldött dokumentum esetében.