Dodaj klasyfikację tekstu na urządzeniu do swojej aplikacji za pomocą TensorFlow Lite i Firebase — iOS Codelab

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

1. Przegląd

klasyfikacja_wyników_ekran.png

Witamy w klasyfikacji tekstu za pomocą ćwiczeń kodowania TensorFlow Lite i Firebase. W tym ćwiczeniu z programowania dowiesz się, jak używać TensorFlow Lite i Firebase do trenowania i wdrażania modelu klasyfikacji tekstu w swojej aplikacji. To laboratorium programowania oparte jest na tym przykładzie TensorFlow Lite.

Klasyfikacja tekstu to proces przypisywania tagów lub kategorii do tekstu zgodnie z jego zawartością. Jest to jedno z podstawowych zadań w przetwarzaniu języka naturalnego (NLP) z szerokimi zastosowaniami, takimi jak analiza sentymentu, oznaczanie tematów, wykrywanie spamu i wykrywanie zamiarów.

Analiza sentymentu to interpretacja i klasyfikacja emocji (pozytywnych, negatywnych i neutralnych) w danych tekstowych za pomocą technik analizy tekstu. Analiza nastrojów pozwala firmom identyfikować nastroje klientów wobec produktów, marek lub usług w rozmowach i informacjach zwrotnych online.

Ten samouczek pokazuje, jak zbudować model uczenia maszynowego do analizy sentymentu, w szczególności klasyfikowania tekstu jako pozytywnego lub negatywnego. Jest to przykład klasyfikacji binarnej — lub dwuklasowej — ważnego i szeroko stosowanego rodzaju problemu uczenia maszynowego.

Czego się nauczysz

  • Trenuj model analizy sentymentu TF Lite za pomocą TF Lite Model Maker
  • Wdróż modele TF Lite w Firebase ML i uzyskaj do nich dostęp ze swojej aplikacji
  • Śledź opinie użytkowników, aby mierzyć dokładność modelu za pomocą Firebase Analytics
  • Profiluj wydajność modelu za pomocą funkcji monitorowania wydajności Firebase
  • Wybierz, który z wielu wdrożonych modeli jest ładowany przez Zdalną konfigurację
  • Eksperymentuj z różnymi modelami za pomocą testów A/B Firebase

Co będziesz potrzebował

  • Xcode 11 (lub nowszy)
  • CocoaPods 1.9.1 (lub nowszy)

Jak będziesz korzystać z tego samouczka?

Przeczytaj to tylko Przeczytaj i wykonaj ćwiczenia

Jak oceniasz swoje doświadczenia z tworzeniem aplikacji na Androida?

Nowicjusz Mediator Biegły

2. Utwórz projekt konsoli Firebase

Dodaj Firebase do projektu

  1. Przejdź do konsoli Firebase .
  2. Wybierz opcję Utwórz nowy projekt i nazwij swój projekt „Firebase ML iOS Codelab”.

3. Pobierz przykładowy projekt

Pobierz kod

Zacznij od sklonowania przykładowego projektu i uruchomienia pod update w katalogu projektu:

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

Jeśli nie masz zainstalowanego git, możesz również pobrać przykładowy projekt z jego strony GitHub lub klikając ten link . Po pobraniu projektu uruchom go w Xcode i pobaw się klasyfikacją tekstu, aby poznać, jak to działa.

Skonfiguruj Firebase

Postępuj zgodnie z dokumentacją, aby utworzyć nowy projekt Firebase. Po uzyskaniu projektu pobierz plik GoogleService-Info.plist projektu z konsoli Firebase i przeciągnij go do katalogu głównego projektu Xcode.

9efb62a92f27e939.png

Dodaj Firebase do swojego pliku Podfile i uruchom instalację pod.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

W metodzie didFinishLaunchingWithOptions Twojego AppDelegate zaimportuj Firebase na górze pliku

import FirebaseCore

I dodaj wywołanie, aby skonfigurować Firebase.

