1. Genel Bakış
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?
Android uygulamaları oluşturma deneyiminizi nasıl değerlendirirsiniz?
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 ( ) örnek kod indirmesinden ( Dosya > Aç > .../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 ( )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.
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ı 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
- Kurulum iş akışını başlatmak için yeni projenizin genel bakış ekranından Android simgesine tıklayın.
- 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 ( )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:
- Uygulama yükleme boyutunu küçük tutabilir ve modeli yalnızca ihtiyaç duyulduğunda indirebiliriz
- 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.
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 ( )Android Studio araç çubuğunda.
Uygulama, girdiğiniz film incelemesinin yaklaşımını doğru bir şekilde tahmin edebilmelidir.
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
- Firebase Makine Öğrenimi belgeleri
- TensorFlow Lite belgeleri
- Firebase ile uygulama performansını ölçün
- Firebase ile A/B Testi modelleri