TensorFlow Lite ve Firebase ile uygulamanıza cihaz içi Metin Sınıflandırması ekleyin - Android Codelab

1. Genel Bakış

metin-sınıflandırma-sonucu.png

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

Metin sınıflandırma, metne içeriğine göre etiket veya kategori atama işlemidir. Duygu analizi, konu etiketleme, spam tespiti ve niyet tespiti gibi geniş uygulamalarla Doğal Dil İşleme'nin (NLP) temel görevlerinden biridir.

Duygu analizi, metin verileri içindeki duyguların (olumlu, olumsuz ve nötr) metin analizi teknikleri kullanılarak yorumlanması ve sınıflandırılmasıdır. Duyarlılık analizi, işletmelerin çevrimiçi konuşmalarda ve geri bildirimlerde ürünlere, markalara veya hizmetlere yönelik müşteri duyarlılığını belirlemesine olanak tanır.

Bu eğitimde, özellikle metni olumlu veya olumsuz olarak sınıflandırmak üzere duygu analizi için bir makine öğrenimi modelinin nasıl oluşturulacağı gösterilmektedir. Bu, önemli ve yaygın olarak uygulanabilir bir tür makine öğrenimi problemi olan ikili veya iki sınıflı sınıflandırmanın bir örneğidir.

Ne öğreneceksin

  • TF Lite Model Oluşturucu ile TF Lite duygu analizi modellerini eğitme
  • TF Lite modellerini Firebase ML'ye dağıtın ve bunlara uygulamanızdan erişin
  • TF Lite görev kitaplığını kullanarak TF Lite duyarlılık analizi modellerini uygulamanıza entegre edin

İhtiyacınız olan şey

  • En son Android Studio sürümü.
  • Basit kod.
  • Android 5.0+ ve Google Play hizmetleri 9.8 veya sonraki sürümlere sahip bir test cihazı ya da Google Play hizmetleri 9.8 veya sonraki sürümlere sahip bir Emülatör
  • Bir cihaz kullanılıyorsa, bir bağlantı kablosu.

Bu öğreticiyi nasıl kullanacaksınız?

Yalnızca baştan sona okuyun Okuyun ve alıştırmaları tamamlayın

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

Acemi Orta seviye Yetkin

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ıya tıklayarak da indirebilirsiniz.

3. Başlangıç ​​uygulamasını içe aktarın

Android Studio'dan codelab-textclassification-android-master dizinini seçin ( android_studio_folder.png ) örnek kod indirmesinden ( Dosya > > .../codelab-textclassification-android-master/start).

Artık başlangıç ​​projenizi Android Studio'da açmalısınız.

4. Başlangıç ​​uygulamasını çalıştırın

Artık projeyi Android Studio'ya aktardığınıza göre uygulamayı ilk kez çalıştırmaya hazırsınız. Android cihazınızı bağlayın ve Çalıştır'a tıklayın ( yürüt.png )Android Studio araç çubuğunda.

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

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ı izleyin ve ardından Proje oluştur'u (veya mevcut bir Google projesini kullanıyorsanız Firebase 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 simgesine tıklayın.
  2. Codelab'in paket adını girin: org.tensorflow.lite.codelabs.textclassification

Google-services.json dosyasını uygulamanıza ekleyin

Paket adını ekledikten ve Kaydol**'u seçtikten sonra, Firebase Android yapılandırma dosyanızı almak için Google-services.json'u İndir** seçeneğine tıklayın ve ardından google-services.json dosyasını projenizdeki * app * dizinine kopyalayın.

Uygulamanıza Google hizmetleri eklentisini ekleyin

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

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 edin

Uygulamanızda tüm bağımlılıkların mevcut olduğundan emin olmak için bu noktada projenizi gradle dosyalarıyla senkronize etmelisiniz. Android Studio araç çubuğundan Dosya > Projeyi Gradle Dosyalarıyla Eşitle'yi seçin.

7. Uygulamayı Firebase ile çalıştırın

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 Çalıştır'a tıklayın ( yürüt.png )Android Studio araç çubuğunda.

Uygulama cihazınızda başlatılmalıdır. Bu noktada uygulamanız yine de başarıyla oluşturulmalıdır.

8. Duygu analizi modelini eğitin

Belirli bir metnin duyarlılığını tahmin etmek amacıyla bir 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 sunulmaktadır. Not defterinin tamamını aynı anda yürütmek için Çalışma Zamanı > Tümünü çalıştır'ı seçebilirsiniz.

Colab'da aç

Bu adımı tamamladıktan sonra mobil uygulamaya dağıtılmaya hazır bir TensorFlow Lite duyarlılık analizi modeline sahip olacaksınız.

9. Firebase ML'ye bir model dağıtın

Bir modeli Firebase ML'ye dağıtmak iki ana nedenden dolayı faydalıdır:

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

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

Öncelikle Firebase Konsolunu açın ve sol gezinme panelinde Makine Öğrenimi'ne tıklayın. İlk kez açıyorsanız 'Başlayın'ı tıklayın. Daha sonra "Özel" seçeneğine gidin ve "Model ekle" düğmesine tıklayın.

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

3c3c50e6ef12b3b.png

10. Modeli Firebase ML'den indirin

TFLite modelleri nispeten büyüyebileceğinden, uzak modeli Firebase'den uygulamanıza ne zaman indireceğinizi seçmek zor olabilir. İdeal olarak, uygulama başlatıldığında modeli hemen yüklemekten kaçınmak istiyoruz, çünkü modelimiz yalnızca bir özellik için kullanılıyorsa ve kullanıcı bu özelliği asla kullanmıyorsa, sebepsiz yere önemli miktarda veri indirmiş olacağız. Ayrıca sadece wifiye bağlanıldığında modellerin getirilmesi gibi indirme seçeneklerini de ayarlayabiliriz. Modelin ağ bağlantısı olmadan da kullanılabilir olduğundan emin olmak istiyorsanız, onu uygulama olmadan da yedek olarak paketlemeniz önemlidir.

Basitlik adına, varsayılan paketli modeli kaldıracağız ve uygulama ilk kez başlatıldığında her zaman Firebase'den bir model indireceğiz. Bu şekilde duyarlılık analizini çalıştırırken çıkarımın Firebase'den sağlanan modelle çalıştığından emin olabilirsiniz.

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

app/build.gradle.kts

Bu yorumu bulun:

// TODO 1: Add Firebase ML dependency

Sonra Ekle:

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

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

Daha sonra modeli Firebase'den indirmek için bazı kod ekleyelim.

MainActivity.java

Bu yorumu bulun:

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

Sonra Ekle:

  /** 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

Sonra Ekle:

downloadModel("sentiment_analysis");

11. Modeli uygulamanıza entegre edin

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. Daha sonra bunu uygulama kullanıcılarından gelen metin girişini sınıflandırmak ve sonucu kullanıcı arayüzünde göstermek için kullanacağız.

Bağımlılığı ekleyin

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 bulun:

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

Sonra Ekle:

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

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

Bir metin sınıflandırıcıyı başlat

Daha sonra Firebase'den indirdiğimiz duyarlılık analizi modelini Görev Kitaplığı'nın NLClassifier kullanarak yükleyeceğiz.

MainActivity.java

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

// TODO 5: Define a NLClassifier variable

Sonra Ekle:

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

Sonra Ekle:

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

Metni sınıflandır

textClassifier örneği ayarlandıktan sonra tek bir yöntem çağrısıyla duyarlılık analizini çalıştırabilirsiniz.

MainActivity.java

Bu yorumu bulun:

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

Sonra Ekle:

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

İşlem sonrası 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

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

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

Sonra Ekle:

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ırın

Duyarlılık analizi modelini uygulamaya entegre ettiniz, hadi test edelim. Android cihazınızı bağlayın ve Çalıştır'a tıklayın ( yürüt.png )Android Studio araç çubuğunda.

Uygulama, girdiğiniz film incelemesinin yaklaşımını doğru bir şekilde tahmin edebilmelidir.

img/metin-sınıflandırma-sonucu.png

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

Firebase, TFLite modellerinizi barındırmanın yanı sıra, makine öğrenimi kullanım senaryolarınızı güçlendirmek için başka birçok özellik daha sağlar:

  • 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 üretimde ne kadar iyi performans gösterdiğini ö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 versiyonunu eğittiğimizi hatırladınız mı? A/B testi, üretimde hangi sürümün daha iyi performans gösterdiğini bulmanın iyi bir yoludur!

Uygulamanızda bu özelliklerden nasıl yararlanabileceğiniz hakkında daha fazla bilgi edinmek için aşağıdaki kod laboratuvarlarına göz atın:

14. Tebrikler!

Bu codelab'de bir duyarlılık analizi TFLite modelini nasıl eğiteceğinizi ve bunu Firebase 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.

Neleri ele aldık?

  • TensorFlow Lite
  • Firebase ML

Sonraki adımlar

  • Firebase Performance Monitoring ile model çıkarım hızınızı ölçün.
  • Modeli, Firebase ML Model Yönetimi API'si aracılığıyla Colab'dan doğrudan Firebase'e dağıtın.
  • Kullanıcıların tahmin sonucu hakkında geri bildirimde bulunmasına olanak tanıyan bir mekanizma ekleyin ve kullanıcı geri bildirimlerini izlemek için Firebase Analytics'i kullanın.
  • Ortalama Kelime Vektörü modelini ve MobileBERT modelini Firebase A/B testiyle A/B testi yapın.

Daha fazla bilgi edin

Bir Sorunuz mu var?

Sorunları Bildir