1. Omówienie
Witamy w codelab do klasyfikacji tekstu za pomocą TensorFlow Lite i Firebase. Z tego ćwiczenia w Codelabs dowiesz się, jak za pomocą TensorFlow Lite i Firebase wytrenować i wdrożyć w aplikacji model klasyfikacji tekstu. To ćwiczenie w Codelabs opiera się na tym przykładzie TensorFlow Lite.
Klasyfikacja tekstu to proces przypisywania tagów lub kategorii do tekstu zgodnie z jego treścią. Jest to jedno z podstawowych zadań przetwarzania języka naturalnego (NLP) z szeroko zakrojonymi zastosowaniami, takimi jak analiza nastawienia, etykietowanie tematów, wykrywanie spamu i wykrywanie zamiaru.
Analiza nastawienia to interpretacja i klasyfikacja emocji (pozytywnych, negatywnych i neutralnych) w danych tekstowych przy użyciu technik analizy tekstu. Analiza nastawienia umożliwia firmom określenie nastawienia klientów do produktów, marek lub usług w rozmowach i opiniach online.
W tym samouczku dowiesz się, jak tworzyć model systemów uczących się do analizy nastawienia, a w szczególności do klasyfikowania tekstu jako pozytywnego lub negatywnego. To przykład klasyfikacji binarnej lub dwuklasowej – ważnego i powszechnie stosowanego problemu systemów uczących się.
Czego się nauczysz
- Trenowanie modelu analizy nastroju TF Lite za pomocą narzędzia TF Lite Model Maker
- Wdrażanie modeli TF Lite w Firebase ML i uzyskiwanie do nich dostępu z aplikacji
- Śledzenie opinii użytkowników w celu pomiaru dokładności modelu za pomocą Firebase Analytics
- Profilowanie wydajności modelu za pomocą Monitorowania wydajności Firebase
- Wybierz, który z kilku wdrożonych modeli ma być wczytany przez Zdalną konfigurację
- Eksperymentowanie z różnymi modelami za pomocą testów A/B Firebase
Czego potrzebujesz
- Xcode 11 (lub nowsza)
- CocoaPods w wersji 1.9.1 (lub nowszej)
Jak będziesz korzystać z tego samouczka?
Jak oceniasz tworzenie aplikacji na Androida?
2. Utwórz projekt konsoli Firebase
Dodawanie Firebase do projektu
- Otwórz konsolę Firebase.
- Wybierz Utwórz nowy projekt i nazwij swój projekt „Ćwiczenie z programowania w Firebase ML na iOS”.
3. Pobierz przykładowy projekt
Pobierz kod
Zacznij od sklonowania przykładowego projektu i uruchomienia polecenia 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 zainstalowanej aplikacji git, możesz też pobrać przykładowy projekt ze strony GitHuba lub kliknąć ten link. Gdy pobierzesz projekt, uruchom go w Xcode i przetestuj klasyfikację tekstu, aby zobaczyć, jak to działa.
Skonfiguruj Firebase
Aby utworzyć nowy projekt Firebase, postępuj zgodnie z dokumentacją. Gdy otrzymasz projekt, pobierz jego plik GoogleService-Info.plist
z konsoli Firebase i przeciągnij go do katalogu głównego projektu Xcode.
Dodaj Firebase do pliku Podfile i uruchom instalację poda.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
W metodzie AppDelegate
didFinishLaunchingWithOptions
zaimportuj Firebase na początku pliku.
import FirebaseCore
Dodaj też wywołanie do konfiguracji Firebase.
FirebaseApp.configure()
Uruchom projekt jeszcze raz, aby upewnić się, że aplikacja jest prawidłowo skonfigurowana i nie ulega awarii przy uruchamianiu.
4. Trenowanie modelu analizy nastroju
Za pomocą Kreatora modeli TensorFlow Lite wytrenujemy model klasyfikacji tekstu do prognozowania nastawienia dotyczącego danego tekstu.
Ten krok jest prezentowany w postaci notatnika w języku Python, który możesz otworzyć w Google Colab.
Otwórz w Colab
Po wykonaniu tego kroku będziesz mieć model analizy nastroju TensorFlow Lite gotowy do wdrożenia w aplikacji mobilnej.
5. Wdrażanie modelu w Firebase ML
Wdrożenie modelu w Firebase ML jest przydatne z 2 głównych powodów:
- możemy zachować niewielki rozmiar aplikacji i pobierać model tylko w razie potrzeby;
- Model można aktualizować regularnie i z innym cyklem niż cała aplikacja.
Model można wdrożyć za pomocą konsoli lub automatycznie przy użyciu pakietu Firebase Admin SDK. W tym kroku wdrożymy usługę za pomocą konsoli.
Najpierw otwórz konsolę Firebase i w panelu użytkownika po lewej stronie kliknij Systemy uczące się. Jeśli otwierasz tę stronę po raz pierwszy, kliknij „Rozpocznij”. Następnie przejdź do sekcji „Niestandardowe” i kliknij przycisk „Dodaj model”.
Gdy pojawi się prośba, nadaj modelowi nazwę sentiment_analysis
i prześlij plik pobrany z Colab w poprzednim kroku.
6. Pobieranie modelu z Firebase ML
Podjęcie decyzji o tym, kiedy pobrać model zdalny z Firebase do aplikacji, może być trudne, ponieważ modele TFLite mogą rosnąć stosunkowo duże. Najlepiej unikać wczytywania modelu od razu po uruchomieniu aplikacji, ponieważ jeśli jest on używany tylko z jedną funkcją, a użytkownik nigdy z niej nie korzysta, pobierzemy znaczącą ilość danych bez powodu. Możemy też ustawić opcje pobierania, np. pobieranie tylko modeli po połączeniu z Wi-Fi. Jeśli chcesz mieć pewność, że model będzie dostępny nawet bez połączenia z internetem, ważne jest, aby spakować go również bez aplikacji jako kopii zapasowej.
Ze względu na prostotę usuniemy domyślny model w pakiecie i zawsze będziemy pobierać model z Firebase przy pierwszym uruchomieniu aplikacji. Dzięki temu podczas analizy nastroju możesz mieć pewność, że wnioskowanie jest wykonywane za pomocą modelu dostarczonego przez Firebase.
U góry strony ModelLoader.swift
zaimportuj moduł Firebase.
import FirebaseCore import FirebaseMLModelDownloader
Następnie zastosuj podane niżej 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 narzędziu viewDidLoad
aplikacji ViewController.swift
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 }
Ponownie uruchom aplikację. Po kilku sekundach w Xcode powinien pojawić się dziennik wskazujący, że model zdalny został pobrany. Wpisz tekst i sprawdź, czy działanie aplikacji się nie zmieniło.
7. Integracja modelu w aplikacji
Biblioteka zadań Tensorflow Lite pomaga zintegrować modele TensorFlow Lite z aplikacją za pomocą zaledwie kilku wierszy kodu. Zainicjujemy instancję TFLNLClassifier
za pomocą modelu TensorFlow Lite pobranego z Firebase. Następnie użyjemy go do sklasyfikowania tekstu wpisywanego przez użytkowników aplikacji i wyświetlimy wynik w interfejsie.
Dodawanie zależności
Otwórz plik Podfile aplikacji i w zależnych plikach aplikacji dodaj bibliotekę zadań TensorFlow Lite (Text). Dodaj zależność w deklaracji target 'TextClassification'
.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
Uruchom pod install
, aby zainstalować nową zależność.
Inicjowanie klasyfikatora tekstu
Następnie wczytamy model analizy nastroju pobrany z Firebase za pomocą NLClassifier
w Task Library.
ViewController.swift
Zadeklaruj zmienną instancji TFLNLClassifier. U góry pliku zaimportuj nową zależność:
import TensorFlowLiteTaskText
Znajdź ten komentarz nad metodą zmodyfikowaną w ostatnim kroku:
// TODO: Add a TFLNLClassifier property.
Zastąp pole TODO tym 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 tym kodem:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Klasyfikacja tekstu
Po skonfigurowaniu instancji classifier
możesz przeprowadzić analizę nastroju 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 tym 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ą wersję aplikacji
Model analizy nastawienia został zintegrowany z aplikacją, więc przetestujmy go. Podłącz urządzenie z iOS i na pasku narzędzi Xcode kliknij Uruchom ().
Aplikacja powinna być w stanie poprawnie przewidywać nastrój w danej recenzji filmu.
9. Zwiększ możliwości aplikacji dzięki większej liczbie funkcji Firebase
Oprócz hostingu modeli TFLite Firebase udostępnia też kilka innych funkcji, które ułatwiają stosowanie systemów uczących się:
- Monitorowania wydajności Firebase do pomiaru szybkości wnioskowania modelu działającego na urządzeniach użytkowników urządzenia.
- Firebase Analytics, aby mierzyć skuteczność modelu w środowisku produkcyjnym za pomocą pomiaru reakcji użytkowników.
- Testy A/B Firebase do testowania wielu wersji modelu
- Pamiętasz, że trenowaliśmy wcześniej 2 wersje naszego modelu TFLite? Testy A/B to dobry sposób na sprawdzenie, która wersja działa lepiej w środowisku produkcyjnym.
Więcej informacji o wykorzystywaniu tych funkcji w aplikacji znajdziesz w tych laboratoriach programistycznych:
10. Gratulacje!
Dzięki tym ćwiczeniom w Codelabs omówiliśmy, jak wytrenować model TFLite do analizy nastawienia 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 kodu TFLite oraz z przewodnikami na temat korzystania z Firebase.
Omówione zagadnienia
- TensorFlow Lite
- Firebase ML
Następne kroki
- Zmierz szybkość wnioskowania modelu za pomocą Monitorowania wydajności Firebase.
- Wdróż model z Colab bezpośrednio w Firebase za pomocą interfejsu Firebase ML Model Management API.
- Dodaj mechanizm, aby umożliwić użytkownikom przekazywanie opinii na temat wyniku prognozy, i używaj Firebase Analytics do śledzenia opinii użytkowników.
- Za pomocą Testów A/B Firebase przeprowadzaj testy A/B modelu średniego wektora słownego i modelu MobileBERT.
Więcej informacji
- Dokumentacja systemów uczących się Firebase
- Dokumentacja TensorFlow Lite
- Pomiar skuteczności aplikacji za pomocą Firebase
- Testowanie modeli A/B w Firebase