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 ile Metin Sınıflandırma codelab'ine hoş geldiniz. Bu codelab'de, bir metin sınıflandırma modelini eğitip uygulamanıza dağıtmak için TensorFlow Lite ve Firebase'i nasıl kullanacağınızı öğreneceksiniz. Bu codelab, TensorFlow Lite örneğini temel alır.

Metin sınıflandırma, metne içeriğine göre etiket veya kategori atama işlemidir. Bu, doğal dil işlemedeki (NLP) temel görevlerden biridir ve yaklaşım analizi, konu etiketleme, spam algılama ve amaç algılama gibi geniş bir uygulama alanına sahiptir.

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 görüşmelerde ve geri bildirimlerde müşterilerin ürünlere, markalara veya hizmetlere yönelik duygularını belirlemesine olanak tanır.

Bu eğiticide, duygu analizi için makine öğrenimi modelinin nasıl oluşturulacağı (özellikle metnin olumlu veya olumsuz olarak sınıflandırılması) gösterilmektedir. Bu, önemli ve yaygın olarak uygulanabilen bir makine öğrenimi problemi türü olan ikili (veya iki sınıflı) sınıflandırma örneğidir.

Neler öğreneceksiniz?

  • TF Lite Model Maker ile TF Lite yaklaşım analizi modellerini eğitme
  • TF Lite modellerini Firebase ML'ye dağıtma ve uygulamanızdan bu modellere 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 ya da sonraki sürümlerin yüklü olduğu bir test cihazı veya Google Play Hizmetleri 9.8 ya da sonraki sürümlerin yüklü olduğu bir Emulator
  • Cihaz kullanıyorsanız bağlantı kablosu.

Bu eğitimi nasıl kullanacaksınız?

Sadece okuyun Okuyun ve alıştırmaları tamamlayın

Android uygulamaları oluşturma deneyiminizi nasıl değerlendirirsiniz?

Başlangıç Orta İleri

2. Örnek kodu alın

GitHub deposunu komut satırından klonlayı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 işleminden codelab-textclassification-android-master dizinini ( android_studio_folder.png) seçin (Dosya > > .../codelab-textclassification-android-master/start).

Başlangıç projesi artık Android Studio'da açık olmalıdır.

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

Projeyi Android Studio'ya aktardığınıza göre artık uygulamayı ilk kez çalıştırmaya hazırsınız. Android cihazınızı bağlayın ve Android Studio araç çubuğunda Run'ı ( execute.png) tıklayın.

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

2fb4e69fafb2e3ed.png

5. Firebase konsolu projesi oluşturma

Projeye Firebase'i ekleme

  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 projesi kullanıyorsanız Firebase ekle'yi) tıklayın.

6. Firebase'i uygulamaya ekleme

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

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

Paket adını ekleyip Kaydet'i** seçtikten sonra Firebase Android yapılandırma dosyanızı almak için **google-services.json dosyasını indir**'i tıklayı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 Firebase konsolunda build.gradle.kts dosyalarını güncelleme talimatlarını 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ılabilir olduğundan emin olmak için bu noktada projenizi Gradle dosyalarıyla senkronize etmeniz gerekir. Android Studio araç çubuğundan File > Sync Project with Gradle Files (Dosya > Projeyi Gradle Dosyalarıyla Senkronize Et) seçeneğini belirleyin.

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

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

Uygulama, cihazınızda başlatılmalıdır. Bu noktada uygulamanız hâlâ başarıyla derlenmelidir.

8. Yaklaşım analizi modeli eğitme

Belirli bir metnin duygusunu tahmin etmek için metin sınıflandırma modelini eğitmek üzere TensorFlow Lite Model Maker'ı kullanacağız.

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

Colab'de aç

Bu adımı tamamladığınızda, bir mobil uygulamaya dağıtıma hazır bir TensorFlow Lite duygu analizi modeliniz olur.

9. Firebase ML'ye model dağıtma

Bir modeli Firebase ML'ye dağıtmak iki temel nedenden dolayı faydalı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 yayın döngüsüyle güncellenebilir.

Model, konsol aracılığıyla veya Firebase Admin SDK kullanılarak programatik olarak dağıtılabilir. Bu adımda, konsol üzerinden dağıtım yapacağız.

İlk olarak Firebase konsolunu açın ve soldaki gezinme panelinde Machine Learning'i tıklayın. Bu özelliği ilk kez açıyorsanız "Başlayın"ı tıklayın. Ardından "Özel"e gidin ve "Model ekle" düğmesini tıklayın.

İstendiğinde modele sentiment_analysis adını verin ve önceki adımda Colab'den indirdiğiniz dosyayı yükleyin.

