TensorFlow Lite ve Firebase - Android Codelab ile uygulamanıza cihaz üzerinde metin sınıflandırma ekleyin

1. Genel Bakış

text-classification-result.png

TensorFlow Lite ve Firebase codelab'i ile Metin Sınıflandırma'ya hoş geldiniz. Bu codelab'de, bir metin sınıflandırma modelini eğitmek ve uygulamanıza dağıtmak için TensorFlow Lite ve Firebase'i nasıl kullanacağınızı öğreneceksiniz. Bu codelab, bu TensorFlow Lite örneğine dayanır.

Metin sınıflandırması, metne içeriğine göre etiket veya kategori atama işlemidir. Yaklaşım analizi, konu etiketleme, spam algılama ve amaç algılama gibi geniş kapsamlı uygulamalarla, doğal dil işleme (NLP) için temel görevlerden biridir.

Duygu analizi, metin analizi teknikleri kullanılarak metin verilerindeki duyguların (olumlu, olumsuz ve nötr) yorumlanması ve sınıflandırılmasıdır. Duygu analizi, işletmelerin online sohbetlerde ve geri bildirimlerde müşterilere göre ürün, marka veya hizmetlere yönelik duyguları belirlemesine olanak tanır.

Bu eğitimde, yaklaşım analizi için, özellikle de metni pozitif veya negatif olarak sınıflandırmak için nasıl bir makine öğrenimi modeli oluşturulacağı açıklanmaktadır. Bu, önemli ve geniş çapta uygulanabilir bir makine öğrenimi problemi türü olan ikili (veya iki sınıflı) sınıflandırmaya örnektir.

Neler öğreneceksiniz?

  • TF Lite Model Maker ile TF Lite yaklaşım analizi modelleri eğitme
  • TF Lite modellerini Firebase ML'ye dağıtma ve uygulamanızdan bunlara erişme
  • TF Lite Görev Kitaplığı'nı kullanarak TF Lite yaklaşım analizi modellerini uygulamanıza entegre etme

Gerekenler

  • En son Android Studio sürümü.
  • Örnek kod.
  • Android 5.0 veya sonraki sürümlerin ve Google Play Hizmetleri 9.8 veya sonraki sürümlerin yüklü olduğu bir test cihazı ya da Google Play Hizmetleri 9.8 veya sonraki sürümlerin yüklü olduğu bir Emulator
  • Cihaz kullanıyorsanız bağlantı kablosu.

Bu eğiticiden nasıl yararlanacaksınız?

Yalnızca okuyun Okuyup alıştırmaları tamamlayın

Android uygulamaları geliştirme deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Örnek kodu alın

GitHub deposunu komut satırından kopyalayın.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

Git yüklü değilse örnek projeyi GitHub sayfasından veya bu bağlantıyı tıklayarak da indirebilirsiniz.

3. Başlangıç uygulamasını içe aktarma

Android Studio'da, örnek kod indirme bölümünden codelab-textclassification-android-master dizinini (android_studio_folder.png) seçin (Dosya > > .../codelab-textclassification-android-master/start).

Artık Android Studio'da başlangıç projesi açık olmalıdır.

4. Başlangıç uygulamasını çalıştırma

Projeyi Android Studio'ya içe aktardığınıza göre uygulamayı ilk kez çalıştırmaya hazırsınız. Android cihazınızı bağlayıp Android Studio araç çubuğunda Çalıştır'ı ( yürütme.png ) tıklayın.

Uygulama, cihazınızda başlatılır. Yalnızca sonraki adımlarda metin sınıflandırma modellerini entegre etmeyi ve test etmeyi kolaylaştıran basit bir kullanıcı arayüzü içerir. Bu noktada yaklaşımları tahmin etmeye çalışırsanız uygulama yalnızca bazı model sonuçlar döndürür.

2fb4e69fafb2e3ed.png

5. Firebase konsol projesi oluşturun

Firebase'i projeye ekleyin

  1. Firebase konsoluna gidin.
  2. Proje ekle'yi seçin.
  3. Bir proje adı seçin veya girin.
  4. Firebase konsolunda kalan kurulum adımlarını uygulayın, ardından Proje oluştur'u (veya mevcut bir Google projesini kullanıyorsanız Firebase'i Ekle'yi) tıklayın.

6. Firebase'i uygulamaya ekleyin

  1. Kurulum iş akışını başlatmak için yeni projenizin genel bakış ekranından Android simgesini tıklayın.
  2. Codelab'in paket adını girin: org.tensorflow.lite.codelabs.textclassification

Uygulamanıza google-services.json dosyasını ekleyin

Paket adını ekleyip Kaydol**'u seçtikten sonra İndir google-services.json** öğesini tıklayarak Firebase Android yapılandırma dosyanızı alın, ardından google-services.json dosyasını projenizdeki *app* dizinine kopyalayın.

Uygulamanıza google-services eklentisini ekleme

