Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megtudhatja, hogyan elemezheti a megjegyzések hangulatát valós időben egy webalkalmazásban.
Ez az oktatóanyag bemutatja, hogyan hozhat létre egy ASP.NET Core Razor Pages-alkalmazást, amely valós időben osztályozza a webhely megjegyzéseinek hangulatát.
Ebben az oktatóanyagban a következőket sajátíthatja el:
- ASP.NET Core Razor Pages-alkalmazás létrehozása
- Az adatok előkészítése és értelmezése
- Forgatókönyv kiválasztása
- Töltse be az adatokat
- A modell betanítása
- A modell kiértékelése
- A modell használata előrejelzésekhez
Az oktatóanyag forráskódját a dotnet/machinelearning-samples adattárban találja.
Prerequisites
Az előfeltételek és a telepítési utasítások listáját a Model Builder telepítési útmutatójában találja.
Razor Pages-alkalmazás létrehozása
Hozzon létre egy ASP.NET Core Razor Pages-alkalmazást.
- A Visual Studióban nyissa meg az Új projekt létrehozása párbeszédpanelt .
- Az "Új projekt létrehozása" párbeszédpanelen válassza ki a ASP.NET Core Web App-projektsablont.
- A Név szövegmezőbe írja be a "SentimentRazor" kifejezést, és válassza a Tovább gombot.
- A További információ párbeszédpanelen hagyja meg az összes alapértelmezett beállítást, és válassza a Létrehozás lehetőséget.
Az adatok előkészítése és értelmezése
Töltse le a Wikipedia detox adatkészletét. Amikor megnyílik a weblap, kattintson a jobb gombbal a lapra, válassza a Mentés másként lehetőséget, és mentse a fájlt bárhol a számítógépen.
A wikipedia-detox-250-line-data.tsv adatkészlet minden sora egy másik áttekintést jelöl, amelyet egy felhasználó hagyott a Wikipédián. Az első oszlop a szöveg hangulatát jelöli (0 nem mérgező, 1 mérgező), a második oszlop pedig a felhasználó által hagyott megjegyzést jelöli. Az oszlopok fülekkel vannak elválasztva. Az adatok a következőképpen néznek ki:
| Sentiment | SentimentText |
|---|---|
| 1 | ==RUDE== Haver, akkor durva feltölteni, hogy Carl kép vissza, vagy más. |
| 1 | == OK! == IM MEGY VANDALIZE WILD ONES WIKI AKKOR!! |
| 0 | Remélem, ez segít. |
Model Builder konfigurációs fájl létrehozása
Amikor először hozzáad egy gépi tanulási modellt a megoldáshoz, a rendszer kérni fogja, hogy hozzon létre egy mbconfig fájlt. A mbconfig fájl nyomon követi a Model Builderben elvégezhető összes műveletet, hogy újra megnyissa a munkamenetet.
- A Megoldáskezelőben kattintson a jobb gombbal a SentimentRazor projektre, és válassza aMachine Learning-modellhozzáadása> lehetőséget.
- A párbeszédpanelen nevezze el a Model Builder projekt SentimentAnalysis.mbconfig nevét, és válassza a Hozzáadás lehetőséget.
Forgatókönyv kiválasztása
A modell betanítása érdekében a Model Builder által biztosított elérhető gépi tanulási forgatókönyvek listájából kell választania.
Ebben a mintában a feladat szövegbesorolás. A Model Builder bővítmény Forgatókönyv lépésében válassza ki a Szövegbesorolási forgatókönyvet .
Környezet kiválasztása
A Model Builder a kiválasztott forgatókönyvtől függően különböző környezeteken taníthat be.
Válassza a Helyi (GPU) lehetőséget környezetként, majd kattintson a Következő lépés gombra.
Note
Ez a forgatókönyv olyan mélytanulási technikákat használ, amelyek GPU-környezetekben a legjobban működnek. Ha nem rendelkezik GPU-val, válassza a Helyi (CPU) környezetet, de vegye figyelembe, hogy a betanított idő jelentősen hosszabb lesz. A GPU-k a Model Builderrel való használatával kapcsolatos további információkért tekintse meg a Gpu-támogatást a Model Builder útmutatójában.
Töltse be az adatokat
A Model Builder két forrásból, egy SQL Server-adatbázisból vagy egy helyi fájlból fogad adatokat vagy tsv formátumotcsv.
- A Model Builder eszköz adatlépésében válassza a Fájl lehetőséget az adatforrás beállításai közül.
- Válassza a Fájl szövegdoboz melletti gombot, és a Fájlkezelővel tallózzon és válassza ki a wikipedia-detox-250-line-data.tsv fájlt.
- Válassza az Oszlop hangulata lehetőséget a (Címke) legördülő lista előrejelzéséhez .
- Válassza a Hangulatszöveg lehetőséget a Szövegoszlop legördülő listában.
- A Következő lépés gombra kattintva lépjen a Model Builder következő lépésére.
A modell betanítása
Az oktatóanyagban a hangulatelemzési modell betanítása során használt gépi tanulási feladat a szövegbesorolás. A modellbetanítási folyamat során a Model Builder a NAS-BERT neurális hálózati architektúrával tanít be egy szövegbesorolási modellt az adathalmazhoz.
Válassza a Betanítás indítása lehetőséget.
A betanítás befejezése után a betanítási folyamat eredményei megjelennek a Betanítási képernyő Betanítási eredmények szakaszában. A betanítási eredmények mellett három kód mögötti fájl is létrejön a SentimentAnalysis.mbconfig fájlban.
-
SentimentAnalysis.consumption.cs – Ez a fájl tartalmazza a
ModelInputmodell felhasználásához létrehozott sémákat ésModelOutputsémákatPredict. - SentimentAnalysis.training.cs – Ez a fájl tartalmazza a Model Builder által a modell betanításához kiválasztott betanítási folyamatot (adatátalakítások, trénerek, tréner hiperparaméterek). Ezt a folyamatot használhatja a modell újratanításához.
- * SentimentAnalysis.mlnet – Ez a fájl egy ML.NET modell metaadatait és konfigurációs adatait tartalmazza.
-
SentimentAnalysis.consumption.cs – Ez a fájl tartalmazza a
A Következő lépés gombra kattintva lépjen a következő lépésre.
A modell kiértékelése
A betanítási lépés eredménye egy olyan modell lesz, amely a legjobb teljesítményt nyújtja. A Model Builder eszköz kiértékelési lépésében a kimeneti szakasz tartalmazza a legjobb teljesítményt nyújtó modell által a kiértékelési metrikákban használt trénert.
Ha nem elégedett a kiértékelési metrikákkal, a modell teljesítményének javításának néhány egyszerű módja a további adatok használata.
Ellenkező esetben a Következő lépés gombra kattintva lépjen a Modellszerkesztő Használat lépésére.
Használati projektsablonok hozzáadása (nem kötelező)
A Használat lépésben a Model Builder olyan projektsablonokat biztosít, amelyekkel felhasználhatja a modellt. Ez a lépés nem kötelező, és kiválaszthatja az igényeinek leginkább megfelelő módszert a modell használatához.
- Console application
- Web API
Adja hozzá a kódot az előrejelzések készítéséhez
A PredictionEngine készlet konfigurálása
Egyetlen előrejelzés létrehozásához létre kell hoznia egy PredictionEngine<TSrc,TDst>.
PredictionEngine<TSrc,TDst> nem szálbiztos. Emellett mindenhol létre kell hoznia egy példányt, amire szükség van az alkalmazásban. Az alkalmazás növekedésével ez a folyamat kezelhetetlenné válhat. A jobb teljesítmény és a szálbiztonság érdekében használja a függőséginjektálás és a PredictionEnginePool szolgáltatás kombinációját, amely objektumokat hoz létre ObjectPool<T>PredictionEngine<TSrc,TDst> az alkalmazás teljes területén való használatra.
Telepítse a Microsoft.Extensions.ML NuGet-csomagot:
- A Megoldáskezelőterületen kattintson a jobb gombbal a projektre, és válassza a NuGet-csomagok kezeléselehetőséget.
- Válassza a "nuget.org" lehetőséget a Csomag forrásaként.
- Válassza a Tallózás lapot, és keresse meg a Microsoft.Extensions.ML.
- Válassza ki a csomagot a listában, és válassza a Telepítés lehetőséget.
- Válassza az OK gombot a Változások előnézete párbeszédpanelen
- Ha elfogadja a felsorolt csomagok licencfeltételét, válassza az Elfogadom gombot a Licenc elfogadása párbeszédpanelen.
Nyissa meg a Program.cs fájlt a SentimentRazor projektben.
Adja hozzá a következő
usingirányelveket a Microsoft.Extensions.ML NuGet-csomagra és a SentimentRazorML.Model projektre való hivatkozáshoz :using Microsoft.Extensions.ML; using static SentimentRazor.SentimentAnalysis;Konfigurálja az PredictionEnginePool<TData,TPrediction> alkalmazást a Program.cs fájlban:
builder.Services.AddPredictionEnginePool<ModelInput, ModelOutput>() .FromFile("SentimentAnalysis.mlnet");
Hangulatelemzési kezelő létrehozása
Az előrejelzések az alkalmazás főoldalán lesznek. Ezért hozzá kell adni egy olyan módszert, amely a felhasználói bemenetet használja, és az PredictionEnginePool<TData,TPrediction> előrejelzés visszaadásához használja.
Nyissa meg a Pages könyvtárban található Index.cshtml.cs fájlt, és adja hozzá a következő
usingirányelveket:using Microsoft.Extensions.ML; using static SentimentRazor.SentimentAnalysis;Ahhoz, hogy a PredictionEnginePool<TData,TPrediction>Program.cs fájlban konfiguráltat használhassa, be kell szúrnia annak a modellnek a konstruktorába, ahol használni szeretné.
Adjon hozzá egy változót, amely a PredictionEnginePool<TData,TPrediction>
IndexModelPages/Index.cshtml.cs fájlon belüli osztályra hivatkozik.private readonly PredictionEnginePool<ModelInput, ModelOutput> _predictionEnginePool;Módosítsa a konstruktort az
IndexModelosztályban, és adja hozzá a PredictionEnginePool<TData,TPrediction> szolgáltatást.public IndexModel(ILogger<IndexModel> logger, PredictionEnginePool<ModelInput, ModelOutput> predictionEnginePool) { _logger = logger; _predictionEnginePool = predictionEnginePool; }Hozzon létre egy metóduskezelőt, amely a
PredictionEnginePoolweblapról kapott felhasználói bemenetből származó előrejelzéseket készít.OnGetA metódus alatt hozzon létre egy új, úgynevezett metódustOnGetAnalyzeSentimentpublic IActionResult OnGetAnalyzeSentiment([FromQuery] string text) { }A metóduson
OnGetAnalyzeSentimentbelül semleges hangulatot ad vissza, ha a felhasználó bemenete üres vagy null.if (String.IsNullOrEmpty(text)) return Content("Neutral");Érvényes bemenet esetén hozzon létre egy új példányt.
ModelInputvar input = new ModelInput { SentimentText = text };A hangulat előrejelzéséhez használja a PredictionEnginePool<TData,TPrediction> elemet.
var prediction = _predictionEnginePool.Predict(input);Konvertálja az előrejelzett
boolértéket mérgezővé vagy nem mérgezővé az alábbi kóddal.var sentiment = Convert.ToBoolean(prediction.PredictedLabel) ? "Toxic" : "Not Toxic";Végül adja vissza a hangulatot a weblapra.
return Content(sentiment);
A weblap konfigurálása
A visszaadott OnGetAnalyzeSentiment eredmények dinamikusan jelennek meg a Index weblapon.
Nyissa meg az Index.cshtml fájlt a Pages könyvtárban, és cserélje le annak tartalmát a következő kódra:
@page @model IndexModel @{ ViewData["Title"] = "Home page"; } <div class="text-center"> <h2>Live Sentiment</h2> <p><textarea id="Message" cols="45" placeholder="Type any text like a short review"></textarea></p> <div class="sentiment"> <h4>Your sentiment is...</h4> <p>😡 😐 😍</p> <div class="marker"> <div id="markerPosition" style="left: 45%;"> <div>▲</div> <label id="markerValue">Neutral</label> </div> </div> </div> </div>Ezután adja hozzá a css-stíluskódot a wwwroot\css könyvtár site.css oldalának végéhez:
/* Style for sentiment display */ .sentiment { background-color: #eee; position: relative; display: inline-block; padding: 1rem; padding-bottom: 0; border-radius: 1rem; } .sentiment h4 { font-size: 16px; text-align: center; margin: 0; padding: 0; } .sentiment p { font-size: 50px; } .sentiment .marker { position: relative; left: 22px; width: calc(100% - 68px); } .sentiment .marker > div { transition: 0.3s ease-in-out; position: absolute; margin-left: -30px; text-align: center; } .sentiment .marker > div > div { font-size: 50px; line-height: 20px; color: green; } .sentiment .marker > div label { font-size: 30px; color: gray; }Ezután adjon hozzá kódot a weblapról a kezelőnek küldött bemenetekhez
OnGetAnalyzeSentiment.A wwwroot\js könyvtárban található site.js fájlban hozzon létre egy függvényt, amely meghív
getSentimentegy GET HTTP-kérést aOnGetAnalyzeSentimentkezelő felhasználói bemenetével.function getSentiment(userInput) { return fetch(`Index?handler=AnalyzeSentiment&text=${userInput}`) .then((response) => { return response.text(); }) }Az alábbiakban adjon hozzá egy másik függvényt
updateMarker, amely dinamikusan frissíti a jelölő pozícióját a weblapon a hangulat előrejelzése szerint.function updateMarker(markerPosition, sentiment) { $("#markerPosition").attr("style", `left:${markerPosition}%`); $("#markerValue").text(sentiment); }Hozzon létre egy eseménykezelő függvényt, amely a
updateSentimentfelhasználótól kéri le a bemenetet, küldje el aOnGetAnalyzeSentimentfüggvénynek agetSentimentfüggvény használatával, és frissítse a jelölőt aupdateMarkerfüggvénnyel.function updateSentiment() { var userInput = $("#Message").val(); getSentiment(userInput) .then((sentiment) => { switch (sentiment) { case "Not Toxic": updateMarker(100.0, sentiment); break; case "Toxic": updateMarker(0.0, sentiment); break; default: updateMarker(45.0, "Neutral"); } }); }Végül regisztrálja az eseménykezelőt, és kösse az
textareaelemhez azid=Messageattribútummal.$("#Message").on('change input paste', updateSentiment)
Az alkalmazás futtatása
Most, hogy az alkalmazás be van állítva, futtassa az alkalmazást, amelynek a böngészőben kell elindulnia.
Amikor az alkalmazás elindul, írja be a szövegterületre az Ez a modell nem rendelkezik elegendő adatval . Az előrejelzett hangulatnak mérgezőnek kell lennie.
Note
PredictionEnginePool<TData,TPrediction>több példányt hoz létre.PredictionEngine<TSrc,TDst> A modell mérete miatt, amikor először használja az előrejelzéshez, eltarthat néhány másodpercig. A későbbi előrejelzéseknek azonnaliaknak kell lenniük.
Next steps
Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:
- ASP.NET Core Razor Pages-alkalmazás létrehozása
- Az adatok előkészítése és értelmezése
- Forgatókönyv kiválasztása
- Töltse be az adatokat
- A modell betanítása
- A modell kiértékelése
- A modell használata előrejelzésekhez
Additional Resources
Az oktatóanyagban említett témakörökről az alábbi forrásokból tudhat meg többet: