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

1. Genel Bakış

metin-sınıflandırma-sonuç.png

TensorFlow Lite ve Firebase codelab ile Metin Sınıflandırmasına hoş geldiniz. Bu kod laboratuvarında, 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 alır.

Metin sınıflandırma, metne içeriğine göre etiketler veya kategoriler atama işlemidir. Duyarlılık analizi, konu etiketleme, spam algılama ve amaç algılama gibi geniş uygulamalarla Doğal Dil İşleme'deki (NLP) temel görevlerden 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 sohbetlerde ve geri bildirimlerde ürünlere, markalara veya hizmetlere yönelik müşteri duyarlılığını belirlemesine olanak tanır.

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

ne öğreneceksin

  • TF Lite Model Maker ile bir TF Lite duyarlılık analizi modellerini eğitin
  • 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

Neye ihtiyacın olacak

  • Android Studio sürüm 4.0+.
  • Basit kod.
  • Android 4.4+ ve Google Play hizmetleri 9.8 veya üzeri olan bir test cihazı veya Google Play hizmetleri 9.8 veya üzeri olan bir Emulator
  • Bir cihaz kullanıyorsanız, bir bağlantı kablosu.

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

Sadece baştan sona oku Okuyun ve alıştırmaları tamamlayın

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

Acemi Orta düzey Yetkin

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ı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 Android Studio'da başlangıç ​​projesini açmış olmalısınız.

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

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 ( yürüt.png ) Android Studio araç çubuğunda.

Uygulama, cihazınızda başlamalıdı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, duyguları tahmin etmeye çalışırsanız, uygulama yalnızca bazı sahte 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ı izleyin, ardından Proje oluştur'u (veya mevcut bir Google projesi kullanıyorsanız Firebase Ekle'yi) tıklayın.

6. Firebase'i uygulamaya ekleyin

  1. Yeni projenizin genel bakış ekranından, kurulum iş akışını başlatmak için 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** İndir'i tıklayın ve ardından google-services.json dosyasını projenizdeki * app * dizinine kopyalayın.

Uygulamanıza google hizmetleri eklentisi ekleyin

Firebase'i uygulamanıza eklemek için build.gradle 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

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

Uygulama, cihazınızda başlamalıdır. Bu noktada, uygulamanız yine de başarılı bir şekilde oluşturulmalıdır.

8. Bir duygu analizi modeli eğitin

Belirli bir metnin duyarlılığını tahmin etmek için bir metin sınıflandırma modeli 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ı bir kerede 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, bir mobil uygulamaya dağıtıma hazır bir TensorFlow Lite duyarlılık analizi modeliniz olacak.

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

Firebase ML'ye bir model dağıtmak iki ana nedenden dolayı yararlıdır:

  1. Uygulama yükleme boyutunu küçük tutabilir ve yalnızca gerekirse modeli 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 konuşlandıracağız.

İlk olarak, Firebase Konsolunu açın ve sol gezinme panelinde Makine Öğrenimi'ne tıklayın. Bunu 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 duygu_analiz adını verin ve önceki adımda sentiment_analysis 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 hiç kullanmıyorsa, sebepsiz yere önemli miktarda veri indirmiş oluruz. Ayrıca sadece wifi'ye bağlıyken modelleri getirme gibi indirme seçeneklerini de ayarlayabiliyoruz. Modelin ağ bağlantısı olmadan da kullanılabilir olduğundan emin olmak istiyorsanız, onu yedek olarak uygulama olmadan da paketlemeniz önemlidir.

Basitlik adına, varsayılan paketlenmiş 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 dosyasında Firebase Machine Learning bağımlılığını ekleyin.

uygulama/build.gradle

Bu yorumu bulun:

// TODO 1: Add Firebase ML dependency

Sonra Ekle:

implementation platform('com.google.firebase:firebase-bom:29.3.0')
implementation 'com.google.firebase:firebase-ml-modeldownloader:24.0.4'

Android Studio tarafından projenizi eşitlemeniz istendiğinde, Şimdi Eşitle öğesini seçin.

Ardından modeli Firebase'den indirmek için biraz 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();

                      }
              );

}

Ardından, 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ığı, yalnızca birkaç satır kodla TensorFlow Lite modellerini 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ı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ığı ekle

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

uygulama/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 eşitlemeniz istendiğinde, Şimdi Eşitle öğesini seçin.

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

Ardından, Görev Kitaplığı'nın NLClassifier kullanarak Firebase'den indirilen duygu analizi modelini 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;

Firebase'den indirilen duygu analizi modeliyle textClassifier değişkenini 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ırma

textClassifier örneği ayarlandıktan sonra, tek bir yöntem çağrısı ile 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ı uygula

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 ( yürüt.png ) Android Studio araç çubuğunda.

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

img/text-classification-result.png

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

Firebase, TFLite modellerinizi barındırmanın yanı sıra, makine öğrenimi kullanım durumlarınızı güçlendirmek için birkaç başka özellik 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 üretimde ne kadar iyi performans gösterdiğini ölçmek için Firebase Analytics.
  • Modelinizin birden çok sürümünü test etmek için Firebase A/B Testi
  • TFLite modelimizin iki versiyonunu daha önce eğittiğimizi hatırlıyor musunuz? 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.

Neyi kapsadı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 Management API aracılığıyla Colab'den 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.
  • A/B, Ortalama Kelime Vektörü modelini ve MobileBERT modelini Firebase A/B testi ile test eder.

Daha fazla bilgi edin

Sorunuz mu var?

Sorunları Bildir