1. Opis
Witamy na szkoleniu z ćwiczeń z programowania w TensorFlow Lite i Firebase na temat klasyfikacji tekstu. 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ą. To jedno z podstawowych zadań przetwarzania języka naturalnego (NLP), które ma szerokie zastosowania, takie jak analiza nastawienia, oznaczanie tematów, wykrywanie spamu i wykrywanie intencji.
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.
Z tego samouczka dowiesz się, jak utworzyć model systemów uczących się do analizy nastawienia, a w szczególności na klasyfikowanie 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 nastawienia w TF Lite za pomocą Kreatora modeli TF Lite
- Wdrażanie modeli TF Lite w Firebase ML i uzyskiwanie do nich dostępu z aplikacji
- Śledź opinie użytkowników, aby mierzyć dokładność modelu za pomocą Firebase Analytics
- Profiluj wydajność modelu za pomocą Monitorowania wydajności Firebase
- Wybierz, który z wielu wdrożonych modeli ma być ładowany przez Zdalną konfigurację
- Eksperymentuj z różnymi modelami za pomocą Testów A/B Firebase
Czego potrzebujesz
- Xcode 11 (lub nowszy)
- CocoaPods w wersji 1.9.1 (lub nowszej)
Jak wykorzystasz ten samouczek?
Jak oceniasz swoje doświadczenia z tworzeniem aplikacji na Androida?
2. Utwórz projekt konsoli Firebase
Dodaj 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 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 didFinishLaunchingWithOptions
w swoim urządzeniu AppDelegate
zaimportuj Firebase na początku pliku
import FirebaseCore
Dodaj wywołanie, aby skonfigurować 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 nastawienia
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 ukończeniu tego kroku otrzymasz model analizy nastawienia TensorFlow Lite, który możesz wdrożyć w aplikacji mobilnej.
5. Wdrażanie modelu w Firebase ML
Wdrożenie modelu w Firebase ML jest przydatne z 2 głównych powodów:
- Rozmiar instalowany aplikacji może być niewielki i pobieramy model tylko w razie potrzeby.
- Model może być regularnie aktualizowany i zawierać inny cykl wydawania wersji niż cała aplikacja.
Model można wdrożyć za pomocą konsoli lub automatycznie przy użyciu pakietu Firebase Admin SDK. W tym kroku przeprowadzimy wdrożenie za pomocą konsoli.
Najpierw otwórz konsolę Firebase i w panelu użytkownika po lewej stronie kliknij Systemy uczące się. Kliknij „Rozpocznij”. jeśli otwierasz go po raz pierwszy. Następnie przejdź do sekcji „Niestandardowe”. i kliknij „Dodaj model”, Przycisk
Gdy pojawi się prośba, nadaj modelowi nazwę sentiment_analysis
i prześlij plik pobrany z Colab w poprzednim kroku.
6. Pobierz model 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, na przykład pobieranie modeli tylko przez sieć Wi-Fi. Jeśli chcesz mieć pewność, że model będzie dostępny nawet bez połączenia sieciowego, musisz utworzyć pakiet bez aplikacji jako kopii zapasowej.
Dla uproszczenia usuniemy domyślny model z pakietu i zawsze pobieramy model z Firebase przy pierwszym uruchomieniu aplikacji. Dzięki temu podczas przeprowadzania analizy nastawienia możesz mieć pewność, że wnioskowanie działa z użyciem modelu dostarczonego z Firebase.
U góry strony ModelLoader.swift
zaimportuj moduł Firebase.
import FirebaseCore import FirebaseMLModelDownloader
Następnie zaimplementuj poniższe 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. Zintegruj model z aplikacją
Biblioteka zadań Tensorflow Lite pomaga zintegrować modele TensorFlow Lite z aplikacją za pomocą kilku wierszy kodu. Zainicjujemy instancję TFLNLClassifier
za pomocą modelu TensorFlow Lite pobranego z Firebase. Następnie użyjemy go, aby sklasyfikować tekst wpisany przez użytkowników aplikacji i wyświetlić wynik w interfejsie.
Dodaj zależność
Otwórz plik Podfile aplikacji i dodaj bibliotekę zadań TensorFlow Lite (Text) w zależnościach aplikacji. 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 nastawienia pobrany z Firebase za pomocą elementu NLClassifier
z Biblioteki zadań.
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 nastawienia pobranego z Firebase. Znajdź ten komentarz, który dodaliśmy w ostatnim kroku:
// TODO: Initialize an NLClassifier from the downloaded model
Zastąp pole TODO tym kodem:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Klasyfikowanie tekstu
Po skonfigurowaniu instancji classifier
możesz uruchomić analizę nastawienia za pomocą wywołania pojedynczej 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
Udało Ci się zintegrować model analizy nastawienia z aplikacją, więc przetestujmy go. Podłącz urządzenie z iOS i kliknij Uruchom ( ) na pasku narzędzi Xcode.
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 hostowania modeli TFLite Firebase udostępnia kilka innych funkcji, które usprawniają zastosowania 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 umożliwiające testowanie 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.
Aby dowiedzieć się więcej o korzystaniu z tych funkcji w aplikacji, zapoznaj się z poniższymi ćwiczeniami z programowania:
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 TFLite i przewodnikami na wprowadzenie w Firebase.
Omówione zagadnienia
- TensorFlow Lite
- Firebase ML
Następne kroki
- Mierz szybkość wnioskowania modelu za pomocą Monitorowania wydajności Firebase.
- Wdróż model z Colab bezpośrednio do 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, aby przetestować model Wektora średniej słownej i model 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