FirebaseApp.configure()

Uruchom projekt ponownie, aby upewnić się, że aplikacja jest poprawnie skonfigurowana i nie ulega awarii podczas uruchamiania.

4. Wytrenuj model analizy sentymentu

Użyjemy TensorFlow Lite Model Maker, aby wytrenować model klasyfikacji tekstu w celu przewidywania sentymentu danego tekstu.

Ten krok jest przedstawiony jako notatnik Pythona, który można otworzyć w Google Colab.

Otwórz w Colab

Po zakończeniu tego kroku będziesz mieć model analizy nastrojów TensorFlow Lite, który jest gotowy do wdrożenia w aplikacji mobilnej.

5. Wdróż model w Firebase ML

Wdrożenie modelu w Firebase ML jest przydatne z dwóch głównych powodów:

  1. Możemy zachować mały rozmiar instalacji aplikacji i pobrać model tylko w razie potrzeby
  2. Model może być regularnie aktualizowany i ma inny cykl wydawniczy niż cała aplikacja

Model można wdrożyć za pomocą konsoli lub programowo przy użyciu pakietu Firebase Admin SDK. W tym kroku będziemy wdrażać za pomocą konsoli.

Najpierw otwórz Konsolę Firebase i kliknij Uczenie maszynowe w lewym panelu nawigacyjnym. Kliknij „Rozpocznij”, jeśli otwierasz ten pierwszy raz. Następnie przejdź do „Niestandardowy” i kliknij przycisk „Dodaj model”.

Po wyświetleniu monitu nazwij model sentiment_analysis i prześlij plik pobrany z Colab w poprzednim kroku.

3c3c50e6ef12b3b.png

6. Pobierz model z Firebase ML

Wybór czasu pobrania modelu zdalnego z Firebase do aplikacji może być trudny, ponieważ modele TFLite mogą rosnąć stosunkowo duże. Najlepiej byłoby uniknąć ładowania modelu natychmiast po uruchomieniu aplikacji, ponieważ jeśli nasz model jest używany tylko dla jednej funkcji, a użytkownik nigdy nie korzysta z tej funkcji, pobraliśmy znaczną ilość danych bez powodu. Możemy również ustawić opcje pobierania, takie jak pobieranie tylko modeli po podłączeniu do Wi-Fi. Jeśli chcesz mieć pewność, że model jest dostępny nawet bez połączenia sieciowego, ważne jest, aby spakować go również bez aplikacji jako kopię zapasową.

Dla uproszczenia usuniemy domyślny model w pakiecie i zawsze będziemy pobierać model z Firebase przy pierwszym uruchomieniu aplikacji. W ten sposób, uruchamiając analizę sentymentu, możesz mieć pewność, że wnioskowanie działa z modelem dostarczonym z Firebase.

W górnej części ModelLoader.swift zaimportuj moduł Firebase.

import FirebaseCore
import FirebaseMLModelDownloader

Następnie zaimplementuj następujące metody.

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))
          }
  }
}

W ViewController.swift w viewDidLoad zastąp wywołanie loadModel() naszą nową metodą pobierania modelu.

// 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
}

Uruchom ponownie swoją aplikację. Po kilku sekundach powinieneś zobaczyć log w Xcode wskazujący, że model zdalny został pomyślnie pobrany. Spróbuj wpisać jakiś tekst i upewnij się, że zachowanie aplikacji się nie zmieniło.

7. Zintegruj model w swojej aplikacji

Biblioteka zadań Tensorflow Lite pomaga zintegrować modele TensorFlow Lite z Twoją aplikacją za pomocą zaledwie kilku linijek kodu. Zainicjujemy instancję TFLNLClassifier za pomocą modelu TensorFlow Lite pobranego z Firebase. Następnie użyjemy go do sklasyfikowania tekstu wejściowego od użytkowników aplikacji i wyświetlenia wyniku w interfejsie użytkownika.

Dodaj zależność

