Tworzenie niestandardowego modelu klasyfikacji tekstu za pomocą Kreatora modeli TensorFlow Lite
Informacje o tym ćwiczeniu (w Codelabs)
1. Zanim zaczniesz
Z tego ćwiczenia dowiesz się, jak zaktualizować model klasyfikacji tekstu utworzony na podstawie oryginalnego zbioru danych ze spamem na blogu, ale z uwzględnieniem własnych komentarzy, aby model mógł działać z Twoimi danymi.
Wymagania wstępne
Ćwiczenia z programowania są częścią pierwszej klasyfikacji tekstu w ścieżce aplikacji Flutter. Ćwiczenia z programowania są wykonywane po kolei. Aplikacja i model, nad którym będziesz pracować, powinny być kompilowane wcześniej, gdy będziesz kontynuować ćwiczenia z programowania. Jeśli poprzednie działania nie zostały jeszcze przez Ciebie wykonane, zatrzymaj je i wykonaj te czynności:
- Wytrenuj model wykrywania spamu w komentarzach dzięki ćwiczeniom z programowania TensorFlow Lite Kreator modeli
- Tworzenie aplikacji Flutter do wykrywania ćwiczeń z programowania
Czego się nauczysz
- Jak zaktualizować model klasyfikacji tekstu utworzony w ramach ćwiczenia wykrywania modelu publikowania spamu w komentarzach przy użyciu narzędzia TensorFlow Lite Kreator modeli.
- Jak dostosować model, by blokować najczęściej spotykany spam w Twojej aplikacji.
Czego potrzebujesz
- zaobserwowane i utworzone w poprzednich działaniach modele Flutter oraz model filtra spamu.
2. Poprawianie klasyfikacji tekstu
- Aby pobrać kod tego kodu, skopiuj to repozytorium i wczytaj aplikację z folderu
tfserving-flutter/codelab2/finished
. - Po rozpoczęciu wyświetlania obrazu Dockera w TensorFlow (w utworzonej aplikacji) wpisz
buy my book to learn online trading
, a następnie kliknij gRPC > Classify.
Aplikacja generuje niski wynik spamu, ponieważ w pierwotnym zbiorze danych nie występuje wiele wystąpień handlu online, a model nie odkrył, że jest to spam. W ramach ćwiczeń z programowania aktualizujesz model o nowe dane, dzięki czemu model rozpoznaje to samo zdanie jako spam.
3. Edytowanie pliku CSV
Aby wytrenować pierwotny model, zbiór danych został utworzony w pliku CSV (lmblog_comments.csv
) zawierającym niemal tysiąc komentarzy oznaczonych jako spam lub nie. Jeśli chcesz sprawdzić plik CSV, otwórz go w dowolnym edytorze tekstu.
Struktura pliku CSV powinna zawierać pierwszy wiersz z kolumnami o nazwach commenttext
i spam
. Każdy kolejny wiersz ma następujący format:
Etykieta z prawej strony ma przypisaną wartość true
dla spamu i false
dla spamu. Na przykład trzeci wiersz jest uznawany za spam.
Jeśli ktoś spamuje Twoją witrynę wiadomościami o handlu online, możesz dodać przykłady komentarzy u dołu witryny. 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
- Zapisz plik pod nową nazwą, na przykład
lmblog_comments.csv
, aby móc go wykorzystać do wytrenowania nowego modelu.
W pozostałej części tego ćwiczenia wykorzystasz przykładowy, udostępniony i zmodyfikowany przykładowy kod, który będzie hostowany w Cloud Storage z aktualizacjami handlu online. Jeśli chcesz użyć własnego zbioru danych, możesz zmienić adres URL w kodzie.
4. Naucz ponownie modelu z nowymi danymi
Aby ponownie wytrenować model, możesz ponownie wykorzystać kod z obiektu (SpamCommentsModelMaker.ipynb
), ale wskazać go w nowym zbiorze danych CSV o nazwie lmblog_comments_extras.csv
. Jeśli chcesz mieć pełne notatki ze zaktualizowaną treścią, możesz je znaleźć jako SpamCommentsUpdateModelMaker.ipynb.
Jeśli masz dostęp do Colaboratory, możesz uruchomić go bezpośrednio. W przeciwnym razie pobierz kod z repozytorium, a następnie uruchom go w wybranym środowisku notatek.
Zaktualizowany kod wygląda tak:
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)
Gdy zaczniesz trenować, zauważysz, że model nadal trenuje z wysoką dokładnością:
Skompresuj cały folder /mm_update_spam_savedmodel
w dół wygenerowanego pliku mm_update_spam_savedmodel.zip
.
# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/
5. Uruchom Dockera i zaktualizuj aplikację Flutter
- Rozpakuj pobrany plik
mm_update_spam_savedmodel.zip
do folderu, a następnie zatrzymaj instancję kontenera Dockera z poprzedniego ćwiczenia z programowania i uruchom je ponownie, zastępując fragmentPATH/TO/UPDATE/SAVEDMODEL
bezwzględną ścieżką folderu, w którym znajdują się pobrane pliki:
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
- Otwórz plik
lib/main.dart
w ulubionym edytorze kodu, a potem znajdź część, która określa zmienneinputTensorName
ioutTensorName
:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- Przypisz zmienną
inputTensorName
do wartości „input_1'
”, a zmiennaoutputTensorName
do wartości'dense_1'
:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- Skopiuj pobrany plik
vocab.txt
do folderulib/assets/
, aby zastąpić istniejący. - Ręcznie usuń aplikację Flutter Classification Text z emulatora Androida.
- Uruchom polecenie
'flutter run'
w terminalu, aby uruchomić aplikację. - W aplikacji wpisz
buy my book to learn online trading
i kliknij gRPC > Classify.
Teraz ulepszony model wykrywa spam mojej książki w handlu online jako spam.
6. Gratulacje
Przeszkolono model o nowe dane, zintegrowałeś go z aplikacją Flutter i zaktualizowaliśmy funkcję wykrywania nowych zdań ze spamem.