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 duyarlılık analizi modelini eğitme
- TF Lite modellerini Firebase ML'ye dağıtın ve bunlara uygulamanızdan erişin
- Firebase Analytics ile model doğruluğunu ölçmek için kullanıcı geri bildirimlerini izleyin
- Firebase Performance Monitoring aracılığıyla model performansının profilini çıkarın
- Remote Config aracılığıyla birden fazla dağıtılan modelden hangisinin yükleneceğini seçin
- Firebase A/B Testi aracılığıyla farklı modellerle denemeler yapın
İhtiyacınız olan şey
- Xcode 11 (veya üstü)
- CocoaPod'lar 1.9.1 (veya üstü)
Bu öğreticiyi nasıl kullanacaksınız?
Android uygulamaları oluşturma deneyiminizi nasıl değerlendirirsiniz?
2. Firebase konsol projesi oluşturun
Firebase'i projeye ekleyin
- Firebase konsoluna gidin.
- Yeni Proje Oluştur'u seçin ve projenize "Firebase ML iOS Codelab" adını verin.
3. Örnek Projeyi Alın
Kodu İndir
Örnek projeyi kopyalayıp proje dizininde pod update
çalıştırarak başlayın:
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
Eğer git yüklü değilse örnek projeyi GitHub sayfasından veya bu bağlantıya tıklayarak da indirebilirsiniz. Projeyi indirdikten sonra Xcode'da çalıştırın ve nasıl çalıştığına dair bir fikir edinmek için metin sınıflandırmasıyla oynayın.
Firebase'i kurun
Yeni bir Firebase projesi oluşturmak için belgeleri izleyin. Projenizi aldıktan sonra projenizin GoogleService-Info.plist
dosyasını Firebase konsolundan indirin ve Xcode projesinin köküne sürükleyin.
Firebase'i Pod dosyanıza ekleyin ve pod kurulumunu çalıştırın.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
AppDelegate
didFinishLaunchingWithOptions
yönteminde, dosyanın en üstüne Firebase'i içe aktarın
import FirebaseCore
Firebase'i yapılandırmak için bir çağrı ekleyin.
FirebaseApp.configure()
Uygulamanın doğru şekilde yapılandırıldığından ve başlatma sırasında kilitlenmediğinden emin olmak için projeyi yeniden çalıştırın.
4. Bir duyarlılık analizi modeli 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.
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.
5. 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.
6. 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 yedek olarak paketlemeniz de ö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.
ModelLoader.swift
dosyasının üst kısmında Firebase modülünü içe aktarın.
import FirebaseCore import FirebaseMLModelDownloader
Daha sonra 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
viewDidLoad
dosyasında, 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örmelisiniz. Biraz metin yazmayı deneyin ve uygulamanın davranışının değişmediğini doğrulayın.
7. 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 TFLNLClassifier
ö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 Pod 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
çalıştırın.
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.
ViewController.swift
Bir TFLNLClassifier örnek değişkeni tanımlayalım. Dosyanın en üstünde yeni bağımlılığı içe aktarın:
import TensorFlowLiteTaskText
Son adımda değiştirdiğimiz yöntemin üzerinde bu yorumu bulun:
// TODO: Add a TFLNLClassifier property.
TODO'yu 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'yu aşağıdaki kodla değiştirin:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Metni sınıflandır
classifier
örneği ayarlandıktan sonra tek bir yöntem çağrısıyla duyarlılık analizini ç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. Son uygulamayı çalıştırın
Duyarlılık analizi modelini uygulamaya entegre ettiniz, hadi test edelim. iOS aygıtınızı bağlayın ve Çalıştır'a tıklayın ( ) Xcode araç çubuğunda.
Uygulama, girdiğiniz film incelemesinin yaklaşımını doğru bir şekilde tahmin edebilmelidir.
9. 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:
10. 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