Crea un modello di classificazione del testo personalizzato e aggiorna le tue app con questo modello

1. Prima di iniziare

In questo codelab, imparerai ad aggiornare il modello di classificazione del testo, creato a partire dal set di dati originale sui commenti spam del blog, ma migliorato con i tuoi commenti, in modo da avere un modello compatibile con i tuoi dati.

Prerequisiti

Questo codelab fa parte del percorso Inizia a utilizzare la classificazione del testo per dispositivi mobili. I codelab in questo percorso sono sequenziali. L'app e il modello su cui lavorerai dovrebbero essere stati creati in precedenza, mentre seguivi il primo percorso. Se non hai ancora completato le attività precedenti, interrompi l'operazione e fallo ora:

  • Crea un'app con stile di messaggistica base
  • Creare un modello di machine learning per i commenti spam
  • Aggiorna l'app per utilizzare un modello di machine learning per filtrare lo spam

Obiettivi didattici

  • Come aggiornare il modello di classificazione del testo creato nel percorso Inizia a utilizzare la classificazione del testo per dispositivi mobili
  • 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. Migliora la classificazione del testo

Puoi ottenere il codice clonando questo repository e caricando l'app da TextClassificationStep2. Puoi trovarlo nel percorso TextClassificationOnMobile->Android.

Il codice completo è disponibile anche per te come TextClassificationStep3.

Se apri l'app di messaggistica che hai creato e hai provato questo messaggio, il punteggio di spam sarà molto basso:

f111e21903d6fd1f.png

Errori di ortografia come questo sono un modo comune per evitare i filtri antispam. E sebbene il messaggio sia innocuo, gli spammer spesso aggiungono un link nell'ID utente (anziché il messaggio stesso, in cui un link potrebbe attivare i filtri).

In questo lab vedrai come aggiornare il modello con nuovi dati. Al termine, eseguendo la stessa frase, il messaggio verrà identificato come spam qui sotto.

c96613a0a4d1fef0.png

3. Modificare il file CSV

Per addestrare il modello originale, è stato creato un set di dati in formato CSV (lmblog_comments.csv) contenente quasi un migliaio di commenti etichettati come spam o non spam. (apri il file CSV in qualsiasi editor di testo se vuoi esaminarlo).

Il file CSV è composto da una prima riga che descrive le colonne, qui sono etichettate con commenttext e spam.

Ogni riga successiva segue questo formato:

64c0128548e1d082.png

L'etichetta a destra è true per lo spam e falsa per non per lo spam. In questo caso, la riga 3 è considerata spam.

Per aggiungere i tuoi commenti, ad esempio, se molte persone inviano spam al tuo sito con messaggi sul trading online, non devi fare altro che aggiungere esempi di commenti 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.

Nella parte restante di questo codelab, utilizzerai l'esempio fornito, modificato e ospitato su Google Cloud Storage con gli aggiornamenti di trading online. Puoi modificare l'URL nel codice se vuoi utilizzare il tuo set di dati.

4. Reimposta il modello con i nuovi dati

Per riaddestrare il modello, puoi semplicemente riutilizzare il codice precedente (SpamCommentsModelMaker.ipynb), ma puntarlo 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 Google Colab, puoi avviarlo direttamente da qui, altrimenti 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 vedere che il modello continuerà a essere addestrato con un elevato livello di accuratezza:

8886033d1f8161c.png

Scorri il blocco note per scaricare i file model, vocab ed labels. Nel passaggio successivo le integrerai in Android.

5. Aggiorna l'app per Android

  1. Apri l'app in Android Studio e assicurati che l'opzione Android sia selezionata nella parte superiore di Esplora progetti.
  2. Trova il file assets contenente le etichette, il modello e il vocabolario della versione precedente del file del modello.

91116524e9016ed4.png

  1. Fai clic con il pulsante destro del mouse sulla cartella degli asset.
  2. Nel menu, seleziona l'opzione per aprire la cartella con il gestore di file del tuo sistema operativo. (Mostra nel Finder su Mac, come mostrato. sarà Mostra in Esplora su Windows, Apri in File o simile su Linux.

25f63f9629657e85.png

  1. Viene aperta la directory contenente il modello, il vocabolario e le etichette nel gestore di file del tuo sistema operativo. Copia le nuove create nel passaggio precedente e copiale.

Non è necessario apportare modifiche al codice nell'app. Eseguilo e fai un test: vedrai risultati come quelli indicati sopra, in cui il modello è migliorato per rilevare il "compravendita online" uno scenario di testo.

Una versione completa del codice è disponibile nel repository come TextClassificationStep3.

6. Aggiorna l'app per iOS

Puoi ottenere il codice clonando questo repository e caricando l'app da TextClassificationStep2. Puoi trovarlo nel percorso TextClassificationOnMobile->Android.

Il codice completo è disponibile anche per te come TextClassificationStep3.

Se hai utilizzato il codelab precedente, avrai una versione iOS di TextClassificationStep2 che funziona con il modello di base. Se vuoi iniziare dalla nostra versione esistente, recuperala dal repository. Funziona con il primo modello addestrato sui dati relativi ai commenti spam. Potresti vedere risultati come questi:

553b845565b5b822.png

L'aggiornamento dell'app per l'utilizzo del nuovo modello è davvero semplice. Il modo più semplice è accedere a Esplora file, recuperare le nuove versioni di model.tflite, vocab e labels.txt e copiarle nella directory del progetto.

Al termine dell'operazione, la tua app funzionerà con il nuovo modello e potrai provarlo. Ecco un esempio della stessa frase, ma con il nuovo modello:

9031ec260b1857a3.png

7. Complimenti

È tutto. Riaddestrando il modello con nuovi dati e aggiungendoli alle app per Android e iOS hai potuto aggiornarne la funzionalità senza scrivere altro codice.

Passaggi successivi

Questo modello è solo un giocattolo, addestrato solo su 1000 elementi di dati.

Mentre 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, questi possano riaddestrare automaticamente un modello su un backend ed eseguirne il deployment utilizzando Firebase Model Hosting.

I tuoi utenti ricevono senza interruzioni 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 della soglia per l'invio di spam, invece del valore 0, 8 attuale.

Ci sono così tante possibilità che le esploreremo nei codelab futuri di questo corso.