1. Genel Bakış
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?
Android uygulamaları oluşturma 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ı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 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 ( ) 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.
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, 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
- Yeni projenizin genel bakış ekranından, kurulum iş akışını başlatmak için 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** İ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 ( ) 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:
- Uygulama yükleme boyutunu küçük tutabilir ve yalnızca gerekirse modeli 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 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.
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 ( ) Android Studio araç çubuğunda.
Uygulama, girdiğiniz film incelemesinin duyarlılığı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 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
- Firebase Makine Öğrenimi belgeleri
- TensorFlow Lite belgeleri
- Firebase ile uygulama performansını ölçün
- Firebase ile A/B Testi modelleri