1. Przegląd
Witamy w samouczku dotyczącym klasyfikacji tekstu za pomocą TensorFlow Lite i Firebase. Z tych ćwiczeń z programowania dowiesz się, jak używać TensorFlow Lite i Firebase do trenowania i wdrażania w aplikacji modelu klasyfikacji tekstu. Te ćwiczenia z programowania są oparte na tym przykładzie TensorFlow Lite.
Klasyfikacja tekstu to proces przypisywania tagów lub kategorii do tekstu na podstawie jego treści. Jest to jedno z podstawowych zadań w przetwarzaniu języka naturalnego (NLP) o szerokim zastosowaniu, np. w analizie nastawienia, etykietowaniu tematów, wykrywaniu spamu i wykrywaniu intencji.
Analiza nastawienia to interpretacja i klasyfikacja emocji (pozytywnych, negatywnych i neutralnych) w danych tekstowych przy użyciu technik analizy tekstu. Analiza sentymentu umożliwia firmom określanie nastawienia klientów do produktów, marek lub usług w rozmowach i opiniach online.
Z tego samouczka dowiesz się, jak utworzyć model uczenia maszynowego do analizy nastawienia, a w szczególności do klasyfikowania tekstu jako pozytywnego lub negatywnego. Jest to przykład klasyfikacji binarnej, czyli dwuklasowej, która jest ważnym i powszechnie stosowanym rodzajem problemu uczenia maszynowego.
Czego się nauczysz
- Trenowanie modelu analizy nastawienia 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
- Wybieranie, który z wielu wdrożonych modeli ma być wczytywany za pomocą Zdalnej konfiguracji
- Eksperymentowanie z różnymi modelami za pomocą Testów A/B Firebase
Czego potrzebujesz
- Xcode 11 (lub nowszy)
- CocoaPods 1.9.1 lub nowszy
Jak zamierzasz wykorzystać ten samouczek?
Jak oceniasz swoje doświadczenie w tworzeniu aplikacji na Androida?
2. Tworzenie projektu w konsoli Firebase
Dodawanie Firebase do projektu
- Otwórz konsolę Firebase.
- Kliknij Utwórz nowy projekt i nadaj mu nazwę „Firebase ML iOS Codelab”.
3. Pobieranie przykładowego projektu
Pobieranie kodu
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 zainstalowanego narzędzia git, możesz też pobrać projekt przykładowy ze strony GitHub lub klikając ten link. Po pobraniu projektu uruchom go w Xcode i pobaw się klasyfikacją tekstu, aby zobaczyć, jak to działa.
Konfigurowanie Firebase
Aby utworzyć nowy projekt Firebase, postępuj zgodnie z dokumentacją. Po utworzeniu projektu pobierz z konsoli Firebase plik GoogleService-Info.plist
projektu i przeciągnij go do katalogu głównego projektu Xcode.
Dodaj Firebase do pliku Podfile i uruchom polecenie pod install.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
W metodzie AppDelegate
didFinishLaunchingWithOptions
zaimportuj Firebase na początku pliku.
import FirebaseCore
Dodaj wywołanie, aby skonfigurować Firebase.
FirebaseApp.configure()
Uruchom projekt ponownie, aby sprawdzić, czy aplikacja jest prawidłowo skonfigurowana i nie ulega awarii podczas uruchamiania.
4. Trenowanie modelu analizy nastawienia
Użyjemy narzędzia TensorFlow Lite Model Maker, aby wytrenować model klasyfikacji tekstu, który będzie prognozować nastawienie w danym tekście.
Ten krok jest przedstawiony jako notatnik w Pythonie, który możesz otworzyć w Google Colab.
Otwórz w Colab
Po wykonaniu tego kroku będziesz mieć model analizy sentymentu TensorFlow Lite gotowy do wdrożenia w aplikacji mobilnej.
5. Wdrażanie modelu w Firebase ML
Wdrażanie modelu w Firebase ML jest przydatne z 2 głównych powodów:
- Możemy zmniejszyć rozmiar instalacji aplikacji i pobierać model tylko w razie potrzeby.
- Model można regularnie aktualizować w innym cyklu wydawniczym niż cała aplikacja.
Model można wdrożyć w konsoli lub automatycznie za pomocą pakietu Firebase Admin SDK. W tym kroku wdrożymy aplikację za pomocą konsoli.
Najpierw otwórz konsolę Firebase i w panelu nawigacyjnym po lewej stronie kliknij Machine Learning. Jeśli otwierasz tę sekcję po raz pierwszy, kliknij „Rozpocznij”. Następnie przejdź do sekcji „Niestandardowe” i kliknij przycisk „Dodaj model”.
Gdy pojawi się odpowiedni komunikat, nadaj modelowi nazwę sentiment_analysis
i prześlij plik pobrany z Colab w poprzednim kroku.
6. Pobieranie modelu z Firebase ML
Wybór momentu pobrania modelu zdalnego z Firebase do aplikacji może być trudny, ponieważ modele TFLite mogą być stosunkowo duże. Najlepiej byłoby uniknąć wczytywania modelu od razu po uruchomieniu aplikacji, ponieważ jeśli nasz model jest używany tylko w jednej funkcji, a użytkownik nigdy z niej nie korzysta, pobierzemy znaczną ilość danych bez powodu. Możemy też ustawić opcje pobierania, np. pobieranie modeli tylko wtedy, gdy urządzenie jest połączone z Wi-Fi. Jeśli chcesz mieć pewność, że model będzie dostępny nawet bez połączenia z siecią, warto też dołączyć go bez aplikacji jako kopię zapasową.
Dla uproszczenia usuniemy domyślny model dołączony do pakietu i zawsze będziemy pobierać model z Firebase, gdy aplikacja zostanie uruchomiona po raz pierwszy. Dzięki temu podczas przeprowadzania analizy sentymentu możesz mieć pewność, że wnioskowanie jest przeprowadzane za pomocą modelu udostępnionego przez Firebase.
U góry pliku ModelLoader.swift
zaimportuj moduł Firebase.
import FirebaseCore import FirebaseMLModelDownloader
Następnie zastosuj te 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
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 }
Ponownie uruchom aplikację. Po kilku sekundach w Xcode powinien pojawić się dziennik wskazujący, że model zdalny został pobrany. Spróbuj wpisać 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ą zaledwie kilku wierszy kodu. Zainicjujemy instancję TFLNLClassifier
za pomocą modelu TensorFlow Lite pobranego z Firebase. Następnie użyjemy go do klasyfikowania tekstu wprowadzanego przez użytkowników aplikacji i wyświetlania wyniku w interfejsie.
Dodawanie zależności
Otwórz plik Podfile aplikacji i dodaj do zależności aplikacji bibliotekę zadań TensorFlow Lite (tekst). Upewnij się, że zależność została dodana 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ą funkcji 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 a TFLNLClassifier property.
Zastąp komentarz TODO tym kodem:
private var classifier: TFLNLClassifier?
Zainicjuj zmienną textClassifier
za pomocą modelu analizy sentymentu pobranego z Firebase. Znajdź ten komentarz dodany w ostatnim kroku:
// TODO: Initialize an NLClassifier from the downloaded model
Zastąp komentarz 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ę sentymentu 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. Uruchamianie gotowej 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 prawidłowo przewidywać nastawienie w opinii o filmie, którą wpiszesz.
9. Ulepszanie aplikacji za pomocą dodatkowych funkcji Firebase
Oprócz hostowania modeli TFLite Firebase udostępnia kilka innych funkcji, które usprawniają przypadki użycia uczenia maszynowego:
- Monitorowanie wydajności Firebase, aby mierzyć szybkość wnioskowania modelu na urządzeniach użytkowników.
- Firebase Analytics do pomiaru skuteczności modelu w środowisku produkcyjnym na podstawie reakcji użytkowników.
- Testy A/B Firebase do testowania wielu wersji modelu
- Pamiętasz, że wcześniej wytrenowaliśmy 2 wersje naszego modelu TFLite? Testy A/B to dobry sposób na sprawdzenie, która wersja jest skuteczniejsza w środowisku produkcyjnym.
Więcej informacji o tym, jak korzystać z tych funkcji w aplikacji, znajdziesz w tych samouczkach:
10. Gratulacje!
Z tych ćwiczeń z programowania dowiesz się, jak wytrenować model TFLite do analizy sentymentu i wdrożyć go w aplikacji mobilnej za pomocą Firebase. Więcej informacji o TFLite i Firebase znajdziesz w innych przykładach TFLite i w przewodnikach dla początkujących dotyczących Firebase.
Omówione zagadnienia
- TensorFlow Lite
- Firebase ML
Następne kroki
- Mierz szybkość wnioskowania modelu za pomocą Monitorowania wydajności Firebase.
- wdrażać model z Colab bezpośrednio w Firebase za pomocą interfejsu Firebase ML Model Management API;
- Dodaj mechanizm, który umożliwi użytkownikom przekazywanie opinii o wynikach prognozowania, i używaj Firebase Analytics do śledzenia opinii użytkowników.
- Przeprowadź test A/B modelu Average Word Vector i modelu MobileBERT za pomocą Testów A/B Firebase.
Więcej informacji
- Dokumentacja Firebase Machine Learning
- Dokumentacja TensorFlow Lite
- Pomiar skuteczności aplikacji za pomocą Firebase
- Testowanie modeli A/B za pomocą Firebase