1. Przegląd
Witamy w Klasyfikacji tekstu za pomocą ćwiczeń z programowania TensorFlow Lite i Firebase. W tym laboratorium z programowania dowiesz się, jak używać TensorFlow Lite i Firebase do uczenia i wdrażania modelu klasyfikacji tekstu w swojej aplikacji. To ćwiczenie z programowania opiera się na przykładzie TensorFlow Lite.
Klasyfikacja tekstu to proces przypisywania znaczników lub kategorii do tekstu zgodnie z jego zawartością. Jest to jedno z podstawowych zadań przetwarzania języka naturalnego (NLP) o szerokim zastosowaniu, takim jak analiza nastrojów, oznaczanie tematów, wykrywanie spamu i wykrywanie zamiarów.
Analiza sentymentów to interpretacja i klasyfikacja emocji (pozytywnych, negatywnych i neutralnych) w danych tekstowych przy użyciu technik analizy tekstu. Analiza nastrojów umożliwia firmom identyfikację nastrojów klientów w stosunku do produktów, marek lub usług w rozmowach online i informacjach zwrotnych.
W tym samouczku pokazano, jak zbudować model uczenia maszynowego na potrzeby analizy tonacji, w szczególności klasyfikując tekst jako pozytywny lub negatywny. To jest przykład klasyfikacji binarnej – lub dwuklasowej – ważnego i szeroko stosowanego rodzaju problemu uczenia maszynowego.
Czego się dowiesz
- Wytrenuj model analizy nastrojów TF Lite za pomocą narzędzia TF Lite Model Maker
- Wdrażaj modele TF Lite w Firebase ML i uzyskuj do nich dostęp ze swojej aplikacji
- Śledź opinie użytkowników, aby mierzyć dokładność modelu za pomocą Firebase Analytics
- Wydajność modelu profilu poprzez monitorowanie wydajności Firebase
- Wybierz, który z wielu wdrożonych modeli ma zostać załadowany poprzez 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?
Jak oceniasz swoje doświadczenie w tworzeniu aplikacji na Androida?
2. Utwórz projekt konsoli Firebase
Dodaj Firebase do projektu
- Przejdź do konsoli Firebase .
- Wybierz opcję Utwórz nowy projekt i nazwij swój projekt „Firebase ML iOS Codelab”.
3. Pobierz przykładowy projekt
Pobierz kod
Rozpocznij 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 gita, możesz także pobrać przykładowy projekt ze strony GitHub lub klikając ten link . Po pobraniu projektu uruchom go w Xcode i pobaw się klasyfikacją tekstu, aby przekonać się, jak to działa.
Skonfiguruj Firebase
Postępuj zgodnie z dokumentacją , aby utworzyć nowy projekt Firebase. Gdy już masz projekt, pobierz plik GoogleService-Info.plist
swojego projektu z konsoli Firebase i przeciągnij go do katalogu głównego projektu Xcode.
Dodaj Firebase do swojego Podfile i uruchom instalację pod.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
W metodzie didFinishLaunchingWithOptions
aplikacji 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 nastrojów
Będziemy używać TensorFlow Lite Model Maker do uczenia modelu klasyfikacji tekstu w celu przewidywania tonacji danego tekstu.
Ten krok jest przedstawiany jako notatnik w języku Python, który możesz otworzyć w Google Colab.
Otwórz w Colab
Po zakończeniu tego kroku będziesz mieć model analizy nastrojów TensorFlow Lite, który będzie gotowy do wdrożenia w aplikacji mobilnej.
5. Wdróż model w Firebase ML
Wdrażanie modelu w Firebase ML jest przydatne z dwóch głównych powodów:
- Możemy zachować niewielki rozmiar instalacji aplikacji i pobrać model tylko w razie potrzeby
- Model może być regularnie aktualizowany i mieć inny cykl wydawniczy niż cała aplikacja
Model można wdrożyć za pośrednictwem konsoli lub programowo przy użyciu pakietu Firebase Admin SDK. W tym kroku będziemy wdrażać za pośrednictwem konsoli.
Najpierw otwórz konsolę Firebase i kliknij Uczenie maszynowe w lewym panelu nawigacyjnym. Kliknij „Rozpocznij”, jeśli otwierasz po raz pierwszy. Następnie przejdź do „Niestandardowy” i kliknij przycisk „Dodaj model”.
Gdy pojawi się monit, nadaj modelowi nazwę sentiment_analysis
i prześlij plik pobrany z Colab w poprzednim kroku.
6. Pobierz model z Firebase ML
Wybór momentu pobrania zdalnego modelu z Firebase do aplikacji może być trudny, ponieważ modele TFLite mogą rosnąć stosunkowo duże. W idealnym przypadku chcielibyśmy uniknąć ładowania modelu natychmiast po uruchomieniu aplikacji, ponieważ jeśli nasz model będzie używany tylko do jednej funkcji, a użytkownik nigdy z niej nie skorzysta, pobierzemy znaczną ilość danych bez powodu. Możemy również ustawić opcje pobierania, takie jak pobieranie modeli tylko po podłączeniu do Wi-Fi. Jeśli chcesz mieć pewność, że model będzie dostępny nawet bez połączenia sieciowego, ważne jest, aby zapakować 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 podczas przeprowadzania analizy nastrojów możesz mieć pewność, że wnioskowanie działa na podstawie modelu dostarczonego z Firebase.
Na górze 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 viewDidLoad
pliku ViewController.swift
zastąp wywołanie metody 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 aplikację. Po kilku sekundach powinieneś zobaczyć log w Xcode wskazujący, że zdalny model został pomyślnie pobrany. Spróbuj wpisać tekst i potwierdź, że zachowanie aplikacji się nie zmieniło.
7. Zintegruj model ze swoją aplikacją
Biblioteka zadań Tensorflow Lite pomaga zintegrować modele TensorFlow Lite z aplikacją za pomocą zaledwie kilku wierszy kodu. Zainicjujemy instancję TFLNLClassifier
przy użyciu modelu TensorFlow Lite pobranego z Firebase. Następnie użyjemy go do sklasyfikowania tekstu wprowadzanego przez 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 dodałeś zależność w target 'TextClassification'
.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
Uruchom pod install
, aby zainstalować nową zależność.
Zainicjuj klasyfikator tekstu
Następnie załadujemy model analizy tonacji pobrany z Firebase za pomocą NLClassifier
biblioteki zadań.
ViewController.swift
Zadeklarujmy zmienną instancji TFLNLClassifier. Na górze 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 tonacji 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 nastrojów z aplikacją, więc przetestujmy go. Podłącz urządzenie iOS i kliknij Uruchom ( ) na pasku narzędzi Xcode.
Aplikacja powinna być w stanie poprawnie przewidzieć nastroje zawarte w recenzji filmu.
9. Wzbogać aplikację o więcej funkcji Firebase
Oprócz hostowania modeli TFLite, Firebase udostępnia 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 do pomiaru skuteczności Twojego modelu w środowisku produkcyjnym poprzez pomiar reakcji użytkowników.
- Testowanie 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 sprawdza się 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!
Podczas tych ćwiczeń z programowania nauczyłeś się wytrenować model TFLite do analizy tonacji i wdrożyć go w aplikacji mobilnej przy użyciu 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
- Baza Firebase ML
Następne kroki
- Zmierz szybkość wnioskowania modelu za pomocą narzędzia Firebase Performance Monitoring.
- Wdróż model z Colab bezpośrednio w Firebase za pośrednictwem interfejsu API zarządzania modelami Firebase ML.
- Dodaj mechanizm umożliwiający użytkownikom przesyłanie informacji zwrotnych na temat wyniku prognozy i korzystaj z Firebase Analytics do śledzenia opinii użytkowników.
- Test A/B modelu wektora średniego słowa i modelu MobileBERT za pomocą testów A/B Firebase.
Ucz się więcej
- Dokumentacja Firebase Machine Learning
- Dokumentacja TensorFlow Lite
- Mierz wydajność aplikacji za pomocą Firebase
- Modele testów A/B z Firebase