1. Zanim zaczniesz
Z tego ćwiczenia w Codelabs dowiesz się, jak zaktualizować model klasyfikacji tekstu, który powstał na podstawie oryginalnego zbioru danych komentarzy dotyczących spamu na blogu, a został wzbogacony o własne komentarze. Dzięki temu będziesz mieć model działający z Twoimi danymi.
Wymagania wstępne
To ćwiczenie w Codelabs jest częścią ścieżki klasyfikacji tekstu Pierwsze kroki z tekstem mobilnym. Ćwiczenia z programowania w tej ścieżce działają po kolei. Aplikacja i model, nad którymi będziesz pracować, powinny zostać utworzone wcześniej, a następnie podążać za pierwszą ścieżką. Jeśli nie masz jeszcze ukończonych poprzednich modułów, przerwij je i zrób to teraz:
- Utwórz aplikację z podstawowym stylem przekazu
- Utwórz model systemów uczących się dotyczący spamu w komentarzach
- Zaktualizuj aplikację, aby używać modelu systemów uczących się do filtrowania spamu
Czego się nauczysz
- Jak zaktualizować model klasyfikacji tekstu utworzony na podstawie ścieżki klasyfikacji tekstu Pierwsze kroki ze ścieżką klasyfikacji tekstu mobilnego
- Jak dostosować model tak, aby blokował w aplikacji najczęściej występujący spam
Czego potrzebujesz
- Aplikacja do obsługi wiadomości i model filtrowania spamu zaobserwowany i wbudowany w ramach poprzednich działań.
2. Ulepsz klasyfikację tekstu
Aby uzyskać kod, sklonuj to repozytorium i wczytaj aplikację z TextClassificationStep2
. Możesz go znaleźć w ścieżce TextClassificationOnMobile->Android
.
Gotowy kod jest również dostępny dla Ciebie jako TextClassificationStep3
.
Jeśli otworzysz stworzoną przez siebie aplikację do obsługi wiadomości i wykonasz próbę wysłania takiej wiadomości, wynik będzie bardzo niski:
Tego typu błędy pisowni to częsty sposób na uniknięcie spamu przez filtry. Chociaż wiadomość jest nieszkodliwa, spamerzy często dodają link w identyfikatorze użytkownika (zamiast w samej wiadomości, ponieważ link może aktywować filtry).
W tym module dowiesz się, jak zaktualizować model, dodając nowe dane. Gdy skończysz, używając tego samego zdania, zobaczysz poniższy wynik, w którym ta wiadomość została zidentyfikowana jako spam.
3. Edytowanie pliku CSV
Aby wytrenować oryginalny model, utworzono zbiór danych w formacie CSV (lmblog_comments.csv
) zawierający prawie tysiąc komentarzy oznaczonych jako spam lub nie spam. (Aby sprawdzić plik CSV, otwórz go w dowolnym edytorze tekstu).
Plik CSV w pierwszym wierszu opisuje kolumny – tutaj są oznaczone etykietami commenttext
i spam
.
Każdy kolejny wiersz ma ten format:
Etykieta po prawej stronie oznacza, że spam jest spamem, a fałsz – nie spam. W tym przypadku wiersz 3 jest uznawany za spam.
Jeśli np. wiele osób zużywa Twoją witrynę z wiadomościami na temat handlu online, wystarczy, że dodasz przykłady komentarzy ze spamem u dołu strony. Na przykład:
online trading can be highly highly effective,true online trading can be highly effective,true online trading now,true online trading here,true online trading for the win,true
Gdy skończysz, zapisz plik pod nową nazwą (np. lmblog_comments.csv
). Będzie można go użyć do wytrenowania nowego modelu.
W pozostałej części tego ćwiczenia w Codelabs wykorzystasz przykład podany, zmodyfikowany i hostowany w Google Cloud Storage z aktualizacjami handlu online. Jeśli chcesz użyć własnego zbioru danych, możesz zmienić adres URL w kodzie.
4. Wytrenuj model z nowymi danymi
Aby wytrenować model ponownie, możesz jeszcze raz użyć kodu z wcześniejszego (SpamCommentsModelMaker.ipynb
) i wskazać w nim nowy zbiór danych CSV o nazwie lmblog_comments_extras.csv
. Jeśli chcesz zobaczyć pełny notatnik ze zaktualizowaną zawartością, znajdź go jako SpamCommentsUpdateModelMaker.ipynb.
Jeśli masz dostęp do Google Colab, możesz uruchomić tę usługę bezpośrednio tutaj. W przeciwnym razie pobierz kod z repozytorium i uruchom go w wybranym środowisku notatników.
Oto zaktualizowany kod:
training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',
origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
lmblog_comments_extras.csv',
extract=False)
Po zakończeniu trenowania model powinien być nadal trenowany z dużą dokładnością:
Przejdź do notatnika, aby pobrać pliki modelu,vocaba i etykiet. W następnym kroku zintegrujesz je z Androidem.
5. Zaktualizuj aplikację na Androida
- Otwórz aplikację w Android Studio i u góry eksploratora projektów wybierz Android.
- Znajdź plik
assets
zawierający etykiety, model i słownictwo ze starej wersji pliku z modelem.
- Kliknij prawym przyciskiem myszy folder zasobów.
- W menu wybierz opcję otwierania folderu w menedżerze plików systemu operacyjnego. (Wyświetl w Finderze na Macu, jak pokazano na ilustracji. W systemie Windows będzie to Pokaż w Eksploratorze, a w systemie Linux – Otwórz w Plikach.
- Spowoduje to otwarcie katalogu z modelem, słownictwem i etykietami w menedżerze plików systemu operacyjnego. Skopiuj do nich nowe komponenty utworzone w poprzednim kroku.
Nie musisz wprowadzać żadnych zmian w kodzie aplikacji. Uruchom go i przetestuj, a zobaczysz wyniki takie jak te powyżej, w których model został poprawiony pod kątem wykrywania „handlu online”. scenariuszy tekstowych.
Gotowa wersja kodu jest dostępna w repozytorium jako TextClassificationStep3.
6. Zaktualizuj aplikację na iOS
Aby uzyskać kod, sklonuj to repozytorium i wczytaj aplikację z TextClassificationStep2
. Możesz go znaleźć w ścieżce TextClassificationOnMobile->Android
.
Gotowy kod jest również dostępny dla Ciebie jako TextClassificationStep3
.
Jeśli udało Ci się wykonać poprzednie ćwiczenia z programowania, będziesz mieć wersję na iOS klasy TextClassificationStep2, która współpracuje z modelem podstawowym. Jeśli chcesz zacząć od istniejącej wersji, po prostu pobierz ją z repozytorium. Będzie działać z pierwszym modelem wytrenowanym na danych dotyczących spamu w komentarzach. Możesz zobaczyć takie wyniki:
Aktualizacja aplikacji pod kątem nowego modelu jest bardzo prosta. Najprostszym sposobem jest otwarcie eksploratora plików, pobranie nowych wersji model.tflite
, vocab
i labels.txt
i skopiowanie ich do katalogu projektu.
Gdy to zrobisz, aplikacja będzie działać z nowym modelem i możesz go wypróbować. Oto przykład tego samego zdania, ale z wykorzystaniem nowego modelu:
7. Gratulacje
Znakomicie. Dzięki ponownemu trenowaniu modelu z nowymi danymi i dodaniu go zarówno do aplikacji na Androida, jak i na iOS udało Ci się zaktualizować jego funkcje bez konieczności pisania nowego kodu.
Następne kroki
To tylko zabawka, wytrenowana na podstawie tylko 1000 elementów danych.
W miarę poznawania przetwarzania języka naturalnego warto pracować z większymi zbiorami danych. Możesz też skonfigurować potok ciągłego trenowania, dzięki czemu gdy nowe dane zostaną oznaczone jako spam, mogą automatycznie ponownie wytrenować model w backendzie, a potem wdrożyć go za pomocą Hostingu modeli Firebase.
Użytkownicy płynnie otrzymują zaktualizowany model bez konieczności kopiowania go i wklejania jako zasobu, a także rekompilacji i rozpowszechniania. Możesz też na przykład użyć Zdalnej konfiguracji Firebase do zarządzania wartością progową wysyłania spamu zamiast tej, która wynosi obecnie 0,8.
Możliwości jest mnóstwo. Omówimy je w kolejnych modułach tego kursu.