1. Prima di iniziare
In questo codelab imparerai ad aggiornare il modello di classificazione del testo, creato a partire dal set di dati originale dei commenti spam sui blog, ma migliorato con commenti personalizzati, in modo da avere un modello che funzioni con i tuoi dati.
Prerequisiti
Questo codelab fa parte del percorso Inizia a utilizzare la classificazione del testo mobile. I codelab di questo percorso sono sequenziali. L'app e il modello su cui lavorerai devono essere stati creati in precedenza, mentre seguivi il primo percorso. Se non hai ancora completato le attività precedenti, interrompiti e fallo ora:
- Crea un'app di messaggistica di base
- Crea un modello di machine learning per i commenti spam
- Aggiorna l'app per utilizzare un modello di machine learning per il filtro antispam
Obiettivi didattici
- Come aggiornare il modello di classificazione del testo creato nel percorso Inizia a utilizzare la classificazione del testo mobile
- Come personalizzare il modello in modo che blocchi lo spam più diffuso nella tua app
Che cosa ti serve
- L'app di messaggistica e il modello di filtro antispam che hai osservato e creato nelle attività precedenti.
2. Migliorare la classificazione del testo
Puoi ottenere il codice per questa operazione clonando questo repository e caricando l'app da TextClassificationStep2. Puoi trovare questa impostazione nel percorso TextClassificationOnMobile->Android.
Il codice finito è disponibile anche per te come TextClassificationStep3.
Se apri l'app di messaggistica che hai creato e provi questo messaggio, otterrai un punteggio di spam molto basso:

Errori ortografici come questo sono un modo comune per evitare i filtri antispam. Anche se il messaggio è innocuo, gli spammer spesso aggiungono un link nell'ID utente (anziché nel messaggio stesso, dove la presenza di un link potrebbe attivare i filtri).
In questo lab, vedrai come aggiornare il modello con nuovi dati. Al termine, l'esecuzione con la stessa frase darà il risultato riportato di seguito, in cui questo messaggio viene identificato come spam.

3. Modificare il file CSV
Per addestrare il modello originale, è stato creato un set di dati in formato 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 esaminarlo.
La struttura del file CSV prevede che la prima riga descriva le colonne, che qui sono etichettate commenttext e spam.
Ogni riga successiva segue questo formato:

L'etichetta a destra è vera per lo spam e falsa per le email non di spam. In questo caso, la riga 3 viene considerata spam.
Per aggiungere i tuoi commenti, ad esempio se molte persone inviano spam al tuo sito con messaggi sul trading online, ti basta aggiungere esempi di commenti di spam in fondo al sito. 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
Al termine, salva il file con un nuovo nome (ad esempio lmblog_comments.csv) e potrai utilizzarlo per addestrare un nuovo modello.
Per il resto di questo codelab utilizzerai l'esempio fornito, modificato e ospitato su Google Cloud Storage con gli aggiornamenti del trading online. Se vuoi utilizzare il tuo set di dati, puoi modificare l'URL nel codice.
4. Riapplica il training al modello con i nuovi dati
Per eseguire di nuovo l'addestramento del modello, puoi semplicemente riutilizzare il codice precedente (SpamCommentsModelMaker.ipynb), ma indirizzarlo al nuovo set di dati CSV, denominato lmblog_comments_extras.csv. Se vuoi il notebook completo con i contenuti aggiornati, puoi trovarlo come SpamCommentsUpdateModelMaker.ipynb.
Se hai accesso a Google Colab, puoi avviarlo direttamente da qui. In caso contrario, recupera il codice dal repository ed eseguilo nell'ambiente del blocco note che preferisci.
Ecco il codice aggiornato:
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)
Durante l'addestramento, dovresti notare che il modello viene comunque addestrato a un elevato livello di accuratezza:

Esamina il notebook per scaricare i file model, vocab e labels. Nel passaggio successivo li integrerai in Android.
5. Aggiornare l'app Android
- Apri l'app in Android Studio e assicurati che Android sia selezionato nella parte superiore di Esplora progetti.
- Trova il file
assetscontenente le etichette, il modello e il vocabolario della vecchia versione del file del modello.

- Fai clic con il tasto destro del mouse sulla cartella delle risorse.
- Nel menu, seleziona l'opzione per aprire la cartella con il gestore di file del sistema operativo. (Mostra nel Finder su Mac, come mostrato. Mostra in Esplora risorse su Windows e Apri in File o simile su Linux.

- In questo modo, si apre la directory contenente il modello, il vocabolario e le etichette nel gestore di file del sistema operativo. Copia quelli nuovi che hai creato nel passaggio precedente.
Non devi apportare modifiche al codice della tua app. Eseguila e testala, e vedrai risultati come quelli sopra, in cui il modello è stato migliorato per rilevare lo scenario di testo "trading online".
Una versione completata del codice è disponibile nel repository come TextClassificationStep3.
6. Aggiornare l'app per iOS
Puoi ottenere il codice per questa operazione clonando questo repository e caricando l'app da TextClassificationStep2. Puoi trovare questa impostazione nel percorso TextClassificationOnMobile->Android.
Il codice finito è disponibile anche per te come TextClassificationStep3.
Se hai completato il codelab precedente, avrai una versione iOS di TextClassificationStep2 che funziona con il modello di base. Se vuoi iniziare dalla nostra versione esistente, prendila dal repository. Funzionerà con il primo modello addestrato sui dati dei commenti spam e potresti visualizzare risultati come questo:

Aggiornare l'app per utilizzare il nuovo modello è molto semplice. Il modo più semplice è andare in Esplora file, scaricare le nuove versioni di model.tflite, vocab e labels.txt e copiarle nella directory del progetto.
Una volta fatto, la tua app funzionerà con il nuovo modello e potrai provarlo. Ecco un esempio della stessa frase, ma utilizzando il nuovo modello:

7. Complimenti
È tutto. Se hai riaddestrato il modello con nuovi dati e lo hai aggiunto alle tue app per Android e iOS, hai potuto aggiornare la loro funzionalità senza scrivere nuovo codice.
Passaggi successivi
Questo modello è solo un modello giocattolo, addestrato su soli 1000 elementi di dati.
Man mano che esplori l'elaborazione del linguaggio naturale, potresti voler lavorare con set di dati più grandi. Puoi anche configurare una pipeline di addestramento continuo, in modo che quando arrivano nuovi dati e vengono contrassegnati come spam, un modello possa essere addestrato automaticamente su un backend e poi implementato utilizzando Firebase Model Hosting.
I tuoi utenti ricevono senza problemi un modello aggiornato senza che tu debba copiarlo e incollarlo come asset, ricompilarlo e ridistribuirlo. Ad esempio, potresti anche utilizzare Firebase Remote Config per gestire il valore di soglia per l'invio di spam, anziché 0, 8 come ora.
Le possibilità sono infinite e le esploreremo nei codelab futuri di questo corso.