Özel metin sınıflandırma modeli oluşturup uygulamalarınızı bu modelle güncelleyin

1. Başlamadan önce

Bu codelab'de, orijinal blog spam yorumları veri kümesinden derlenen ve kendi yorumlarınızla geliştirilmiş metin sınıflandırma modelini güncellemeyi öğreneceksiniz. Bu sayede verilerinizle çalışan bir modele sahip olabilirsiniz.

Ön koşullar

Bu codelab, "Mobil metin sınıflandırmaya başlayın" yolunun bir parçasıdır. Bu yoldaki codelab'ler sıralıdır. Üzerinde çalışacağınız uygulama ve model, siz ilk yolu izlediğiniz sırada daha önce oluşturulmuş olmalıdır. Önceki etkinlikleri henüz tamamlamadıysanız lütfen durun ve işlemi tamamlayın:

  • Temel mesajlaşma stili uygulaması geliştirme
  • Yorum spam'i makine öğrenimi modeli oluşturma
  • Uygulamanızı spam filtreleme Makine Öğrenimi modeli kullanacak şekilde güncelleme

Neler öğreneceksiniz?

  • "Mobil metin sınıflandırmaya başlayın" yolunda oluşturduğunuz metin sınıflandırma modelini güncelleme
  • Modelinizi, uygulamanızda en sık karşılaşılan spam'leri engelleyecek şekilde özelleştirme

Gerekenler

  • Önceki etkinliklerde gözlemlediğiniz ve oluşturduğunuz mesajlaşma uygulaması ve spam filtreleme modeli.

2. Metin sınıflandırmasını iyileştirin

Bunun kodunu, bu depoyu klonlayıp TextClassificationStep2 üzerinde uygulamayı yükleyerek alabilirsiniz. Bu adı TextClassificationOnMobile->Android yolunda bulabilirsiniz.

Tamamlanmış kodu TextClassificationStep3 olarak da kullanabilirsiniz.

Oluşturduğunuz mesajlaşma uygulamasını açıp bu mesajı denerseniz çok düşük bir spam puanı alırsınız:

f111e21903d6fd1f.png

Bunun gibi yazım hataları spam filtrelerinden kaçınmanın yaygın bir yoludur. İleti zararsız olsa da, spam yapanlar genellikle kullanıcı kimliğine bir bağlantı ekler (bağlantıya sahip olmak filtreleri tetikleyebileceği için iletinin kendisi yerine).

Bu laboratuvarda, modeli yeni verilerle nasıl güncelleyeceğinizi öğreneceksiniz. İşiniz bittiğinde aynı cümleyle çalıştırmanız aşağıdaki sonucu verir ve bu ileti spam olarak tanımlanır!

c96613a0a4d1fef0.png

3. CSV dosyanızı düzenleme

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

CSV'nin yapısı gereği, ilk satırda sütunlar açıklanmıştır. Burada sütunlar commenttext ve spam olarak etiketlenir.

Sonraki her satır aşağıdaki biçimi kullanır:

64c0128548e1d082.png

Sağdaki etiket spam için "doğru", spam değil için "yanlış" değerini alır. Bu durumda, 3. satır spam olarak kabul edilir.

Kendi yorumlarınızı eklemek için, örneğin, sitenize online ticaretle ilgili mesajlar içeren spam gönderen birçok kullanıcı varsa, tek yapmanız gereken sitenizin alt kısmına spam yorum örnekleri eklemektir. Ö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

İşiniz bittiğinde dosyayı yeni bir adla (örneğin, lmblog_comments.csv) kaydedin. Yeni bir model eğitmek için dosyayı kullanabilirsiniz.

Bu codelab'in geri kalanında, online işlem güncellemeleriyle birlikte Google 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 önceki kodu (SpamCommentsModelMaker.ipynb) yeniden kullanarak modeli lmblog_comments_extras.csv adlı yeni CSV veri kümesine yönlendirebilirsiniz. Güncellenmiş içeriklere sahip not defterinin tamamını görmek isterseniz not defterini SpamCommentsUpdateModelMaker.ipynb. olarak bulabilirsiniz.

Google Colab'e erişebiliyorsanız doğrudan buradan başlatabilirsiniz. Aksi takdirde kodu depodan alıp istediğiniz not defteri ortamında çalıştırabilirsiniz.

