1. Prima di iniziare
In questo codelab, imparerai ad aggiornare il modello di classificazione del testo creato dal set di dati originale commenti blog-spam, ma arricchito con i tuoi commenti, in modo da avere un modello compatibile con i tuoi dati.
Prerequisiti
Questo codelab fa parte del Iniziare a utilizzare la classificazione del testo nel percorso delle app Flutter. I codelab in questo percorso sono sequenziali. L'app e il modello su cui lavori dovrebbero essere stati creati in precedenza, mentre stavi seguendo i codelab. Se non hai ancora completato le attività precedenti, interrompi e fallo ora:
- Addestra un modello di rilevamento di commenti spam con il codelab su TensorFlow Lite Model Maker
- Creare un'app Flutter per rilevare il codelab sullo spam nei commenti
Obiettivi didattici
- Come aggiornare il modello di classificazione del testo che hai creato nel addestramento di un modello di rilevamento di spam nei commenti con il codelab su TensorFlow Lite Model Maker.
- Come personalizzare il modello in modo che blocchi lo spam più diffuso nella tua app.
Che cosa ti serve
- L'app Flutter e il modello del filtro antispam osservati e creati nelle attività precedenti.
2. Migliorare la classificazione del testo
- Per ottenere il codice di questo codice, clona questo repository e carica l'app dalla cartella
tfserving-flutter/codelab2/finished
. - Dopo aver avviato l'immagine Docker di TensorFlow Serving, nell'app che hai creato, inserisci
buy my book to learn online trading
, quindi fai clic su gRPC > Classify.
L'app genera un punteggio spam basso perché non ci sono molte occorrenze di commercio online nel set di dati originale e il modello non ha appreso che è spam. In questo codelab, aggiorni il modello con nuovi dati in modo che identifichi la stessa frase di spam.
3. Modificare il file CSV
Per addestrare il modello originale, è stato creato un set di dati come file CSV (lmblog_comments.csv
) contenente quasi mille commenti etichettati come spam o non spam. Apri il file CSV in qualsiasi editor di testo se vuoi controllarlo.
La configurazione del file CSV consiste nel fatto che la prima riga descriva le colonne etichettate commenttext
e spam
. Ogni riga successiva segue questo formato:
All'etichetta a destra è assegnato un valore true
per lo spam e un valore false
per lo spam. Ad esempio, la terza riga è considerata spam.
Se le persone inviano spam al tuo sito web con messaggi sul trading online, puoi aggiungere esempi di commenti spam nella parte inferiore del tuo sito web. Ad esempio:
online trading can be highly highly effective,true online trading can be highly effective,true online trading now,true online trading here,true online trading for the win,true
- Salva il file con un nuovo nome, ad esempio
lmblog_comments.csv
, in modo da poterlo utilizzare per addestrare un nuovo modello.
Per il resto di questo codelab, utilizzerai l'esempio fornito, modificato e ospitato su Cloud Storage con gli aggiornamenti di trading online. Se vuoi utilizzare un set di dati personalizzato, puoi modificare l'URL nel codice.
4. Reimpostare il modello con i nuovi dati
Per reimpostare il modello, puoi semplicemente riutilizzare il codice da (SpamCommentsModelMaker.ipynb
), ma puntalo al nuovo set di dati CSV, chiamato lmblog_comments_extras.csv
. Se vuoi il blocco note completo con i contenuti aggiornati, puoi trovarlo come SpamCommentsUpdateModelMaker.ipynb.
Se hai accesso a Colaboratory, puoi avviarlo direttamente. In caso contrario, recupera il codice dal repository ed eseguilo nell'ambiente di blocco note che preferisci.
Il codice aggiornato è simile al seguente snippet di codice:
training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',
origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
lmblog_comments_extras.csv',
extract=False)
Quando esegui l'addestramento, dovresti vedere che il modello esegue ancora l'addestramento con un elevato livello di precisione:
Comprimi l'intera cartella di /mm_update_spam_savedmodel
e abbassa il file mm_update_spam_savedmodel.zip
generato.
# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/
5. Avvia Docker e aggiorna l'app Flutter
- Decomprimi il file
mm_update_spam_savedmodel.zip
scaricato in una cartella, quindi interrompi l'istanza di container Docker dal codelab precedente e riavviala, ma sostituisci il segnapostoPATH/TO/UPDATE/SAVEDMODEL
con il percorso assoluto della cartella che ospita i file scaricati:
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
- Apri il file
lib/main.dart
con il tuo editor di codice preferito e poi trova la parte che definisce le variabiliinputTensorName
eoutTensorName
:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- Riassegna la variabile
inputTensorName
a un valore "input_1'
" e la variabileoutputTensorName
a un valore'dense_1'
:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- Copia il file
vocab.txt
che hai scaricato nella cartellalib/assets/
per sostituire quello esistente. - Rimuovi manualmente l'app Flutter di classificazione del testo dall'emulatore Android.
- Esegui il comando
'flutter run'
nel tuo terminale per avviare l'app. - Nell'app, inserisci
buy my book to learn online trading
, quindi fai clic su gRPC > Classify.
Ora il modello è migliorato e ha lo scopo di rilevare il mio libro nell'ambito del trading online come spam.
6. Complimenti
Hai riaddestrato il modello con nuovi dati, l'hai integrato con l'app Flutter e hai aggiornato la funzionalità per rilevare nuove frasi di spam.