Aggiungi la classificazione del testo sul dispositivo alla tua app con TensorFlow Lite e Firebase - iOS Codelab

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

1. Panoramica

classificazione_risultato_screen.png

Benvenuti nella classificazione del testo con TensorFlow Lite e il codelab di Firebase. In questo codelab imparerai come utilizzare TensorFlow Lite e Firebase per addestrare e distribuire 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 al suo contenuto. È una delle attività fondamentali nell'elaborazione del linguaggio naturale (NLP) con applicazioni estese come l'analisi dei sentimenti, l'etichettatura degli argomenti, il rilevamento dello spam e il rilevamento delle intenzioni.

L'analisi del sentimento è l'interpretazione e la classificazione delle emozioni (positive, negative e neutre) all'interno dei dati testuali utilizzando tecniche di analisi del testo. L'analisi del sentiment consente alle aziende di identificare il sentimento dei clienti nei confronti di prodotti, marchi 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 classificando il testo come positivo o negativo. Questo è un esempio di classificazione binaria o a due classi, un tipo di problema di apprendimento automatico importante e ampiamente applicabile.

Cosa imparerai

  • Addestra un modello di analisi del sentimento TF Lite con TF Lite Model Maker
  • Distribuisci i modelli TF Lite su Firebase ML e accedi ad essi dalla tua app
  • Tieni traccia del feedback degli utenti per misurare la precisione del modello con Firebase Analytics
  • Profilo delle prestazioni del modello tramite il monitoraggio delle prestazioni di Firebase
  • Seleziona quale dei più modelli distribuiti viene caricato tramite Remote Config
  • Sperimenta diversi modelli tramite Firebase A/B Testing

Di cosa avrai bisogno

  • Xcode 11 (o superiore)
  • CocoaPods 1.9.1 (o superiore)

Come utilizzerai questo tutorial?

Leggilo solo fino in fondo Leggilo e completa gli esercizi

Come valuteresti la tua esperienza con la creazione di app Android?

Novizio Intermedio Esperto

2. Crea un progetto per la console Firebase

Aggiungi Firebase al progetto

  1. Vai alla console Firebase .
  2. Seleziona Crea nuovo progetto e denomina il tuo progetto "Firebase ML iOS Codelab".

3. Ottieni il progetto di esempio

Scarica il codice

Inizia clonando il progetto di esempio ed eseguendo l' pod update nella directory del progetto:

git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git
cd codelab-textclassification-ios
pod install --repo-update

Se non hai git installato, puoi anche scaricare il progetto di esempio dalla sua pagina GitHub o facendo clic su questo link . Una volta scaricato il progetto, eseguilo in Xcode e gioca con la classificazione del testo per avere un'idea di come funziona.

Configura Firebase

Segui la documentazione per creare un nuovo progetto Firebase. Una volta ottenuto il progetto, scarica il file GoogleService-Info.plist del progetto dalla console Firebase e trascinalo nella radice del progetto Xcode.

9efb62a92f27e939.png

Aggiungi Firebase al tuo Podfile ed esegui l'installazione del pod.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

Nel metodo didFinishLaunchingWithOptions di AppDelegate , importa Firebase nella parte superiore del file

import FirebaseCore

E aggiungi una chiamata per configurare Firebase.

FirebaseApp.configure()

Esegui di nuovo il progetto per assicurarti che l'app sia configurata correttamente e non si arresti in modo anomalo all'avvio.

4. Addestrare un modello di analisi del sentimento

Utilizzeremo TensorFlow Lite Model Maker per addestrare un modello di classificazione del testo per prevedere il sentimento di un determinato testo.

Questo passaggio è presentato come un notebook Python che puoi aprire in Google Colab.

Aperto in Colab

Al termine di questo passaggio, avrai un modello di analisi del sentiment TensorFlow Lite pronto per la distribuzione su un'app mobile.

5. Distribuire un modello su Firebase ML

La distribuzione di un modello in Firebase ML è utile per due motivi principali:

  1. Possiamo mantenere le dimensioni di installazione dell'app ridotte e scaricare il modello solo se necessario
  2. Il modello può essere aggiornato regolarmente e con un ciclo di rilascio diverso rispetto all'intera app

Il modello può essere distribuito tramite la console o a livello di codice utilizzando Firebase Admin SDK. 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 stai aprendo questa prima volta. Quindi vai su "Personalizzato" e fai clic sul pulsante "Aggiungi modello".

Quando richiesto, denomina il modello sentiment_analysis e carica il file che hai scaricato da Colab nel passaggio precedente.

3c3c50e6ef12b3b.png

6. Scarica il modello da Firebase ML

Scegliere quando scaricare il modello remoto da Firebase nella tua app può essere complicato poiché i modelli TFLite possono crescere relativamente grandi. Idealmente, vogliamo evitare di caricare il modello immediatamente all'avvio dell'app, poiché se il nostro modello viene utilizzato per una sola funzionalità e l'utente non utilizza mai quella funzionalità, avremo scaricato una quantità significativa di dati senza motivo. Possiamo anche impostare opzioni di download come il recupero dei modelli solo quando ci si connette al Wi-Fi. Se vuoi assicurarti che il modello sia disponibile anche senza una connessione di rete, è importante includerlo anche senza l'app come backup.

Per semplicità, rimuoveremo il modello in bundle predefinito e scaricheremo sempre un modello da Firebase al primo avvio dell'app. In questo modo, quando si esegue l'analisi del sentimento, si può essere sicuri che l'inferenza sia in esecuzione con il modello fornito da Firebase.

Nella parte superiore di ModelLoader.swift , importa il modulo Firebase.

