Creare un modello di classificazione del testo personalizzato con TensorFlow Lite Model Maker

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:

Obiettivi didattici

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

  1. Per ottenere il codice di questo codice, clona questo repository e carica l'app dalla cartella tfserving-flutter/codelab2/finished.
  2. 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.

8f1e1974522f274d.png

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.

2bd68691a26aa3da.png

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:

62025273971c9a7f.png

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:

96a1547ddb6edf5b.png

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

  1. 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 segnaposto PATH/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
  1. Apri il file lib/main.dart con il tuo editor di codice preferito e poi trova la parte che definisce le variabili inputTensorName e outTensorName:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. Riassegna la variabile inputTensorName a un valore "input_1'" e la variabile outputTensorName a un valore 'dense_1':
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. Copia il file vocab.txt che hai scaricato nella cartella lib/assets/ per sostituire quello esistente.
  2. Rimuovi manualmente l'app Flutter di classificazione del testo dall'emulatore Android.
  3. Esegui il comando 'flutter run' nel tuo terminale per avviare l'app.
  4. 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.

Scopri di più