1. Panoramica
Ti diamo il benvenuto nel codelab Classificazione del testo con TensorFlow Lite e Firebase. In questo codelab imparerai a utilizzare TensorFlow Lite e Firebase per addestrare ed eseguire il deployment di un modello di classificazione del testo nella tua app. Questo codelab si basa su questo esempio di TensorFlow Lite.
La classificazione del testo è il processo di assegnazione di tag o categorie al testo in base ai suoi contenuti. È una delle attività fondamentali dell'elaborazione del linguaggio naturale (NLP) con ampie applicazioni, come l'analisi del sentiment, l'etichettatura degli argomenti, il rilevamento dello spam e il rilevamento dell'intent.
L'analisi del sentiment è l'interpretazione e la classificazione delle emozioni (positive, negative e neutre) all'interno dei dati di testo utilizzando tecniche di analisi del testo. L'analisi del sentiment consente alle attività di identificare il sentiment dei clienti nei confronti di prodotti, brand o servizi nelle conversazioni e nei feedback online.
Questo tutorial mostra come creare un modello di machine learning per l'analisi del sentiment, in particolare per classificare il testo come positivo o negativo. Questo è un esempio di classificazione binaria o a due classi, un tipo di problema di machine learning importante e ampiamente applicabile.
Obiettivi didattici
- Addestra un modello di analisi del sentiment TF Lite con TF Lite Model Maker
- Esegui il deployment dei modelli TF Lite su Firebase ML e accedi da un'app
- Integra i modelli di analisi del sentiment TF Lite nella tua app utilizzando la libreria delle attività TF Lite
Che cosa ti serve
- Ultima versione di Android Studio.
- Codice di esempio.
- Un dispositivo di test con Android 5.0+ e Google Play Services 9.8 o versioni successive oppure un emulatore con Google Play Services 9.8 o versioni successive
- Se utilizzi un dispositivo, un cavo di connessione.
Come utilizzerai questo tutorial?
Come valuteresti la tua esperienza di creazione di app per Android?
2. recupera il codice campione
Clona il repository GitHub dalla riga di comando.
$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git
Se non hai installato git, puoi anche scaricare il progetto di esempio dalla relativa pagina GitHub o facendo clic su questo link.
3. Importa l'app iniziale
In Android Studio, seleziona la directory codelab-textclassification-android-master
( ) dal download del codice di esempio (File > Apri > .../codelab-textclassification-android-master/start).
Ora dovresti avere il progetto iniziale aperto in Android Studio.
4. Esegui l'app di base
Ora che hai importato il progetto in Android Studio, puoi eseguire l'app per la prima volta. Collega il dispositivo Android e fai clic su Esegui ( ) nella barra degli strumenti di Android Studio.
L'app dovrebbe avviarsi sul dispositivo. Contiene solo una semplice UI che semplifica l'integrazione e il test dei modelli di classificazione del testo nei passaggi successivi. A questo punto, se provi a prevedere i sentiment, l'app restituirà solo alcuni risultati fittizi.
5. Crea un progetto nella console Firebase
Aggiungi Firebase al progetto
- Vai alla Console Firebase.
- Seleziona Aggiungi progetto.
- Seleziona o inserisci un nome per il progetto.
- Segui i passaggi di configurazione rimanenti nella console Firebase, quindi fai clic su Crea progetto (o Aggiungi Firebase, se utilizzi un progetto Google esistente).
6. Aggiungi Firebase all'app
- Nella schermata di riepilogo del nuovo progetto, fai clic sull'icona Android per avviare il flusso di lavoro di configurazione.
- Inserisci il nome del pacchetto del codelab:
org.tensorflow.lite.codelabs.textclassification
Aggiungere il file google-services.json all'app
Dopo aver aggiunto il nome del pacchetto e selezionato Registra**, fai clic su Scarica google-services.json** per ottenere il file di configurazione Firebase Android, quindi copia il file google-services.json
nella directory *app
* del progetto.
Aggiungere il plug-in google-services all'app
Segui le istruzioni nella console Firebase per aggiornare i file build.gradle.kts
e aggiungere Firebase alla tua app.
Il plug-in google-services utilizza il file google-services.json per configurare l'applicazione in modo che utilizzi Firebase.
Sincronizzare il progetto con i file Gradle
Per assicurarti che tutte le dipendenze siano disponibili per la tua app, a questo punto devi sincronizzare il progetto con i file Gradle. Seleziona File > Sync Project with Gradle Files dalla barra degli strumenti di Android Studio.
7. Esegui l'app con Firebase
Ora che hai configurato il plug-in google-services
con il file JSON, puoi eseguire l'app con Firebase. Collega il dispositivo Android e fai clic su Esegui ( ) nella barra degli strumenti di Android Studio.
L'app dovrebbe avviarsi sul dispositivo. A questo punto, la build dell'app dovrebbe ancora essere eseguita correttamente.
8. Addestrare un modello di analisi del sentiment
Utilizzeremo TensorFlow Lite Model Maker per addestrare un modello di classificazione del testo per prevedere il sentiment di un determinato testo.
Questo passaggio viene presentato come un notebook Python che puoi aprire in Google Colab. Puoi scegliere Runtime > Esegui tutto per eseguire l'intero notebook contemporaneamente.
Apri in Colab
Al termine di questo passaggio, avrai un modello di analisi del sentiment TensorFlow Lite pronto per il deployment in un'app mobile.
9. Esegui il deployment di un modello in Firebase ML
Il deployment di un modello in Firebase ML è utile per due motivi principali:
- Possiamo mantenere ridotte le dimensioni di installazione dell'app e scaricare il modello solo se necessario
- Il modello può essere aggiornato regolarmente e con un ciclo di rilascio diverso rispetto all'intera app
Il modello può essere implementato tramite la console o in modo programmatico utilizzando l'SDK Admin Firebase. In questo passaggio, eseguiremo il deployment tramite la console.
Innanzitutto, apri la console Firebase e fai clic su Machine Learning nel pannello di navigazione a sinistra. Fai clic su "Inizia" se è la prima volta che apri questa pagina. Poi vai a "Personalizzato" e fai clic sul pulsante "Aggiungi modello".
Quando ti viene richiesto, assegna al modello il nome sentiment_analysis
e carica il file che hai scaricato da Colab nel passaggio precedente.
10. Scaricare il modello da Firebase ML
Scegliere quando scaricare il modello remoto da Firebase nella tua app può essere complicato, poiché i modelli TFLite possono diventare relativamente grandi. Idealmente, vogliamo evitare di caricare il modello immediatamente all'avvio dell'app, perché se il nostro modello viene utilizzato per una sola funzionalità e l'utente non la usa mai, avremo scaricato una quantità significativa di dati senza motivo. Possiamo anche impostare opzioni di download come il recupero dei modelli solo quando è disponibile una connessione Wi-Fi. Se vuoi assicurarti che il modello sia disponibile anche senza una connessione di rete, è importante raggrupparlo anche senza l'app come backup.
Per semplicità, rimuoveremo il modello in bundle predefinito e scaricheremo sempre un modello da Firebase all'avvio dell'app per la prima volta. In questo modo, quando esegui l'analisi del sentiment, puoi essere certo che l'inferenza venga eseguita con il modello fornito da Firebase.
Nel file app/build.gradle.kts
, aggiungi la dipendenza Firebase Machine Learning.
app/build.gradle.kts
Trova questo commento:
// TODO 1: Add Firebase ML dependency
Poi aggiungi:
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Quando Android Studio ti chiede di sincronizzare il progetto, scegli Sincronizza ora.
A questo punto, aggiungiamo del codice per scaricare il modello da Firebase.
MainActivity.java
Trova questo commento:
// TODO 2: Implement a method to download TFLite model from Firebase
Poi aggiungi:
/** Download model from Firebase ML. */
private synchronized void downloadModel(String modelName) {
CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
.requireWifi()
.build();
FirebaseModelDownloader.getInstance()
.getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
.addOnSuccessListener(model -> {
try {
// TODO 6: Initialize a TextClassifier with the downloaded model
predictButton.setEnabled(true);
} catch (IOException e) {
Log.e(TAG, "Failed to initialize the model. ", e);
Toast.makeText(
MainActivity.this,
"Model initialization failed.",
Toast.LENGTH_LONG)
.show();
predictButton.setEnabled(false);
}
})
.addOnFailureListener(e -> {
Log.e(TAG, "Failed to download the model. ", e);
Toast.makeText(
MainActivity.this,
"Model download failed, please check your connection.",
Toast.LENGTH_LONG)
.show();
}
);
}
Quindi, chiama il metodo downloadModel
nel metodo onCreate
dell'attività.
MainActivity.java
Trova questo commento:
// TODO 3: Call the method to download TFLite model
Poi aggiungi:
downloadModel("sentiment_analysis");
11. Integrare il modello nell'app
La libreria TensorFlow Lite Task ti aiuta a integrare i modelli TensorFlow Lite nella tua app con poche righe di codice. Inizializzeremo un'istanza NLClassifier
utilizzando il modello TensorFlow Lite scaricato da Firebase. Poi lo utilizzeremo per classificare l'input di testo degli utenti dell'app e mostrare il risultato nell'interfaccia utente.
Aggiungi la dipendenza
Vai al file Gradle dell'app e aggiungi la libreria delle attività TensorFlow Lite (testo) nelle dipendenze dell'app.
app/build.gradle
Trova questo commento:
// TODO 4: Add TFLite Task API (Text) dependency
Poi aggiungi:
implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")
Quando Android Studio ti chiede di sincronizzare il progetto, scegli Sincronizza ora.
Inizializzare un classificatore di testo
Caricheremo quindi il modello di analisi del sentiment scaricato da Firebase utilizzando NLClassifier
della libreria delle attività.
MainActivity.java
Dichiariamo una variabile di istanza NLClassifier. Trova questo commento:
// TODO 5: Define a NLClassifier variable
Poi aggiungi:
private NLClassifier textClassifier;
Inizializza la variabile textClassifier
con il modello di analisi del sentiment scaricato da Firebase. Trova questo commento:
// TODO 6: Initialize a TextClassifier with the downloaded model
Poi aggiungi:
textClassifier = NLClassifier.createFromFile(model.getFile());
Classificare il testo
Una volta configurata l'istanza textClassifier
, puoi eseguire l'analisi del sentiment con una singola chiamata al metodo.
MainActivity.java
Trova questo commento:
// TODO 7: Run sentiment analysis on the input text
Poi aggiungi:
List<Category> results = textClassifier.classify(text);
Implementare la post-elaborazione
Infine, convertiremo l'output del modello in un testo descrittivo da mostrare sullo schermo.
MainActivity.java
Trova questo commento:
// TODO 8: Convert the result to a human-readable text
Rimuovi il codice che genera il testo del risultato fittizio:
String textToShow = "Dummy classification result.\n";
Poi aggiungi:
String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
Category result = results.get(i);
textToShow += String.format(" %s: %s\n", result.getLabel(),
result.getScore());
}
textToShow += "---------\n";
12. Esegui l'app finale
Hai integrato il modello di analisi del sentiment nell'app, quindi testiamolo. Collega il dispositivo Android e fai clic su Esegui ( ) nella barra degli strumenti di Android Studio.
L'app deve essere in grado di prevedere correttamente il sentimento della recensione del film che inserisci.
13. Migliora l'app con altre funzionalità di Firebase
Oltre a ospitare i tuoi modelli TFLite, Firebase offre diverse altre funzionalità per potenziare i tuoi casi d'uso del machine learning:
- Firebase Performance Monitoring per misurare la velocità di inferenza del modello in esecuzione sul dispositivo degli utenti.
- Firebase Analytics per misurare il rendimento del modello in produzione misurando la reazione degli utenti.
- Firebase A/B Testing per testare più versioni del modello
- Ricordi che in precedenza abbiamo addestrato due versioni del nostro modello TFLite? Il test A/B è un buon modo per scoprire quale versione ha un rendimento migliore in produzione.
Per scoprire di più su come sfruttare queste funzionalità nella tua app, consulta i codelab di seguito:
14. Complimenti!
In questo codelab hai imparato ad addestrare un modello TFLite di analisi del sentiment e a eseguirne il deployment nella tua app mobile utilizzando Firebase. Per saperne di più su TFLite e Firebase, dai un'occhiata ad altri esempi di TFLite e alle guide Per iniziare di Firebase.
Argomenti trattati
- TensorFlow Lite
- Firebase ML
Passaggi successivi
- Misura la velocità di inferenza del modello con Firebase Performance Monitoring.
- Esegui il deployment del modello da Colab direttamente su Firebase tramite l'API Firebase ML Model Management.
- Aggiungi un meccanismo per consentire agli utenti di fornire feedback sul risultato della previsione e utilizza Firebase Analytics per monitorare il feedback degli utenti.
- Esegui test A/B del modello Average Word Vector e del modello MobileBERT con Firebase A/B Testing.
Scopri di più
- Documentazione di Firebase Machine Learning
- Documentazione di TensorFlow Lite
- Misurare il rendimento dell'app con Firebase
- Modelli di test A/B con Firebase