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

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

1. Genel Bakış

sınıflandırma_result_screen.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ğ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 modeli eğitin
  • 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 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 alıştırmaları tamamlayın

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

Acemi Orta düzey 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 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 izleyin. Projenizi aldıktan sonra, projenizin GoogleService-Info.plist dosyasını Firebase konsolundan indirin ve Xcode projesinin kök dizinine sürükleyin.

9efb62a92f27e939.png

Pod dosyanıza Firebase 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

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şlatıldığında çökmediğinden emin olmak için projeyi yeniden çalıştırın.

4. 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.

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.

5. Firebase ML'ye bir model dağıtın

Firebase ML'ye bir model 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 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.

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 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.

ModelLoader.swift dosyasının en üstünde, ModelLoader.swift 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 belirten bir oturum açmalısınız. Bir 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ığı, yalnızca birkaç satır kodla TensorFlow Lite modellerini 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 Görev Kitaplığı (Metin) ekleyin. Bağımlılığı target 'TextClassification' bildirimi altına eklediğinizden emin olun.

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Yeni bağımlılığı pod install çalıştırın.

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.

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

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 duygu 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ırma

classifier örneği ayarlandıktan sonra, tek bir yöntem çağrısı ile 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 cihazınızı bağlayın ve Çalıştır'a ( yürüt.png ) Xcode araç çubuğunda.

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

sınıflandırma_result_screen.png

9. 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:

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.

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

Sorunuz mu var?

Sorunları Bildir