import FirebaseCore
import FirebaseMLModelDownloader

Quindi implementare i seguenti metodi.

static func downloadModel(named name: String,
                          completion: @escaping (CustomModel?, DownloadError?) -> Void) {
  guard FirebaseApp.app() != nil else {
    completion(nil, .firebaseNotInitialized)
    return
  }
  guard success == nil && failure == nil else {
    completion(nil, .downloadInProgress)
    return
  }
  let conditions = ModelDownloadConditions(allowsCellularAccess: false)
  ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
          switch (result) {
          case .success(let customModel):
                  // Download complete.
                  // The CustomModel object contains the local path of the model file,
                  // which you can use to instantiate a TensorFlow Lite classifier.
                  return completion(customModel, nil)
          case .failure(let error):
              // Download was unsuccessful. Notify error message.
            completion(nil, .downloadFailed(underlyingError: error))
          }
  }
}

In ViewController.swift di viewDidLoad , sostituisci la chiamata a loadModel() con il nostro nuovo metodo di download del modello.

// Download the model from Firebase
print("Fetching model...")
ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in
  guard let customModel = customModel else {
    if let error = error {
      print(error)
    }
    return
  }

  print("Model download complete")

  // TODO: Initialize an NLClassifier from the downloaded model
}

Esegui nuovamente la tua app. Dopo alcuni secondi, dovresti vedere un Xcode di accesso che indica che il modello remoto è stato scaricato correttamente. Prova a digitare del testo e conferma che il comportamento dell'app non è cambiato.

7. Integra il modello nella tua app

Tensorflow Lite Task Library ti aiuta a integrare i modelli TensorFlow Lite nella tua app con poche righe di codice. Inizializzeremo un'istanza TFLNLClassifier utilizzando il modello TensorFlow Lite scaricato da Firebase. Quindi lo useremo per classificare l'input di testo dagli utenti dell'app e mostrare il risultato sull'interfaccia utente.

Aggiungi la dipendenza

Vai al Podfile dell'app e aggiungi TensorFlow Lite Task Library (Text) nelle dipendenze dell'app. Assicurati di aggiungere la dipendenza nella dichiarazione target 'TextClassification' .

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Esegui pod install per installare la nuova dipendenza.

Inizializza un classificatore di testo

Quindi caricheremo il modello di analisi del sentimento scaricato da Firebase utilizzando NLClassifier della Task Library.

ViewController.swift

Dichiariamo una variabile di istanza TFLNLClassifier. Nella parte superiore del file, importa la nuova dipendenza:

import TensorFlowLiteTaskText

Trova questo commento sopra il metodo che abbiamo modificato nell'ultimo passaggio:

// TODO: Add an TFLNLClassifier property.

Sostituisci TODO con il seguente codice:

private var classifier: TFLNLClassifier?

Inizializza la variabile textClassifier con il modello di analisi del sentimento scaricato da Firebase. Trova questo commento che abbiamo aggiunto nell'ultimo passaggio:

// TODO: Initialize an NLClassifier from the downloaded model

Sostituisci TODO con il seguente codice:

let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)

Classifica il testo

Dopo aver configurato l'istanza del classifier , puoi eseguire l'analisi del sentiment con una singola chiamata al metodo.

ViewController.swift

Nel metodo classify(text:) , trova il commento TODO:

// TODO: Run sentiment analysis on the input text

Sostituisci il commento con il seguente codice:

guard let classifier = self.classifier else { return }

// Classify the text
let classifierResults = classifier.classify(text: text)

// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)

8. Esegui l'app finale

Hai integrato il modello di analisi del sentimento nell'app, quindi testiamolo. Collega il tuo dispositivo iOS e fai clic su Esegui ( esegui.png ) nella barra degli strumenti di Xcode.

L'app dovrebbe essere in grado di prevedere correttamente il sentimento della recensione del film che inserisci.

classificazione_risultato_screen.png

9. Potenzia l'app con più funzionalità Firebase

Oltre a ospitare i tuoi modelli TFLite, Firebase offre diverse altre funzionalità per potenziare i tuoi casi d'uso di machine learning:

  • Monitoraggio delle prestazioni di Firebase per misurare la velocità di inferenza del modello in esecuzione sul dispositivo degli utenti.
  • Firebase Analytics per misurare le prestazioni del tuo modello in produzione misurando la reazione dell'utente.
  • Firebase A/B Testing per testare più versioni del tuo modello
  • Ti ricordi che abbiamo addestrato due versioni del nostro modello TFLite in precedenza? Il test A/B è un buon modo per scoprire quale versione funziona meglio in produzione!

Per ulteriori informazioni su come sfruttare queste funzionalità nella tua app, dai un'occhiata ai codelab di seguito:

10. Congratulazioni!

In questo codelab, hai imparato come addestrare un modello TFLite di analisi del sentiment e distribuirlo alla tua app mobile utilizzando Firebase. Per saperne di più su TFLite e Firebase, dai un'occhiata ad altri campioni di TFLite e alle guide introduttive di Firebase.

Di cosa abbiamo parlato

  • TensorFlow Lite
  • Firebase ML

Prossimi passi

  • Misura la velocità di inferenza del tuo modello con Firebase Performance Monitoring.
  • Distribuisci il modello da Colab direttamente a Firebase tramite l'API di gestione del modello ML di Firebase.
  • Aggiungi un meccanismo per consentire agli utenti di inviare feedback sul risultato della previsione e utilizza Firebase Analytics per tenere traccia del feedback degli utenti.
  • Testare A/B il modello Average Word Vector e il modello MobileBERT con Firebase A/B testing.

Per saperne di più

Hai una domanda?

Segnala problemi