Firebase'i uygulamanıza eklemek için build.gradle.kts dosyalarını güncellemeyle ilgili Firebase Konsolu'ndaki talimatları uygulayın.

Google-services eklentisi, uygulamanızı Firebase'i kullanacak şekilde yapılandırmak için google-services.json dosyasını kullanır.

Projenizi Gradle dosyalarıyla senkronize etme

Tüm bağımlılıkların uygulamanızda kullanılabildiğinden emin olmak için bu noktada projenizi gradle dosyalarıyla senkronize etmeniz gerekir. Android Studio araç çubuğundan Dosya > Projeyi Gradle Dosyalarıyla Senkronize Et'i seçin.

7. Uygulamayı Firebase ile çalıştırma

google-services eklentisini JSON dosyanızla yapılandırdığınıza göre uygulamayı Firebase ile çalıştırmaya hazırsınız. Android cihazınızı bağlayın ve Android Studio araç çubuğunda Çalıştır'ı ( yürütme.png) tıklayın.

Uygulama, cihazınızda başlatılır. Bu noktada, uygulamanız başarılı bir şekilde oluşturulmaya devam edecektir.

8. Yaklaşım analizi modeli eğitme

Belirli bir metnin yaklaşımını tahmin etmek amacıyla metin sınıflandırma modelini eğitmek için TensorFlow Lite Model Maker'ı kullanacağız.

Bu adım, Google Colab'da açabileceğiniz bir Python not defteri olarak sunulur. Not defterinin tamamını tek seferde yürütmek için Çalışma zamanı > Tümünü çalıştır'ı seçebilirsiniz.

Colab'de aç

Bu adımı tamamladıktan sonra, mobil uygulamaya dağıtılmaya hazır bir TensorFlow Lite duygu analizi modeliniz olur.

9. Firebase ML'ye model dağıtma

Bir modelin Firebase ML'ye dağıtılması iki ana nedenden dolayı yararlıdır:

  1. Uygulama yükleme boyutunu küçük tutabilir ve modeli yalnızca gerektiğinde indirebiliriz.
  2. Model, düzenli olarak ve uygulamanın tamamından farklı bir sürüm döngüsüyle güncellenebilir.

Model, Firebase Admin SDK'sı kullanılarak konsol üzerinden veya programatik olarak dağıtılabilir. Bu adımda, uygulamayı konsol üzerinden dağıtacağız.

Öncelikle Firebase Konsolu'nu açın ve sol gezinme panelinde Makine Öğrenimi'ni tıklayın. Bu sayfayı ilk kez açıyorsanız "Başlayın"ı tıklayın. Ardından "Özel"e gidin ve "Model ekle"yi tıklayın. düğmesini tıklayın.

İstendiğinde modeli sentiment_analysis olarak adlandırın ve önceki adımda Colab'dan indirdiğiniz dosyayı yükleyin.

3c3c50e6ef12b3b.png

10. Modeli Firebase ML'den indirme

TFLite modelleri nispeten büyük boyutlara ulaşabileceğinden, uzak modeli Firebase'den uygulamanıza ne zaman indireceğinizi seçmek zor olabilir. İdeal olarak, uygulama başlatıldığında modelin hemen yüklenmesini önlemek isteriz. Çünkü modelimiz yalnızca bir özellik için kullanılırsa ve kullanıcı bu özelliği hiçbir zaman kullanmazsa önemli miktarda veri hiçbir sebep olmadan indirilmiş olur. Yalnızca kablosuz ağa bağlıyken model getirme gibi indirme seçenekleri de belirleyebiliriz. Modelin ağ bağlantısı olmadan bile kullanılabilmesini istiyorsanız, modeli uygulama olmadan yedek olarak paketlemeniz de önemlidir.

Kolaylık sağlaması açısından, varsayılan paket halinde sunulan modeli kaldıracağız ve uygulama ilk kez başlatıldığında Firebase'den her zaman model indireceğiz. Böylece yaklaşım analizi çalıştırırken çıkarımın Firebase'den sağlanan modelle çalıştığından emin olabilirsiniz.

app/build.gradle.kts dosyasına Firebase Makine Öğrenimi bağımlılığını ekleyin.

app/build.gradle.kts

Bu yorumu bulun:

// TODO 1: Add Firebase ML dependency

Ardından şunları ekleyin:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

Android Studio'dan projenizi senkronize etmeniz istendiğinde Şimdi Senkronize Et'i seçin.

Ardından, modeli Firebase'den indirmek için kod ekleyelim.

MainActivity.java

Bu yorumu bulun:

// TODO 2: Implement a method to download TFLite model from Firebase

Ardından şunları ekleyin:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

Daha sonra, etkinliğin onCreate yönteminde downloadModel yöntemini çağırın.

MainActivity.java

Bu yorumu bulun:

// TODO 3: Call the method to download TFLite model

Ardından şunları ekleyin:

downloadModel("sentiment_analysis");

11. Modeli uygulamanıza entegre etme