3c3c50e6ef12b3b.png

10. Firebase ML'den modeli indirme

TFLite modelleri nispeten büyük olabileceğinden, uzaktaki modeli Firebase'den uygulamanıza ne zaman indireceğinizi seçmek zor olabilir. Modelimiz yalnızca bir özellik için kullanılıyorsa ve kullanıcı bu özelliği hiç kullanmıyorsa önemli miktarda veriyi boşuna indirmiş oluruz. Bu nedenle, uygulamayı başlattığımızda modeli hemen yüklemekten kaçınmak isteriz. Ayrıca, yalnızca kablosuz ağa bağlıyken modelleri getirme gibi indirme seçenekleri de ayarlayabiliriz. Modelin ağ bağlantısı olmasa bile kullanılabilmesini istiyorsanız yedek olarak uygulamayla birlikte paketlememeniz önemlidir.

Basitlik adına, varsayılan olarak paketlenmiş modeli kaldıracağız ve uygulama ilk kez başlatıldığında her zaman Firebase'den bir model indireceğiz. Bu sayede, yaklaşım analizi yaparken çıkarımın Firebase'den sağlanan modelle yapıldığından emin olabilirsiniz.

app/build.gradle.kts dosyasında Firebase Machine Learning bağımlılığını ekleyin.

app/build.gradle.kts

Bu yorumu bulma:

// 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 projenizi senkronize etmenizi istediğinde Şimdi Senkronize Et'i seçin.

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

MainActivity.java

Bu yorumu bulma:

// 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();

                      }
              );

}

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

MainActivity.java

Bu yorumu bulma:

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

Ardından şunları ekleyin:

downloadModel("sentiment_analysis");

11. Modeli uygulamanıza entegre edin

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

Bağımlılığı ekleme

Uygulamanın Gradle dosyasına gidin ve uygulamanın bağımlılıklarına TensorFlow Lite Görev Kitaplığı'nı (Metin) ekleyin.

app/build.gradle

Bu yorumu bulma:

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

Ardından şunları ekleyin:

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

Android Studio projenizi senkronize etmenizi istediğinde Şimdi Senkronize Et'i seçin.

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

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

MainActivity.java

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

// TODO 5: Define a NLClassifier variable

Ardından şunları ekleyin:

private NLClassifier textClassifier;

textClassifier değişkenini, Firebase'den indirilen duygu analizi modeliyle başlatın. Bu yorumu bulma:

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

Ardından şunları ekleyin:

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

Metni sınıflandırma

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

MainActivity.java

Bu yorumu bulma:

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

Ardından şunları ekleyin:

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

İşleme sonrası efektleri uygulama

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

MainActivity.java

Bu yorumu bulma:

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

Sahte 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. Son uygulamayı çalıştırma

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

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

img/text-classification-result.png

13. Uygulamayı daha fazla Firebase özelliğiyle güçlendirme

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:

  • Kullanıcıların cihazında çalışan model çıkarım hızınızı ölçmek için Firebase Performance Monitoring.
  • Kullanıcı tepkisini ölçerek modelinizin üretimdeki performansını ölçmek için Firebase Analytics.
  • 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, hangi sürümün üretimde daha iyi performans gösterdiğini öğrenmek için iyi bir yöntemdir.

Bu özelliklerden uygulamanızda nasıl yararlanacağınız hakkında daha fazla bilgi edinmek için aşağıdaki codelab'leri inceleyin:

14. Tebrikler!

Bu codelab'de, bir duygu analizi TFLite modelini eğitmeyi ve Firebase'i kullanarak mobil uygulamanıza dağıtmayı öğrendiniz. TFLite ve Firebase hakkında daha fazla bilgi edinmek için diğer TFLite örneklerine ve Firebase hızlı başlangıç kılavuzlarına göz atın.

İşlediğimiz konular

  • TensorFlow Lite
  • Firebase ML

Sonraki adımlar

  • Model çıkarım hızınızı Firebase Performance Monitoring ile ölçün.
  • Firebase ML Model Yönetimi API'si aracılığıyla modeli doğrudan Colab'den Firebase'e dağıtın.
  • Kullanıcıların tahmin sonucuyla ilgili geri bildirimde bulunmasına olanak tanıyan bir mekanizma ekleyin ve kullanıcı geri bildirimlerini izlemek için Firebase Analytics'i kullanın.
  • Firebase A/B Testi ile Ortalama Kelime Vektörü modelini ve MobileBERT modelini A/B testine tabi tutun.

Daha Fazla Bilgi

Sorunuz mu var?

Sorunları Bildirme