TensorFlow Lite Model Maker ile özel metin sınıflandırma modeli oluşturma

1. Başlamadan önce

Bu codelab'de, orijinal blog-spam-comments veri kümesinden oluşturulan ancak kendi yorumlarınızla geliştirilen metin sınıflandırma modelini nasıl güncelleyeceğinizi öğreneceksiniz. Böylece, verilerinizle çalışan bir model elde edebilirsiniz.

Ön koşullar

Bu codelab, Flutter uygulamalarında metin sınıflandırmayı kullanmaya başlama yolunun bir parçasıdır. Bu rotadaki codelab'ler sıralıdır. Üzerinde çalışacağınız uygulama ve model, codelab'leri takip ederken daha önce oluşturulmuş olmalıdır. Önceki etkinlikleri henüz tamamlamadıysanız lütfen durup şimdi tamamlayın:

Neler öğreneceksiniz?

İhtiyacınız olanlar

  • Önceki etkinliklerde gözlemlediğiniz ve oluşturduğunuz Flutter uygulaması ve spam filtresi modeli.

2. Metin sınıflandırmayı geliştirme

  1. Bu kodun kodunu almak için bu depoyu klonlayıp uygulamayı tfserving-flutter/codelab2/finished klasöründen yükleyebilirsiniz.
  2. TensorFlow Serving Docker görüntüsünü başlattıktan sonra oluşturduğunuz uygulamada buy my book to learn online trading girin ve gRPC > Classify'ı (Sınıflandır) tıklayın.

8f1e1974522f274d.png

Uygulama, orijinal veri kümesinde online ticaret çok fazla geçmediği ve model bunun spam olduğunu öğrenmediği için düşük bir spam puanı oluşturuyor. Bu codelab'de, modeli yeni verilerle güncelleyerek aynı cümleyi spam olarak tanımlamasını sağlayacaksınız.

2bd68691a26aa3da.png

3. CSV dosyanızı düzenleme

Orijinal modeli eğitmek için CSV (lmblog_comments.csv) olarak bir veri kümesi oluşturuldu. Bu veri kümesi, spam veya spam değil olarak etiketlenmiş yaklaşık bin yorum içeriyordu. (İncelemek isterseniz CSV dosyasını herhangi bir metin düzenleyicide açın.)

CSV dosyasının yapısında, ilk satırda commenttext ve spam olarak etiketlenen sütunlar açıklanır. Sonraki her satır şu biçimde olmalıdır:

62025273971c9a7f.png

Sağdaki etikete spam için true değeri, spam değil için false değeri atanır. Örneğin, üçüncü satır spam olarak değerlendirilir.

Kullanıcılar, web sitenizi online ticaretle ilgili mesajlarla spam'liyorlarsa web sitenizin en altına spam yorum örnekleri ekleyebilirsiniz. Örneğin:

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
  • Dosyayı yeni bir adla (ör. lmblog_comments.csv) kaydedin. Böylece, yeni bir modeli eğitmek için bu dosyayı kullanabilirsiniz.

Bu codelab'in geri kalanında, online ticaret güncellemeleriyle birlikte Cloud Storage'da sağlanan, düzenlenen ve barındırılan örneği kullanacaksınız. Kendi veri kümenizi kullanmak istiyorsanız koddaki URL'yi değiştirebilirsiniz.

4. Modeli yeni verilerle yeniden eğitme

Modeli yeniden eğitmek için (SpamCommentsModelMaker.ipynb) adresindeki kodu yeniden kullanabilir ancak bu kodu lmblog_comments_extras.csv adlı yeni CSV veri kümesine yönlendirebilirsiniz. Güncellenmiş içeriklerin yer aldığı not defterinin tamamını SpamCommentsUpdateModelMaker.ipynb. olarak bulabilirsiniz.

Colaboratory'ye erişiminiz varsa doğrudan başlatabilirsiniz. Aksi takdirde, kodu depodan alın ve tercih ettiğiniz not defteri ortamında çalıştırın.

Güncellenen kod, aşağıdaki kod snippet'ine benzer:

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)

Eğitim sırasında modelin yüksek doğruluk düzeyinde eğitilmeye devam ettiğini görmelisiniz:

96a1547ddb6edf5b.png

/mm_update_spam_savedmodel klasörünün tamamını sıkıştırın ve oluşturulan mm_update_spam_savedmodel.zip dosyasını indirin.

# 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. Docker'ı başlatın ve Flutter uygulamanızı güncelleyin

  1. İndirilen mm_update_spam_savedmodel.zip dosyasını bir klasöre çıkartın, ardından önceki codelab'deki Docker kapsayıcı örneğini durdurup tekrar başlatın ancak PATH/TO/UPDATE/SAVEDMODEL yer tutucusunu, indirilen dosyalarınızı barındıran klasörün mutlak yoluyla değiştirin:
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. lib/main.dart dosyasını en sevdiğiniz kod düzenleyiciyle açın ve inputTensorName ile outTensorName değişkenlerini tanımlayan bölümü bulun:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. inputTensorName değişkenini "input_1'" değerine, outputTensorName değişkenini ise 'dense_1' değerine yeniden atayın:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. İndirdiğiniz vocab.txt dosyasını, mevcut olanın yerine lib/assets/ klasörüne kopyalayın.
  2. Text Classification Flutter uygulamasını Android emülatöründen manuel olarak kaldırın.
  3. Uygulamayı başlatmak için terminalinizde 'flutter run' komutunu çalıştırın.
  4. Uygulamada buy my book to learn online trading yazın ve gRPC > Classify'ı (gRPC > Sınıflandır) tıklayın.

Model artık kitabımı satın alarak online ticarete başla gibi ifadeleri spam olarak algılayacak şekilde geliştirildi.

6. Tebrikler

Modeli yeni verilerle yeniden eğittiniz, Flutter uygulamasıyla entegre ettiniz ve yeni spam cümleleri algılayacak şekilde işlevselliğini güncellediniz.

Daha fazla bilgi