TensorFlow Lite ve Firebase - iOS Codelab ile uygulamanıza cihaz içi Metin Sınıflandırması ekleyin

1. Genel Bakış

sınıflandırma_sonuç_ekran.png

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?

Yalnızca baştan sona okuyun Okuyun ve alıştırmaları tamamlayın

Android uygulamaları oluşturma deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta seviye Yetkin

2. Firebase konsol projesi oluşturun

Firebase'i projeye ekleyin

  1. Firebase konsoluna gidin.
  2. 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.

9efb62a92f27e939.png

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:

  1. Uygulama yükleme boyutunu küçük tutabilir ve modeli yalnızca ihtiyaç duyulduğunda indirebiliriz
  2. 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.

3c3c50e6ef12b3b.png

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 ( yürüt.png ) Xcode araç çubuğunda.

Uygulama, girdiğiniz film incelemesinin yaklaşımını doğru bir şekilde tahmin edebilmelidir.

sınıflandırma_sonuç_ekran.png

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

Bir Sorunuz mu var?

Sorunları Bildir