1. Genel Bakış
TensorFlow Lite ve Firebase codelab ile Metin Sınıflandırma'ya hoş geldiniz. Bu codelab'de, uygulamanıza 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ğine dayanmaktadır.
Metin sınıflandırma, metne 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 verilerindeki duyguların (pozitif, olumsuz ve nötr) metin analizi tekniklerini kullanarak yorumlanması ve sınıflandırılmasıdır. Yaklaşım analizi, işletmelerin online görüşmeler ve geri bildirimler aracılığıyla ürünlere, markalara veya hizmetlere yönelik müşteri duyarlılığını belirlemelerine 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ğıtıp uygulamanızdan bu modellere erişin
- 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 bir sürüme 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
- Cihaz kullanıyorsanız bağlantı kablosu.
Bu eğiticiden nasıl yararlanacaksınız?
Android uygulamaları geliştirme deneyiminizi nasıl değerlendirirsiniz?
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 aktarın
Android Studio'da, örnek kod indirme işleminden codelab-textclassification-android-master
dizinini ( ) seçin (Dosya > Aç > .../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
Projenizi Android Studio'ya 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'ı ( ) tıklayın.
Uygulama, cihazınızda başlatılır. Yalnızca sonraki adımlardaki metin sınıflandırma modellerini entegre edip 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.
5. Firebase konsol projesi oluşturun
Firebase'i projeye ekleyin
- Firebase konsoluna gidin.
- Proje ekle'yi seçin.
- Bir proje adı seçin veya girin.
- 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
- Kurulum iş akışını başlatmak için yeni projenizin genel bakış ekranından Android simgesini tıklayın.
- 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 hizmetleri eklentisi ekleyin
Uygulamanıza Firebase eklemek için build.gradle.kts
dosyalarını güncelleyen Firebase konsolunda 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. Dosya > Android Studio araç çubuğundan Projeyi Gradle Dosyaları ile senkronize edin.
7. Uygulamayı Firebase ile çalıştırın
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ıp Android Studio araç çubuğunda Çalıştır'ı ( ) 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'de açabileceğiniz bir Python not defteri olarak sunulur. Çalışma zamanı > Not defterinin tamamını aynı anda yürütmek için tümünü çalıştır'ı seçin.
Colab'de aç
Bu adımı tamamladıktan sonra, mobil uygulamaya dağıtıma hazır bir TensorFlow Lite yaklaşım 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:
- Uygulama yükleme boyutunu küçük tutup modeli yalnızca gerektiğinde indirebiliriz.
- 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. "Başlayın"ı tıklayın bu bağlantıyı ilk kez açıyorsanız. Ardından "Özel"e gidin ve "Model ekle"yi tıklayın. düğmesini tıklayın.
İstendiğinde modele sentiment_analysis
adını verin ve önceki adımda Colab'den indirdiğiniz dosyayı yükleyin.
10. Modeli Firebase ML'den indir
TFLite modelleri nispeten büyük hale getirilebileceği için Firebase'den uzak modelin ne zaman uygulamanıza indirileceğini 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. Modelleri yalnızca kablosuz ağa bağlıyken getirmek gibi indirme seçeneklerini de ayarlayabiliriz. 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 Machine Learning bağımlılığını ekleyin.
app/build.gradle.kts
Bu yorumu bul:
// 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 tarafından 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 bul:
// 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 bul:
// 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 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 Görev Kitaplığı'nı (Metin) ekleyin.
app/build.gradle
Bu yorumu bul:
// TODO 4: Add TFLite Task API (Text) dependency
Ardından şunları ekleyin:
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.
Metin sınıflandırıcıyı başlatma
Ardından, Görev Kitaplığı'nın NLClassifier
öğesini kullanarak Firebase'den indirilen yaklaşım analizi modelini yükleyeceğiz.
MainActivity.java
Bir NLClassifier örnek değişkeni tanımlayalım. Bu yorumu bul:
// 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 bul:
// 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 bul:
// 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 bul:
// 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. Uygulamanın son sürümünü çalıştırma
Yaklaşım analizi modelini uygulamaya entegre ettiniz. Şimdi test edelim. Android cihazınızı bağlayıp Android Studio araç çubuğunda Çalıştır'ı ( ) tıklayın.
Uygulama, girdiğiniz film yorumunun yaklaşımını doğru bir şekilde tahmin edebilmelidir.
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 çok 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, yaklaşım analizi TFLite modelini eğitmeyi ve Firebase kullanarak bu modeli mobil uygulamanıza dağıtmayı öğ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 testiyle Ortalama Kelime Vektörü modeli ve MobileBERT modeli üzerinde A/B testi gerçekleştirin.
Daha Fazla Bilgi
- Firebase Makine Öğrenimi belgeleri
- TensorFlow Lite belgeleri
- Firebase ile uygulama performansını ölçme
- Firebase ile A/B Testi modelleri