Ö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'i yorumları 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 modeliniz olacak.

Ön koşullar

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

  • Temel bir mesajlaşma stili uygulaması oluşturma
  • Spam yorum için makine öğrenimi modeli oluşturma
  • Uygulamanızı, spam filtreleme için makine öğrenimi modeli kullanacak şekilde güncelleyin

Neler öğreneceksiniz?

  • Mobil metin sınıflandırmayı kullanmaya başlama yolunda oluşturduğunuz metin sınıflandırma modelini güncelleme
  • Modelinizi, uygulamanızdaki en yaygın spam'i engelleyecek şekilde özelleştirme

İhtiyacınız olanlar

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

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

Bunun kodunu almak için bu depoyu klonlayıp uygulamayı TextClassificationStep2 konumundan yükleyin. Bu bilgiyi TextClassificationOnMobile->Android yolunda bulabilirsiniz.

Tamamlanmış kod, TextClassificationStep3 olarak da kullanılabilir.

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

f111e21903d6fd1f.png

Bu tür yazım hataları, spam filtrelerinden kaçınmak için yaygın olarak kullanılır. Bu mesaj zararsız olsa da spam gönderenler genellikle kullanıcı kimliğine (filtreleri tetikleyebileceği için mesajın kendisine değil) bir bağlantı ekler.

Bu laboratuvarda, modeli yeni verilerle nasıl güncelleyeceğinizi öğreneceksiniz. İşlemi tamamladığınızda aynı cümleyi kullanarak aşağıdaki sonucu elde edersiniz. Bu sonuçta, mesaj spam olarak tanımlanır.

c96613a0a4d1fef0.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'nin yapısı, ilk satırın sütunları tanımlaması şeklindedir. Burada sütunlar commenttext ve spam olarak etiketlenmiştir.

Sonraki her satır şu biçimde olmalıdır:

64c0128548e1d082.png

Sağdaki etiket, spam için doğru, spam olmayanlar için yanlıştır. Bu durumda 3. satır spam olarak kabul edilir.

Örneğin, sitenize internet üzerinden ticaretle ilgili mesajlar göndererek spam yapan çok sayıda kullanıcı varsa kendi yorumlarınızı eklemek için spam yorum örneklerini sitenizin en altına eklemeniz yeterlidir. Ö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. Bu dosyayı yeni bir model eğitmek için kullanabilirsiniz.

Bu codelab'in geri kalanında, sağlanan örneği kullanacak, düzenleyecek ve Google Cloud Storage'da online ticaret güncellemeleriyle birlikte barındıracaksı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 kullanabilir ancak 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.

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

Güncellenen kodu aşağıda bulabilirsiniz:

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 yaptığınızda modelin yüksek doğruluk düzeyinde eğitim almaya devam ettiğini görürsünüz:

8886033d1f8161c.png

Model, vocab ve etiket dosyalarını indirmek için not defterini inceleyin. Bir sonraki adımda bunları Android'e entegre edeceksiniz.

5. Android uygulamanızı güncelleme

  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 kelime dağarcığını 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'te Finder'da Göster'i tıklayın. Windows'da Gezgin'de göster, Linux'ta ise Dosyalar'da aç veya benzer bir seçenek gösterilir.)

25f63f9629657e85.png

  1. Bu işlem, model, kelime listesi ve etiketleri içeren dizini işletim sisteminizin dosya yöneticisinde açar. Önceki adımda oluşturduğunuz yeni olanları bunların üzerine kopyalayın.

Uygulamanızdaki kodda herhangi bir değişiklik yapmanız gerekmez. Kodu uygulayıp test ettiğinizde, yukarıdakilere benzer sonuçlar görürsünüz. Bu sonuçlarda, modelin "online ticaret" metin senaryosunu algılayacak şekilde iyileştirildiği görülür.

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

6. iOS uygulamanızı güncelleme

Bunun kodunu almak için bu depoyu klonlayıp uygulamayı TextClassificationStep2 konumundan yükleyin. Bu bilgiyi TextClassificationOnMobile->Android yolunda bulabilirsiniz.

Tamamlanmış kod, TextClassificationStep3 olarak da kullanılabilir.

Önceki codelab'i tamamladıysanız TextClassificationStep2'nin temel modelle çalışan bir iOS sürümüne sahip olursunuz. Mevcut sürümümüzden başlamak istiyorsanız depodan bu sürümü almanız yeterlidir. Bu model, spam yorum verileriyle eğitilen ilk modelle birlikte çalışır ve aşağıdaki gibi sonuçlar görebilirsiniz:

553b845565b5b822.png

Uygulamayı yeni modelinizi kullanacak şekilde güncellemek çok kolaydır. En kolay yöntem, dosya gezgininize gidip model.tflite, vocab ve labels.txt'nin yeni sürümlerini alıp proje dizininize kopyalamaktır.

Bu işlemi tamamladığınızda uygulamanız yeni modelle çalışır ve uygulamayı deneyebilirsiniz. Aynı cümlenin yeni model kullanılarak oluşturulmuş örneğini aşağıda bulabilirsiniz:

9031ec260b1857a3.png

7. Tebrikler

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

Sonraki Adımlar

Bu model, yalnızca 1.000 veri öğesiyle eğitilmiş bir oyuncak modeldir.

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

Kullanıcılarınız, güncellenen modeli sorunsuz bir şekilde alır. Sizin bunu öğe olarak kopyalayıp yapıştırmanız, yeniden derlemeniz ve yeniden dağıtmanız gerekmez. Örneğin, şu anda kullandığınız 0,8 yerine spam gönderme eşik değerini yönetmek için Firebase Remote Config'i de kullanabilirsiniz.

Bu kurstaki gelecekteki kod laboratuvarlarında bu olasılıkları keşfedeceğiz.