Tensorflow Lite Görev Kitaplığı, TensorFlow Lite modellerini yalnızca birkaç satır kodla uygulamanıza entegre etmenize yardımcı olur. Firebase'den indirilen TensorFlow Lite modelini kullanarak bir NLClassifier örneğini başlatacağız. Ardından, uygulama kullanıcılarının metin girişini sınıflandırmak ve sonucu kullanıcı arayüzünde göstermek için kullanacağız.

Bağımlılığı ekleme

Uygulamanın Gradle dosyasına gidin ve uygulamanın bağımlılıklarına TensorFlow Lite Task Library (Text) öğesini ekleyin.

uygulama/build.gradle

Bu yorumu bulun:

// TODO 4: Add TFLite Task API (Text) dependency

Ardından şunları ekleyin:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

Android Studio'dan projenizi senkronize etmeniz istendiğinde Şimdi Senkronize Et'i seçin.

Metin sınıflandırıcıyı başlatma

Ardından, Görev Kitaplığı'nın NLClassifier işlevini kullanarak Firebase'den indirilen yaklaşım analizi modelini yükleriz.

MainActivity.Java

Bir NLClassifier örnek değişkeni tanımlayalım. Bu yorumu bulun:

// TODO 5: Define a NLClassifier variable

Ardından şunları ekleyin:

private NLClassifier textClassifier;

textClassifier değişkenini Firebase'den indirilen yaklaşım analizi modeliyle başlatın. Bu yorumu bulun:

// TODO 6: Initialize a TextClassifier with the downloaded model

Ardından şunları ekleyin:

textClassifier = NLClassifier.createFromFile(model.getFile());

Metin sınıflandırma

textClassifier örneği ayarlandıktan sonra tek bir yöntem çağrısıyla yaklaşım analizi çalıştırabilirsiniz.

MainActivity.Java

Bu yorumu bulun:

// TODO 7: Run sentiment analysis on the input text

Ardından şunları ekleyin:

List<Category> results = textClassifier.classify(text);

İşleme sonrası süreci uygulama

Son olarak, modelin çıktısını ekranda gösterilecek açıklayıcı bir metne dönüştüreceğiz.

MainActivity.Java

Bu yorumu bulun:

// TODO 8: Convert the result to a human-readable text

Sanal sonuç metnini oluşturan kodu kaldırın:

String textToShow = "Dummy classification result.\n";

Ardından şunları ekleyin:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12. Nihai uygulamayı çalıştırma

Yaklaşım analizi modelini uygulamaya entegre ettiniz. Şimdi modeli test edelim. Android cihazınızı bağlayın ve Android Studio araç çubuğunda Çalıştır'ı ( execute.png) tıklayın.

Uygulama, girdiğiniz film incelemesinin duygusunu doğru şekilde tahmin edebilmelidir.

img/text-classification-result.png

13. Daha fazla Firebase özelliğiyle uygulamayı güçlendirin

Firebase, TFLite modellerinizi barındırmanın yanı sıra makine öğrenimi kullanım alanlarınızı desteklemek için başka özellikler de sunar:

  • Firebase Performance Monitoring, kullanıcıların cihaz modellerinde çalışan model çıkarım hızını ölçmenizi sağlar olanak tanır.
  • Firebase Analytics ile kullanıcı tepkisini ölçerek modelinizin üretimde ne kadar iyi performans gösterdiğini ölçün.
  • Modelinizin birden fazla sürümünü test etmek için Firebase A/B Testi
  • Daha önce TFLite modelimizin iki sürümünü eğittiğimizi hatırlıyor musunuz? A/B testi, üretimde hangi sürümün daha iyi performans gösterdiğini öğrenmenin iyi bir yoludur.

Uygulamanızda bu özelliklerden nasıl yararlanacağınız hakkında daha fazla bilgi edinmek için aşağıdaki codelab'lere göz atın:

14. Tebrikler!

Bu codelab'de, bir duyarlı analiz TFLite modelini nasıl eğiteceğinizi ve Firebase'i kullanarak mobil uygulamanıza nasıl dağıtacağınızı öğrendiniz. TFLite ve Firebase hakkında daha fazla bilgi edinmek için diğer TFLite örneklerine ve Firebase başlangıç kılavuzlarına göz atın.

İşlediğimiz konular

  • TensorFlow Lite
  • Firebase ML

Sonraki adımlar

  • Firebase Performance Monitoring ile model çıkarım hızınızı ölçün.
  • Modeli Colab'den Firebase ML Model Management API aracılığıyla doğrudan Firebase'e dağıtın.
  • Kullanıcıların tahmin sonucu hakkında geri bildirim verebileceği bir mekanizma ekleyin ve kullanıcı geri bildirimlerini takip etmek için Firebase Analytics'i kullanın.
  • Firebase A/B Testi ile Ortalama Kelime Vektörü modelini ve MobileBERT modelini A/B testi yapın.

Daha Fazla Bilgi

Sorunuz mu var?

Sorun Bildir