Menambahkan Klasifikasi Teks di perangkat ke aplikasi Anda dengan TensorFlow Lite dan Firebase - Codelab iOS

1. Ringkasan

klasifikasi_hasil_layar.png

Selamat datang di codelab Klasifikasi Teks dengan TensorFlow Lite dan Firebase. Dalam codelab ini, Anda akan mempelajari cara menggunakan TensorFlow Lite dan Firebase untuk melatih dan men-deploy model klasifikasi teks ke aplikasi Anda. Codelab ini didasarkan pada contoh TensorFlow Lite ini.

Klasifikasi teks adalah proses menetapkan tag atau kategori ke dalam teks sesuai dengan kontennya. Ini adalah salah satu tugas mendasar dalam Natural Language Processing (NLP) dengan penerapan yang luas seperti analisis sentimen, pelabelan topik, deteksi spam, dan deteksi intent.

Analisis sentimen adalah interpretasi dan klasifikasi emosi (positif, negatif, dan netral) dalam data teks menggunakan teknik analisis teks. Analisis sentimen memungkinkan bisnis mengidentifikasi sentimen pelanggan terhadap produk, merek, atau layanan dalam percakapan dan masukan online.

Tutorial ini menunjukkan cara membangun model machine learning untuk analisis sentimen, khususnya mengklasifikasikan teks sebagai positif atau negatif. Ini adalah contoh klasifikasi biner—atau kelas dua—yang merupakan jenis masalah machine learning yang penting dan dapat diterapkan secara luas.

Yang akan Anda pelajari

  • Latih model analisis sentimen TF Lite dengan TF Lite Model Maker
  • Men-deploy model TF Lite ke Firebase ML dan mengaksesnya dari aplikasi Anda
  • Melacak masukan pengguna untuk mengukur akurasi model dengan Firebase Analytics
  • Membuat profil performa model melalui Firebase Performance Monitoring
  • Pilih salah satu dari beberapa model yang di-deploy yang dimuat melalui Remote Config
  • Bereksperimen dengan berbagai model melalui Firebase A/B Testing

Yang Anda butuhkan

  • Xcode 11 (atau yang lebih baru)
  • CocoaPods 1.9.1 (atau yang lebih tinggi)

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membacanya dan menyelesaikan latihan

Bagaimana penilaian Anda terhadap pengalaman membangun aplikasi Android?

Pemula Menengah Mahir

2. Membuat project Firebase console

Menambahkan Firebase ke project

  1. Buka Firebase console.
  2. Pilih Create New Project dan beri nama project Anda "Firebase ML iOS Codelab".

3. Mendapatkan Project Contoh

Mendownload Kode

Mulai dengan meng-clone project contoh dan menjalankan pod update di direktori project:

git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git
cd codelab-textclassification-ios
pod install --repo-update

Jika belum menginstal git, Anda juga dapat mendownload project contoh dari halaman GitHub atau dengan mengklik link ini. Setelah mendownload project, jalankan di Xcode dan coba klasifikasi teks untuk merasakan cara kerjanya.

Menyiapkan Firebase

Ikuti dokumentasi untuk membuat project Firebase baru. Setelah mendapatkan project, download file GoogleService-Info.plist project dari Firebase console dan tarik ke root project Xcode.

9efb62a92f27e939.png

Tambahkan Firebase ke Podfile Anda dan jalankan penginstalan pod.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

Di metode didFinishLaunchingWithOptions AppDelegate, impor Firebase di bagian atas file

import FirebaseCore

Dan tambahkan panggilan untuk mengonfigurasi Firebase.

FirebaseApp.configure()

Jalankan kembali project untuk memastikan aplikasi dikonfigurasi dengan benar dan tidak error saat diluncurkan.

4. Melatih model analisis sentimen

Kita akan menggunakan TensorFlow Lite Model Maker untuk melatih model klasifikasi teks guna memprediksi sentimen teks tertentu.

Langkah ini ditampilkan sebagai notebook Python yang dapat Anda buka di Google Colab.

Buka di Colab

Setelah menyelesaikan langkah ini, Anda akan memiliki model analisis sentimen TensorFlow Lite yang siap untuk di-deploy ke aplikasi seluler.

5. Men-deploy model ke Firebase ML

Men-deploy model ke Firebase ML berguna karena dua alasan utama:

  1. Kita dapat mempertahankan ukuran penginstalan aplikasi tetap kecil dan hanya mendownload model jika diperlukan
  2. Model dapat diperbarui secara berkala dan dengan siklus rilis yang berbeda dari seluruh aplikasi

Model ini dapat di-deploy melalui konsol atau secara terprogram, menggunakan Firebase Admin SDK. Pada langkah ini, kita akan men-deploy melalui konsol.

Pertama, buka Firebase Console dan klik Machine Learning di panel navigasi kiri. Klik 'Mulai' jika Anda membukanya untuk pertama kalinya. Lalu buka "Kustom" dan klik tombol "Add model" tombol.

Saat diminta, beri nama model sentiment_analysis, lalu upload file yang Anda download dari Colab pada langkah sebelumnya.

3c3c50e6ef12b3b.pngS

6. Mendownload model dari Firebase ML

Memilih waktu untuk mendownload model jarak jauh dari Firebase ke aplikasi Anda bisa jadi sulit karena model TFLite dapat tumbuh relatif besar. Idealnya, kita ingin menghindari pemuatan model secara langsung saat aplikasi diluncurkan, karena jika model kita hanya digunakan untuk satu fitur dan pengguna tidak pernah menggunakan fitur tersebut, kita akan mendownload data dalam jumlah yang signifikan tanpa alasan. Kita juga dapat menetapkan opsi download seperti hanya mengambil model saat terhubung ke Wi-Fi. Jika Anda ingin memastikan bahwa model tersedia bahkan tanpa koneksi jaringan, penting juga untuk memaketkan model tanpa aplikasi sebagai cadangan.

