Esercitazione: Analizzare il sentiment dei commenti dei siti Web in un'applicazione Web usando ML.NET Model Builder
Articolo
Informazioni su come analizzare il sentiment dai commenti in tempo reale all'interno di un'applicazione Web.
Questa esercitazione illustra come creare un'applicazione Razor Pages ASP.NET Core che classifica il sentiment dai commenti del sito Web in tempo reale.
In questa esercitazione verranno illustrate le procedure per:
In Visual Studio aprire la finestra di dialogo Crea un nuovo progetto .
Nella finestra di dialogo "Crea un nuovo progetto" selezionare il modello di progetto ASP.NET Core app Web.
Nella casella di testo Nome digitare "SentimentRazor" e selezionare il pulsante Avanti .
Nella finestra di dialogo Informazioni aggiuntive lasciare invariate tutte le impostazioni predefinite e selezionare il pulsante Crea .
Preparare e identificare i dati
Scaricare il set di dati di Wikipedia detox. Quando si apre la pagina Web, fare clic con il pulsante destro del mouse sulla pagina, scegliere Salva con nome e salvare il file in qualsiasi punto del computer.
Ogni riga nel set di dati wikipedia-detox-250-line-data.tsv rappresenta una recensione diversa lasciata da un utente su Wikipedia. La prima colonna rappresenta il sentiment del testo (0 è non tossico, 1 è tossico) e la seconda colonna rappresenta il commento lasciato dall'utente. Le colonne sono separate dalle schede. I dati sono simili ai seguenti:
Valutazione
SentimentText
1
==RUDE== Dude, sei scortese caricamento che carl picture back, o altro.
1
== OK! == IM ANDANDO A VANDALIZZARE WILD ONES WIKI THEN!!!
0
Spero che questo aiuti.
Creare un file di configurazione di Model Builder
Quando si aggiunge per la prima volta un modello di Machine Learning alla soluzione, verrà richiesto di creare un mbconfig file. Il mbconfig file tiene traccia di tutto ciò che si esegue in Generatore modelli per consentire di riaprire la sessione.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto SentimentRazor e scegliere Aggiungi>modello di Machine Learning....
Nella finestra di dialogo assegnare al progetto Model Builder il nome SentimentAnalysis.mbconfig e selezionare Aggiungi.
Scegliere uno scenario
Per eseguire il training del modello, è necessario scegliere uno scenario di Machine Learning disponibile nell'elenco del generatore di modelli.
Per questo esempio, l'attività è la classificazione del testo. Nel passaggio Scenario dell'estensione Generatore modelli selezionare lo scenario di classificazione del testo .
Selezionare un ambiente
Generatore modelli può eseguire il training in ambienti diversi a seconda dello scenario selezionato.
Selezionare Locale (GPU) come ambiente e fare clic sul pulsante Passaggio successivo .
Nota
Questo scenario usa tecniche di Deep Learning che funzionano meglio negli ambienti GPU. Se non si ha una GPU, scegliere l'ambiente locale (CPU), ma si noti che il tempo previsto per il training sarà notevolmente più lungo. Per altre informazioni sull'uso di GPU con Generatore modelli, vedere la guida al supporto della GPU in Generatore modelli.
Caricare i dati
Model Builder accetta dati da due origini, un database SQL Server o un file locale in o tsv in csv formato.
Nel passaggio dati dello strumento Generatore modelli selezionare File dalle opzioni dell'origine dati.
Selezionare il pulsante accanto alla casella di testo Seleziona un file e usare Esplora file per esplorare e selezionare il file wikipedia-detox-250-line-data.tsv.
Scegliere Sentiment dall'elenco a discesa Colonna per stimare (Etichetta).
Scegliere SentimentText dall'elenco a discesa Colonna di testo .
Selezionare il pulsante Passaggio successivo per passare al passaggio successivo in Generatore modelli.
Eseguire il training del modello
L'attività di Machine Learning usata per eseguire il training del modello di analisi del sentiment in questa esercitazione è la classificazione del testo. Durante il processo di training del modello, Model Builder esegue il training di un modello di classificazione del testo per il set di dati usando l'architettura di rete neurale NAS-BERT .
Selezionare Start Training (Avvia training).
Al termine del training, i risultati del processo di training vengono visualizzati nella sezione Risultati training della schermata Training .
Oltre a fornire risultati di training, vengono creati tre file code-behind nel file SentimentAnalysis.mbconfig .
SentimentAnalysis.consumption.cs : questo file contiene gli ModelInput schemi e ModelOutput e la Predict funzione generata per l'utilizzo del modello.
SentimentAnalysis.training.cs : questo file contiene la pipeline di training (trasformazioni dei dati, trainer, iperparametri di training) scelta da Generatore modelli per eseguire il training del modello. È possibile usare questa pipeline per ripetere il training del modello.
*SentimentAnalysis.zip : si tratta di un file ZIP serializzato che rappresenta il modello di ML.NET sottoposto a training.
Selezionare il pulsante Passaggio successivo per passare al passaggio successivo.
Valutare il modello
Il risultato del passaggio di training sarà un modello con prestazioni ottimali. Nel passaggio di valutazione dello strumento Generatore modelli la sezione di output conterrà il formatore usato dal modello con prestazioni migliori, nonché le metriche di valutazione.
Se non si è soddisfatti delle metriche di valutazione, alcuni modi semplici per provare a migliorare le prestazioni del modello sono l'uso di più dati.
In caso contrario, selezionare il pulsante Passaggio successivo per passare al passaggio Utilizzo in Generatore modelli.
Aggiungere modelli di progetto a consumo (facoltativo)
Nel passaggio Utilizzo Generatore modelli fornisce modelli di progetto che è possibile usare per utilizzare il modello. Questo passaggio è facoltativo ed è possibile scegliere il metodo più adatto alle proprie esigenze per l'uso del modello.
Applicazione console
API Web
Aggiungere il codice per eseguire stime
Configurare il pool PredictionEngine
Per eseguire una singola stima, è necessario creare un oggetto PredictionEngine<TSrc,TDst>. PredictionEngine<TSrc,TDst> non è thread-safe. Inoltre, è necessario crearne un'istanza ovunque sia necessaria all'interno dell'applicazione. Man mano che l'applicazione cresce, la gestione di questo processo può rivelarsi difficile. Per migliorare le prestazioni e la sicurezza dei thread, usare una combinazione di inserimento delle dipendenze e del servizio PredictionEnginePool, che crea un ObjectPool<T> di oggetti PredictionEngine<TSrc,TDst> da usare in tutta l'applicazione.
Installare il pacchetto NuGet Microsoft.Extensions.ML :
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet.
Scegliere "nuget.org" come origine pacchetto.
Selezionare la scheda Sfoglia e cercare Microsoft.Extensions.ML.
Selezionare il pacchetto nell'elenco e selezionare il pulsante Installa .
Selezionare il pulsante OK nella finestra di dialogo Anteprima modifiche
Selezionare il pulsante Accetto nella finestra di dialogo Accettazione licenza se si accettano le condizioni di licenza per i pacchetti elencati.
Aprire il file Program.cs nel progetto SentimentRazor .
Aggiungere le istruzioni using seguenti per fare riferimento al pacchetto NuGet Microsoft.Extensions.ML e al progetto SentimentRazorML.Model :
using Microsoft.Extensions.ML;
using static SentimentRazor.SentimentAnalysis;
Le stime verranno effettuate all'interno della pagina principale dell'applicazione. Pertanto, un metodo che accetta l'input dell'utente e usa l'oggetto PredictionEnginePool<TData,TPrediction> per restituire una stima deve essere aggiunto.
Aprire il file Index.cshtml.cs che si trova nella directory Pages e aggiungere le istruzioni using seguenti:
using Microsoft.Extensions.ML;
using static SentimentRazor.SentimentAnalysis;
Per usare il PredictionEnginePool<TData,TPrediction> file Program.cs configurato, è necessario inserirlo nel costruttore del modello in cui si vuole usarlo.
Aggiungere una variabile per fare riferimento all'interno PredictionEnginePool<TData,TPrediction> della classe all'interno del IndexModel file Pages/Index.cshtml.cs .
Successivamente, aggiungere codice per inviare input dalla pagina Web al OnGetAnalyzeSentiment gestore.
Nel file site.js che si trova nella directory wwwroot\js creare una funzione chiamata getSentiment per eseguire una richiesta HTTP GET con l'input dell'utente al OnGetAnalyzeSentiment gestore.
Di seguito, aggiungere un'altra funzione chiamata updateMarker per aggiornare dinamicamente la posizione del marcatore nella pagina Web in base alla stima del sentiment.
function updateMarker(markerPosition, sentiment) {
$("#markerPosition").attr("style", `left:${markerPosition}%`);
$("#markerValue").text(sentiment);
}
Creare una funzione del gestore eventi chiamata updateSentiment per ottenere l'input dall'utente, inviarla alla OnGetAnalyzeSentiment funzione usando la funzione e aggiornare il marcatore con la getSentimentupdateMarker funzione.
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");
}
});
}
Registrare infine il gestore eventi e associarlo all'elemento con l'attributo textareaid=Message .
Ora che l'applicazione è configurata, eseguire l'applicazione, che deve essere avviata nel browser.
Quando l'applicazione viene avviata, immettere Questo modello non dispone di dati sufficienti! nell'area di testo. Il sentiment stimato visualizzato deve essere Tossico.
L'origine di questo contenuto è disponibile in GitHub, in cui è anche possibile creare ed esaminare i problemi e le richieste pull. Per ulteriori informazioni, vedere la guida per i collaboratori.
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback:
In questo modulo si apprenderà come usare ML.NET Model Builder per eseguire il training e di un modello di Machine Learning e utilizzarlo per la manutenzione predittiva.
Gestire l'inserimento e la preparazione dei dati, il training e la distribuzione di modelli e il monitoraggio delle soluzioni di apprendimento automatico con Python, Azure Machine Learning e MLflow.