1. Genel Bakış
TensorFlow Lite ve Firebase ile metin sınıflandırması codelab'ine 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ırması, metne içeriğine göre etiket veya kategori atama işlemidir. Yaklaşım analizi, konu etiketleme, spam algılama ve amaç algılama gibi geniş uygulamaları olan doğal dil işleme (NLP) temel görevlerinden 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. Duygu analizi, işletmelerin online sohbetlerde ve geri bildirimlerde müşterilere göre ürün, marka veya hizmetlere yönelik duyguları belirlemesine olanak tanır.
Bu eğitimde, özellikle metni olumlu veya olumsuz olarak sınıflandıran bir duygu analizi makine öğrenimi modelinin nasıl oluşturulacağı gösterilmektedir. 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 duyarlı analiz modeli eğitme
- TF Lite modellerini Firebase ML'ye dağıtma ve uygulamanızdan bunlara erişme
- Firebase Analytics ile model doğruluğunu ölçmek için kullanıcı geri bildirimlerini takip etme
- Firebase Performance Monitoring aracılığıyla profil modeli performansı
- Dağıtılan birden fazla modelden hangisinin Remote Config üzerinden yükleneceğini seçin
- Firebase A/B Testi ile farklı modellerle deneme yapma
Gerekenler
- Xcode 11 (veya üzeri)
- CocoaPods 1.9.1 veya sonraki sürümler
Bu eğitimi nasıl kullanacaksınız?
Android uygulaması oluşturma deneyiminizi nasıl değerlendirirsiniz?
2. Firebase Konsolu projesi oluşturma
Firebase'i projeye ekleme
- Firebase konsoluna gidin.
- Yeni Proje Oluştur'u seçin ve projenize "Firebase ML iOS Codelab" adını verin.
3. Örnek Projeyi İndirin
Kodu indirme
Örnek projeyi klonlayarak ve proje dizininde pod update
'yi çalıştırarak başlayın:
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
Git yüklü değilse örnek projeyi GitHub sayfasından veya bu bağlantıyı tıklayarak da indirebilirsiniz. Projeyi indirdikten sonra Xcode'da çalıştırın ve metin sınıflandırmasında denemeler yaparak işleyiş şeklini öğrenin.
Firebase'i ayarlama
Yeni bir Firebase projesi oluşturmak için belgeleri uygulayın. Projenizi oluşturduktan sonra Firebase konsolundan projenizin GoogleService-Info.plist
dosyasını indirip Xcode projesinin köküne sürükleyin.
Firebase'i Podfile dosyanıza ekleyin ve pod install komutunu çalıştırın.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
AppDelegate
'ın didFinishLaunchingWithOptions
yönteminde, dosyanın en üstüne Firebase'i içe aktarın
import FirebaseCore
Ardından, Firebase'i yapılandırmak için bir çağrı ekleyin.
FirebaseApp.configure()
Uygulamanın doğru yapılandırıldığından ve başlatılırken kilitlenmediğinden emin olmak için projeyi tekrar çalıştırın.
4. Yaklaşım analizi modeli eğitme
Belirli bir metnin duygusunu tahmin etmek için metin sınıflandırma modeli eğitmek üzere TensorFlow Lite Model Maker'ı kullanacağız.
Bu adım, Google Colab'de açabileceğiniz bir Python not defteri olarak sunulur.
Colab'de aç
Bu adımı tamamladıktan sonra, mobil uygulamaya dağıtıma hazır bir TensorFlow Lite yaklaşım analizi modeliniz olur.
5. 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 Console'u 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" düğmesini tıklayın.
İstendiğinde modeli sentiment_analysis
olarak adlandırın ve önceki adımda Colab'dan indirdiğiniz dosyayı yükleyin.
6. Modeli Firebase ML'den indirme
TFLite modelleri nispeten büyük boyutlara ulaşabileceğinden, uzak modeli Firebase'den uygulamanıza ne zaman indireceğinizi seçmek zor olabilir. İdeal olarak, modelimiz yalnızca bir özellik için kullanılıyorsa ve kullanıcı bu özelliği hiç kullanmıyorsa modelin uygulama başlatılır başlatılmaz yüklenmesini önlemek isteriz. Aksi takdirde, önemli miktarda veriyi nedensiz yere indirmiş oluruz. 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. Bu sayede, yaklaşım analizini çalıştırırken çıkarım işleminin Firebase'den sağlanan modelle çalışacağından emin olabilirsiniz.
ModelLoader.swift
üst kısımdan Firebase modülünü içe aktarın.
import FirebaseCore import FirebaseMLModelDownloader
Ardından, aşağıdaki yöntemleri uygulayın.
static func downloadModel(named name: String, completion: @escaping (CustomModel?, DownloadError?) -> Void) { guard FirebaseApp.app() != nil else { completion(nil, .firebaseNotInitialized) return } guard success == nil && failure == nil else { completion(nil, .downloadInProgress) return } let conditions = ModelDownloadConditions(allowsCellularAccess: false) ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in switch (result) { case .success(let customModel): // Download complete. // The CustomModel object contains the local path of the model file, // which you can use to instantiate a TensorFlow Lite classifier. return completion(customModel, nil) case .failure(let error): // Download was unsuccessful. Notify error message. completion(nil, .downloadFailed(underlyingError: error)) } } }
ViewController.swift
'nın viewDidLoad
bölümünde, loadModel()
çağrısını yeni model indirme yöntemimizle değiştirin.
// Download the model from Firebase print("Fetching model...") ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in guard let customModel = customModel else { if let error = error { print(error) } return } print("Model download complete") // TODO: Initialize an NLClassifier from the downloaded model }
Uygulamanızı yeniden çalıştırın. Birkaç saniye sonra, Xcode'da uzak modelin başarıyla indirildiğini belirten bir günlük görürsünüz. Bir metin yazmayı deneyin ve uygulamanın davranışının değişmediğinden emin olun.
7. Modeli uygulamanıza entegre edin
TensorFlow Lite Görev Kitaplığı, TensorFlow Lite modellerini sadece birkaç satır kodla uygulamanıza entegre etmenize yardımcı olur. Firebase'den indirilen TensorFlow Lite modelini kullanarak bir TFLNLClassifier
ö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ık ekleme
Uygulamanın Podfile dosyasına gidin ve uygulamanın bağımlılıklarına TensorFlow Lite Görev Kitaplığı'nı (Metin) ekleyin. Bağımlılığı target 'TextClassification'
bildiriminin altına eklediğinizden emin olun.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
Yeni bağımlılığı yüklemek için pod install
komutunu çalıştırın.
Metin sınıflandırıcıyı başlatma
Ardından, Görev Kitaplığı'nın NLClassifier
işlevini kullanarak Firebase'den indirilen yaklaşım analizi modelini yükleriz.
ViewController.swift
Bir TFLNLClassifier örnek değişkeni tanımlayalım. Dosyanın üst kısmında yeni bağımlılığı içe aktarın:
import TensorFlowLiteTaskText
Son adımda değiştirdiğimiz yöntemin üzerindeki bu yorumu bulun:
// TODO: Add a TFLNLClassifier property.
TODO bölümünü aşağıdaki kodla değiştirin:
private var classifier: TFLNLClassifier?
textClassifier
değişkenini Firebase'den indirilen yaklaşım analizi modeliyle başlatın. Son adımda eklediğimiz bu yorumu bulun:
// TODO: Initialize an NLClassifier from the downloaded model
TODO bölümünü aşağıdaki kodla değiştirin:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Metin sınıflandırma
classifier
örneği ayarlandıktan sonra tek bir yöntem çağrısıyla yaklaşım analizi çalıştırabilirsiniz.
ViewController.swift
classify(text:)
yönteminde TODO yorumunu bulun:
// TODO: Run sentiment analysis on the input text
Yorumu aşağıdaki kodla değiştirin:
guard let classifier = self.classifier else { return }
// Classify the text
let classifierResults = classifier.classify(text: text)
// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)
8. Uygulamanın son sürümünü çalıştırma
Yaklaşım analizi modelini uygulamaya entegre ettiniz. Şimdi test edelim. iOS cihazınızı bağlayın ve Xcode araç çubuğunda Çalıştır'ı ( ) tıklayın.
Uygulama, girdiğiniz film incelemesinin duygusunu doğru şekilde tahmin edebilmelidir.
9. Uygulamayı daha fazla Firebase özelliğiyle güçlendirme
Firebase, TFLite modellerinizi barındırmanın yanı sıra makine öğrenimi kullanım alanlarınızı güçlendirmek 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.
- 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
- 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:
10. 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, Firebase ML Model Management API üzerinden Colab'dan doğrudan Firebase'e dağıtın.
- Kullanıcıların tahmin sonucuyla ilgili geri bildirimde bulunmasına olanak tanıyan bir mekanizma ekleyin ve kullanıcı geri bildirimlerini izlemek için Firebase Analytics'i kullanın.
- Firebase A/B Testi ile Ortalama Kelime Vektörü modelini ve MobileBERT modelini A/B testi yapın.
Daha Fazla Bilgi
- Firebase Makine Öğrenimi belgeleri
- TensorFlow Lite belgeleri
- Firebase ile uygulama performansını ölçme
- Firebase ile A/B Testi modelleri