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
- Trenuj modele analizy nastrojów TF Lite za pomocą TF Lite Model Maker
- Wdrażaj modele TF Lite w Firebase ML i uzyskuj do nich dostęp ze swojej aplikacji
- Zintegruj modele analizy nastrojów TF Lite ze swoją aplikacją za pomocą biblioteki zadań TF Lite
Co będziesz potrzebował
- Najnowsza wersja Androida Studio .
- Przykładowy kod.
- Urządzenie testowe z Androidem 5.0 lub nowszym i usługami Google Play 9.8 lub nowszymi lub Emulator z usługami Google Play 9.8 lub nowszymi
- Jeśli używasz urządzenia, kabel połączeniowy.
Jak będziesz korzystać z tego samouczka?
Jak oceniasz swoje doświadczenie w tworzeniu aplikacji na Androida?
2. Pobierz przykładowy kod
Sklonuj repozytorium GitHub z wiersza poleceń.
$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git
Jeśli nie masz zainstalowanego gita, możesz także pobrać przykładowy projekt ze strony GitHub lub klikając ten link .
3. Zaimportuj aplikację startową
W Android Studio wybierz katalog codelab-textclassification-android-master
( ) z przykładowego kodu do pobrania ( Plik > Otwórz > .../codelab-textclassification-Android-master/start).
Powinieneś teraz mieć otwarty projekt startowy w Android Studio.
4. Uruchom aplikację startową
Teraz, gdy zaimportowałeś projekt do Android Studio, możesz uruchomić aplikację po raz pierwszy. Podłącz urządzenie z Androidem i kliknij Uruchom ( ) na pasku narzędzi Android Studio.
Aplikacja powinna uruchomić się na Twoim urządzeniu. Zawiera jedynie prosty interfejs użytkownika, który ułatwia integrację i testowanie modeli klasyfikacji tekstu w kolejnych krokach. W tym momencie, jeśli spróbujesz przewidzieć nastroje, aplikacja zwróci tylko niektóre fikcyjne wyniki.
5. Utwórz projekt konsoli Firebase
Dodaj Firebase do projektu
- Przejdź do konsoli Firebase .
- Wybierz opcję Dodaj projekt .
- Wybierz lub wprowadź nazwę projektu.
- Wykonaj pozostałe kroki konfiguracji w konsoli Firebase, a następnie kliknij Utwórz projekt (lub Dodaj Firebase, jeśli używasz istniejącego projektu Google).
6. Dodaj Firebase do aplikacji
- Na ekranie przeglądu nowego projektu kliknij ikonę Androida, aby uruchomić proces konfiguracji.
- Wprowadź nazwę pakietu codelab:
org.tensorflow.lite.codelabs.textclassification
Dodaj plik google-services.json do swojej aplikacji
Po dodaniu nazwy pakietu i wybraniu opcji Zarejestruj** kliknij Pobierz plik google-services.json**, aby uzyskać plik konfiguracyjny Firebase dla systemu Android, a następnie skopiuj plik google-services.json
do katalogu * app
* w swoim projekcie.
Dodaj wtyczkę usług Google do swojej aplikacji
Postępuj zgodnie z instrukcjami w konsoli Firebase, aktualizując pliki build.gradle.kts
, aby dodać Firebase do swojej aplikacji.
Wtyczka google-services używa pliku google-services.json do skonfigurowania aplikacji do korzystania z Firebase.
Zsynchronizuj swój projekt z plikami gradle
Aby mieć pewność, że wszystkie zależności są dostępne dla Twojej aplikacji, powinieneś w tym momencie zsynchronizować swój projekt z plikami gradle. Wybierz opcję Plik > Synchronizuj projekt z plikami Gradle z paska narzędzi Android Studio.
7. Uruchom aplikację za pomocą Firebase
Teraz, gdy skonfigurowałeś wtyczkę google-services
za pomocą pliku JSON, możesz uruchomić aplikację w Firebase. Podłącz urządzenie z Androidem i kliknij Uruchom ( ) na pasku narzędzi Android Studio.
Aplikacja powinna uruchomić się na Twoim urządzeniu. W tym momencie Twoja aplikacja powinna nadal pomyślnie się kompilować.
8. 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. Możesz wybrać opcję Środowisko wykonawcze > Uruchom wszystko , aby uruchomić cały notatnik jednocześnie.
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.
9. 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.
10. 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.
W pliku app/build.gradle.kts
dodaj zależność Firebase Machine Learning.
app/build.gradle.kts
Znajdź ten komentarz:
// TODO 1: Add Firebase ML dependency
Następnie dodaj:
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Gdy Android Studio poprosi Cię o zsynchronizowanie projektu, wybierz opcję Synchronizuj teraz .
Następnie dodajmy trochę kodu, aby pobrać model z Firebase.
MainActivity.java
Znajdź ten komentarz:
// TODO 2: Implement a method to download TFLite model from Firebase
Następnie dodaj:
/** Download model from Firebase ML. */
private synchronized void downloadModel(String modelName) {
CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
.requireWifi()
.build();
FirebaseModelDownloader.getInstance()
.getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
.addOnSuccessListener(model -> {
try {
// TODO 6: Initialize a TextClassifier with the downloaded model
predictButton.setEnabled(true);
} catch (IOException e) {
Log.e(TAG, "Failed to initialize the model. ", e);
Toast.makeText(
MainActivity.this,
"Model initialization failed.",
Toast.LENGTH_LONG)
.show();
predictButton.setEnabled(false);
}
})
.addOnFailureListener(e -> {
Log.e(TAG, "Failed to download the model. ", e);
Toast.makeText(
MainActivity.this,
"Model download failed, please check your connection.",
Toast.LENGTH_LONG)
.show();
}
);
}
Następnie wywołaj metodę downloadModel
w metodzie onCreate
działania.
MainActivity.java
Znajdź ten komentarz:
// TODO 3: Call the method to download TFLite model
Następnie dodaj:
downloadModel("sentiment_analysis");
11. Zintegruj model ze swoją aplikacją
Biblioteka zadań Tensorflow Lite pomaga zintegrować modele TensorFlow Lite z aplikacją za pomocą zaledwie kilku wierszy kodu. Zainicjujemy instancję NLClassifier
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 Gradle aplikacji i dodaj bibliotekę zadań TensorFlow Lite (tekst) w zależnościach aplikacji.
app/build.gradle
Znajdź ten komentarz:
// TODO 4: Add TFLite Task API (Text) dependency
Następnie dodaj:
implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")
Gdy Android Studio poprosi Cię o zsynchronizowanie projektu, wybierz opcję Synchronizuj teraz .
Zainicjuj klasyfikator tekstu
Następnie załadujemy model analizy tonacji pobrany z Firebase za pomocą NLClassifier
biblioteki zadań.
MainActivity.java
Zadeklarujmy zmienną instancji NLClassifier. Znajdź ten komentarz:
// TODO 5: Define a NLClassifier variable
Następnie dodaj:
private NLClassifier textClassifier;
Zainicjuj zmienną textClassifier
za pomocą modelu analizy tonacji pobranego z Firebase. Znajdź ten komentarz:
// TODO 6: Initialize a TextClassifier with the downloaded model
Następnie dodaj:
textClassifier = NLClassifier.createFromFile(model.getFile());
Klasyfikuj tekst
Po skonfigurowaniu instancji textClassifier
można uruchomić analizę tonacji za pomocą jednego wywołania metody.
MainActivity.java
Znajdź ten komentarz:
// TODO 7: Run sentiment analysis on the input text
Następnie dodaj:
List<Category> results = textClassifier.classify(text);
Wdrażaj przetwarzanie końcowe
Na koniec przekonwertujemy dane wyjściowe modelu na tekst opisowy, który będzie wyświetlany na ekranie.
MainActivity.java
Znajdź ten komentarz:
// TODO 8: Convert the result to a human-readable text
Usuń kod generujący fikcyjny tekst wyniku:
String textToShow = "Dummy classification result.\n";
Następnie dodaj:
String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
Category result = results.get(i);
textToShow += String.format(" %s: %s\n", result.getLabel(),
result.getScore());
}
textToShow += "---------\n";
12. Uruchom ostateczną aplikację
Zintegrowałeś model analizy nastrojów z aplikacją, więc przetestujmy go. Podłącz urządzenie z Androidem i kliknij Uruchom ( ) na pasku narzędzi Android Studio.
Aplikacja powinna być w stanie poprawnie przewidzieć nastroje zawarte w recenzji filmu.
13. 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:
14. 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