Güncellenen kod aşağıda verilmiştir:

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ğittiğinizde, modelin yine de yüksek düzeyde doğrulukla eğitileceğini görürsünüz:

8886033d1f8161c.png

Model, vocab ve labels dosyalarını indirmek için not defterindeki adımları uygulayın. Sonraki adımda bunları Android'e entegre edeceksiniz.

5. Android Uygulamanızı güncelleyin

  1. Uygulamayı Android Studio'da açın ve proje gezgininin üst kısmında Android'in seçili olduğundan emin olun.
  2. Model dosyasının eski sürümündeki etiketleri, modeli ve kelimeyi içeren assets dosyanızı bulun.

91116524e9016ed4.png

  1. Öğeler klasörünü sağ tıklayın.
  2. Menüde klasörü işletim sisteminizin dosya yöneticisiyle açma seçeneğini belirleyin. (Gösterildiği gibi, Mac'teki Finder'da göster. Windows'da Gezgin'de Göster, Linux'ta ise Dosyalarda Aç veya benzer bir ayar yapılır.)

25f63f9629657e85.png

  1. Bu işlem, işletim sisteminizin dosya yöneticisinde modeli, sözlüğü ve etiketleri içeren dizini açar. Önceki adımda oluşturduğunuz yenileri bunların üzerine kopyalayın.

Uygulamanızdaki kodda herhangi bir değişiklik yapmanız gerekmez. Çalıştırıp test ettiğinizde modelin "online ticareti" algılayacak şekilde iyileştirildiği yukarıdaki gibi sonuçlar göreceksiniz. metin senaryosu.

Kodun tamamlanmış bir sürümü, depoda TextClassificationStep3 olarak bulunmaktadır.

6. iOS uygulamanızı güncelleyin

Bunun kodunu, bu depoyu klonlayıp TextClassificationStep2 üzerinde uygulamayı yükleyerek alabilirsiniz. Bu adı TextClassificationOnMobile->Android yolunda bulabilirsiniz.

Tamamlanmış kodu TextClassificationStep3 olarak da kullanabilirsiniz.

Önceki codelab'i tamamladıysanız TextClassificationStep2'nin temel modelle çalışan bir iOS sürümüne sahip olacaksınız. Mevcut sürümümüzden başlamak isterseniz depodan bunu alabilirsiniz. Bu model, yorum spam'i verileri üzerinde eğitilen ilk modelle çalıştığından aşağıdaki gibi sonuçlar görebilirsiniz:

553b845565b5b822.png

Uygulamayı yeni modelinizi kullanacak şekilde güncellemek çok basit bir işlemdir. En kolay yol, dosya gezgininize gidip model.tflite, vocab ve labels.txt sürümlerinin yeni sürümlerini edinmek ve bunları proje dizininize kopyalamaktır.

Bunu yaptıktan sonra uygulamanız yeni modelle çalışacak ve siz de deneyebilirsiniz. Yeni model kullanılarak aynı cümlenin örneğini aşağıda bulabilirsiniz:

9031ec260b1857a3.png

7. Tebrikler

İşte bu kadar. Modeli yeni verilerle yeniden eğitip Android ve iOS uygulamalarınıza ekleyerek yeni kod yazmadan işlevlerini güncelleyebildiniz.

Sonraki Adımlar

Bu model yalnızca 1.000 veri öğesi kullanılarak eğitilmiş sadece bir oyuncaktır.

Doğal dil işlemeyi keşfederken daha büyük veri kümeleriyle çalışmak isteyebilirsiniz. Sürekli bir eğitim ardışık düzeni de oluşturabilirsiniz. Böylece yeni veriler geldiğinde ve spam olarak işaretlendiğinde, model arka uçta bir modeli otomatik olarak yeniden eğitebilir ve ardından bu modeli Firebase Model Hosting'i kullanarak dağıtabilir.

Kullanıcılarınız, kopyalayıp öğe olarak yapıştırmanıza, yeniden derlemenize ve yeniden dağıtmanıza gerek kalmadan güncellenmiş bir modeli sorunsuz bir şekilde alır. Örneğin, spam gönderme eşiği değerini yönetmek için şu anda sahip olduğunuz 0,8 yerine Firebase Remote Config'i kullanabilirsiniz.

Çok fazla olasılık var ve bunları bu kursun ilerideki codelab'lerinde inceleyeceğiz.