Tworzenie niestandardowego modelu klasyfikacji tekstu za pomocą Kreatora modeli TensorFlow Lite

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:

Czego się nauczysz

Czego potrzebujesz

  • zaobserwowane i utworzone w poprzednich działaniach modele Flutter oraz model filtra spamu.

2. Poprawianie klasyfikacji tekstu

  1. Aby pobrać kod tego kodu, skopiuj to repozytorium i wczytaj aplikację z folderu tfserving-flutter/codelab2/finished.
  2. 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.

8F1E1974522f274d.png

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.

2bd68691a26aa3da.png

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:

62025273971c9a7f.png

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ą:

96a1547ddb6edf5b.png

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

  1. 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 fragment PATH/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
  1. Otwórz plik lib/main.dart w ulubionym edytorze kodu, a potem znajdź część, która określa zmienne inputTensorName i outTensorName:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. Przypisz zmienną inputTensorName do wartości „input_1'”, a zmienna outputTensorName do wartości 'dense_1':
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. Skopiuj pobrany plik vocab.txt do folderu lib/assets/, aby zastąpić istniejący.
  2. Ręcznie usuń aplikację Flutter Classification Text z emulatora Androida.
  3. Uruchom polecenie 'flutter run' w terminalu, aby uruchomić aplikację.
  4. 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.

Więcej informacji