Untuk memudahkan, kami akan menghapus model yang dipaketkan secara default dan selalu mendownload model dari Firebase saat aplikasi dimulai untuk pertama kalinya. Dengan demikian, saat menjalankan analisis sentimen, Anda dapat yakin bahwa inferensi berjalan dengan model yang disediakan dari Firebase.

Di bagian atas ModelLoader.swift, impor modul Firebase.

import FirebaseCore
import FirebaseMLModelDownloader

Kemudian, terapkan metode berikut.

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))
          }
  }
}

Di viewDidLoad ViewController.swift, ganti panggilan ke loadModel() dengan metode download model baru kita.

// 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
}

Jalankan kembali aplikasi Anda. Setelah beberapa detik, Anda akan melihat log di Xcode yang menunjukkan bahwa model jarak jauh telah berhasil didownload. Coba ketik beberapa teks dan pastikan bahwa perilaku aplikasi tidak berubah.

7. Mengintegrasikan model di aplikasi Anda

Library Tugas Tensorflow Lite membantu Anda mengintegrasikan model TensorFlow Lite ke dalam aplikasi hanya dengan beberapa baris kode. Kita akan melakukan inisialisasi instance TFLNLClassifier menggunakan model TensorFlow Lite yang didownload dari Firebase. Kemudian, kita akan menggunakannya untuk mengklasifikasikan input teks dari pengguna aplikasi dan menampilkan hasilnya di UI.

Menambahkan dependensi

Buka Podfile aplikasi dan tambahkan Library Tugas TensorFlow Lite (Teks) di dependensi aplikasi. Pastikan Anda menambahkan dependensi di bagian deklarasi target 'TextClassification'.

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Jalankan pod install untuk menginstal dependensi baru.

Melakukan inisialisasi pengklasifikasi teks

Kemudian, kita akan memuat model analisis sentimen yang didownload dari Firebase menggunakan NLClassifier Library Tugas.

ViewController.swift

Mari kita deklarasikan variabel instance TFLNLClassifier. Di bagian atas file, impor dependensi baru:

import TensorFlowLiteTaskText

Temukan komentar ini di atas metode yang kita ubah pada langkah terakhir:

// TODO: Add a TFLNLClassifier property.

Ganti TODO dengan kode berikut:

private var classifier: TFLNLClassifier?

Lakukan inisialisasi variabel textClassifier dengan model analisis sentimen yang didownload dari Firebase. Temukan komentar ini yang telah kita tambahkan di langkah terakhir:

// TODO: Initialize an NLClassifier from the downloaded model

Ganti TODO dengan kode berikut:

let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)

Mengklasifikasikan teks

Setelah instance classifier disiapkan, Anda dapat menjalankan analisis sentimen dengan satu panggilan metode.

ViewController.swift

Dalam metode classify(text:), temukan komentar TODO:

// TODO: Run sentiment analysis on the input text

Ganti komentar dengan kode berikut:

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. Menjalankan aplikasi akhir

Anda telah mengintegrasikan model analisis sentimen ke aplikasi, jadi mari kita uji. Hubungkan perangkat iOS Anda, lalu klik Run ( execute.png) di toolbar Xcode.

Aplikasi harus dapat memprediksi dengan benar sentimen ulasan film yang Anda masukkan.

classification_result_screen.png

9. Tingkatkan aplikasi dengan lebih banyak fitur Firebase

Selain menghosting model TFLite Anda, Firebase menyediakan beberapa fitur lain untuk mendukung kasus penggunaan machine learning Anda:

  • Firebase Performance Monitoring untuk mengukur kecepatan inferensi model yang dijalankan pada perangkat seluler.
  • Firebase Analytics untuk mengukur seberapa baik performa model Anda dalam produksi dengan mengukur reaksi pengguna.
  • Firebase A/B Testing untuk menguji beberapa versi model Anda
  • Ingatkah Anda bahwa kita telah melatih dua versi model TFLite sebelumnya? Pengujian A/B adalah cara yang baik untuk mengetahui versi mana yang berperforma lebih baik dalam produksi.

Untuk mempelajari lebih lanjut cara memanfaatkan fitur ini di aplikasi Anda, lihat codelab di bawah:

10. Selamat!

Dalam codelab ini, Anda telah mempelajari cara melatih model TFLite analisis sentimen dan men-deploynya ke aplikasi seluler menggunakan Firebase. Untuk mempelajari TFLite dan Firebase lebih lanjut, lihat contoh TFLite lainnya dan panduan memulai Firebase.

Yang telah kita bahas

  • TensorFlow Lite
  • Firebase ML

Langkah Berikutnya

  • Ukur kecepatan inferensi model Anda dengan Firebase Performance Monitoring.
  • Deploy model dari Colab langsung ke Firebase melalui Firebase ML Model Management API.
  • Tambahkan mekanisme untuk mengizinkan pengguna memberikan masukan tentang hasil prediksi, dan gunakan Firebase Analytics untuk melacak masukan pengguna.
  • Lakukan pengujian A/B pada model Average Word Vector dan model MobileBERT dengan Firebase A/B Testing.

Pelajari Lebih Lanjut

Ada Pertanyaan?

Melaporkan Masalah