Przejdź do pliku Podfile aplikacji i dodaj bibliotekę zadań TensorFlow Lite (tekst) w zależnościach aplikacji. Upewnij się, że dodajesz zależność pod deklaracją target 'TextClassification' .

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Uruchom pod install , aby zainstalować nową zależność.

Zainicjuj klasyfikator tekstu

Następnie załadujemy model analizy sentymentu pobrany z Firebase przy użyciu NLClassifier biblioteki zadań.

ViewController.swift

Zadeklarujmy zmienną instancji TFLNLClassifier. U góry pliku zaimportuj nową zależność:

import TensorFlowLiteTaskText

Znajdź ten komentarz nad metodą, którą zmodyfikowaliśmy w ostatnim kroku:

// TODO: Add an TFLNLClassifier property.

Zastąp TODO następującym kodem:

private var classifier: TFLNLClassifier?

Zainicjuj zmienną textClassifier za pomocą modelu analizy sentymentu pobranego z Firebase. Znajdź ten komentarz, który dodaliśmy w ostatnim kroku:

// TODO: Initialize an NLClassifier from the downloaded model

Zastąp TODO następującym kodem:

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

Klasyfikuj tekst

Po skonfigurowaniu instancji classifier można uruchomić analizę tonacji za pomocą jednego wywołania metody.

ViewController.swift

W metodzie classify(text:) znajdź komentarz TODO:

// TODO: Run sentiment analysis on the input text

Zastąp komentarz następującym kodem:

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. Uruchom ostateczną aplikację

Zintegrowałeś model analizy sentymentu z aplikacją, więc przetestujmy go. Podłącz urządzenie z systemem iOS i kliknij Uruchom ( wykonać.png ) na pasku narzędzi Xcode.

Aplikacja powinna być w stanie poprawnie przewidzieć nastroje recenzji filmu, którą wprowadzisz.

klasyfikacja_wyników_ekran.png

9. Wzbogać aplikację o więcej funkcji Firebase

Oprócz hostowania modeli TFLite, Firebase oferuje kilka innych funkcji, które usprawnią przypadki użycia uczenia maszynowego:

  • Monitorowanie wydajności Firebase do pomiaru szybkości wnioskowania modelu działającego na urządzeniu użytkownika.
  • Firebase Analytics, aby zmierzyć, jak dobrze Twój model działa w środowisku produkcyjnym, mierząc reakcję użytkownika.
  • Testy A/B Firebase w celu przetestowania wielu wersji modelu
  • Czy pamiętasz, że wcześniej trenowaliśmy dwie wersje naszego modelu TFLite? Testy A/B to dobry sposób, aby dowiedzieć się, która wersja działa lepiej w środowisku produkcyjnym!

Aby dowiedzieć się więcej o tym, jak wykorzystać te funkcje w swojej aplikacji, zapoznaj się z poniższymi ćwiczeniami z programowania:

10. Gratulacje!

W tym ćwiczeniu z programowania dowiedziałeś się, jak wytrenować model TFLite do analizy nastrojów i wdrożyć go w aplikacji mobilnej za pomocą Firebase. Aby dowiedzieć się więcej o TFLite i Firebase, zapoznaj się z innymi przykładami TFLite i przewodnikami wprowadzającymi do Firebase .

Co omówiliśmy

  • TensorFlow Lite
  • Firebase ML

Następne kroki

  • Mierz szybkość wnioskowania o modelu za pomocą funkcji Firebase Performance Monitoring.
  • Wdróż model z Colab bezpośrednio w Firebase za pomocą interfejsu Firebase ML Model Management API.
  • Dodaj mechanizm umożliwiający użytkownikom przekazywanie opinii o wynikach prognozy i używaj Firebase Analytics do śledzenia opinii użytkowników.
  • Przetestuj A/B model Średniego Wektora Słowa i model MobileBERT z testami Firebase A/B.

Ucz się więcej

Mam pytanie?

Zgłoś problemy