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

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 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ğine dayanmaktadı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 niyet algılama gibi geniş uygulamalarla Doğal Dil İşleme'deki (NLP) temel görevlerden biridir.

Duygu analizi, metin analizi teknikleri kullanılarak metin verileri içindeki duyguların (olumlu, olumsuz ve nötr) 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 öğretici, özellikle metni pozitif veya negatif olarak sınıflandırmak üzere duyarlılık 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ırmaya bir örnektir.

ne öğreneceksin

  • TF Lite Model Maker ile bir TF Lite duyarlılık analizi modeli eğitin
  • TF Lite modellerini Firebase ML'ye dağıtın ve onlara 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 profil modeli performansı
  • Birden çok dağıtılan modelden hangisinin Remote Config aracılığıyla yüklendiğini seçin
  • Firebase A/B Testi ile farklı modellerle denemeler yapın

Neye ihtiyacın olacak

  • Xcode 11 (veya üstü)
  • CocoaPods 1.9.1 (veya üstü)

Bu öğreticiyi nasıl kullanacaksınız?

Sadece baştan sona oku Okuyun ve egzersizleri 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 projenizi "Firebase ML iOS Codelab" olarak adlandırın.

3. Örnek Projeyi Alın

Kodu İndir

Örnek projeyi klonlayarak ve 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

Git kurulu 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 takip edin. Projenizi aldıktan sonra, projenizin GoogleService-Info.plist dosyasını Firebase konsolundan indirin ve Xcode projesinin kök dizinine 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 'inizin didFinishLaunchingWithOptions yönteminde, dosyanın en üstünde Firebase'i içe aktarın

import FirebaseCore

Ve Firebase'i yapılandırmak için bir çağrı ekleyin.

FirebaseApp.configure()

Uygulamanın doğru 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 üzere 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 sunulur.

Colab'da aç

Bu adımı tamamladıktan sonra, bir 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ı yararlıdır:

  1. Uygulama yükleme boyutunu küçük tutabilir ve yalnızca gerekirse modeli 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 program aracılığıyla dağıtılabilir. Bu adımda konsol üzerinden konuşlandıracağız.

Öncelikle Firebase Konsolunu açın ve sol gezinme panelinde Machine Learning'e tıklayın. İlk kez açıyorsanız 'Başlayın'ı tıklayın. Ardından "Özel"e 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, Firebase'den uzak modeli 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, önemli miktarda veriyi sebepsiz yere indirmiş oluruz. Ayrıca, yalnızca wifi'ye bağlandığında modelleri getirme gibi indirme seçeneklerini de ayarlayabiliriz. Modelin bir 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 paket modeli kaldıracağız ve uygulama ilk kez başladığında her zaman Firebase'den bir model indireceğiz. Bu şekilde, duyarlılık analizi çalıştırırken, çıkarımın Firebase'den sağlanan modelle çalıştığından emin olabilirsiniz.

ModelLoader.swift üst kısmında, 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 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 gösteren bir günlük görmelisiniz. Biraz metin yazmayı deneyin ve uygulamanın davranışının değişmediğini onaylayı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. 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 Pod dosyasına gidin ve uygulamanın bağımlılıklarına TensorFlow Lite Task Library (Metin) ekleyin. Bağımlılığı target 'TextClassification' bildirimi 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

Ardından, Task Library'nin NLClassifier kullanarak Firebase'den indirilen duyarlılık analizi modelini yükleyeceğiz.

ViewController.swift

Bir TFLNLClassifier örnek değişkeni bildirelim. Dosyanın en üstünde, yeni bağımlılığı içe aktarın:

import TensorFlowLiteTaskText

Bu yorumu, son adımda değiştirdiğimiz yöntemin üzerinde bulun:

// TODO: Add an TFLNLClassifier property.

TODO'yu aşağıdaki kodla değiştirin:

private var classifier: TFLNLClassifier?

Firebase'den indirilen yaklaşım analizi modeliyle textClassifier değişkenini 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 analizi çalıştırabilirsiniz.

ViewController.swift

classify(text:) yönteminde YAPILACAK yorumu 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

Yaklaşım analizi modelini uygulamaya entegre ettiniz, şimdi test edelim. iOS cihazınızı bağlayın ve Çalıştır'a tıklayın ( yürütme.png ) Xcode araç çubuğunda.

Uygulama, girdiğiniz film incelemesinin duygusunu doğru bir şekilde tahmin edebilmelidir.

sınıflandırma_sonuç_ekranı.png

9. Uygulamayı daha fazla Firebase özelliği ile 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 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 çok sürümünü test etmek için Firebase A/B Testi
  • Daha önce TFLite modelimizin iki versiyonunu 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 yararlanacağınız hakkında daha fazla bilgi edinmek için aşağıdaki kod laboratuvarlarına göz atın:

10. Tebrikler!

Bu kod laboratuvarında, bir duyarlılık analizi TFLite modelini nasıl eğiteceğinizi ve 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 Makine Öğrenimi

Sonraki adımlar

  • Firebase Performance Monitoring ile modelinizin çıkarım hızını ölçün.
  • Modeli, Firebase ML Model Management API 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.
  • A/B, Ortalama Kelime Vektör modelini ve Firebase A/B testi ile MobileBERT modelini test edin.

Daha fazla bilgi edin

Sorunuz mu var?

Sorun Bildir