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

1. Ringkasan

text-classification-result.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 penetapan tag atau kategori ke teks sesuai dengan kontennya. Ini adalah salah satu tugas mendasar dalam Natural Language Processing (NLP) dengan aplikasi yang luas seperti analisis sentimen, pemberian label 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 membuat model machine learning untuk analisis sentimen, khususnya mengklasifikasikan teks sebagai positif atau negatif. Ini adalah contoh klasifikasi biner—atau dua kelas—, jenis masalah machine learning yang penting dan berlaku secara luas.

Yang akan Anda pelajari

  • Melatih model analisis sentimen TF Lite dengan TF Lite Model Maker
  • Men-deploy model TF Lite ke Firebase ML dan mengaksesnya dari aplikasi Anda
  • Mengintegrasikan model analisis sentimen TF Lite ke aplikasi Anda menggunakan Library Tugas TF Lite

Hal yang akan Anda perlukan

  • Versi Android Studio terbaru.
  • Kode contoh.
  • Perangkat pengujian dengan Android 5.0+ dan layanan Google Play 9.8 atau yang lebih baru, atau Emulator dengan layanan Google Play 9.8 atau yang lebih baru
  • Jika menggunakan perangkat, kabel koneksi.

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membacanya dan menyelesaikan latihan

Bagaimana Anda menilai pengalaman Anda dalam mem-build aplikasi Android?

Pemula Menengah Mahir

2. Mendapatkan kode contoh

Clone repositori GitHub dari command line.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

Jika belum menginstal git, Anda juga dapat mendownload project contoh dari halaman GitHub-nya atau dengan mengklik link ini.

3. Mengimpor aplikasi awal

Dari Android Studio, pilih direktori codelab-textclassification-android-master ( android_studio_folder.png) dari download kode contoh (File > Open > .../codelab-textclassification-android-master/start).

Sekarang Anda akan membuka project awal di Android Studio.

4. Menjalankan aplikasi awal

Setelah mengimpor project ke Android Studio, Anda siap menjalankan aplikasi untuk pertama kalinya. Hubungkan perangkat Android Anda, lalu klik Run ( execute.png) di toolbar Android Studio.

Aplikasi akan diluncurkan di perangkat Anda. Aplikasi ini hanya berisi UI sederhana yang memudahkan integrasi dan pengujian model klasifikasi teks di langkah berikutnya. Pada tahap ini, jika Anda mencoba memprediksi sentimen, aplikasi hanya akan menampilkan beberapa hasil dummy.

2fb4e69fafb2e3ed.png

5. Membuat project Firebase console

Menambahkan Firebase ke project

  1. Buka Firebase console.
  2. Pilih Tambahkan project.
  3. Pilih atau masukkan Nama project.
  4. Ikuti langkah-langkah penyiapan yang tersisa di Firebase console, lalu klik Buat project (atau Tambahkan Firebase, jika Anda menggunakan project Google yang sudah ada).

6. Menambahkan Firebase ke aplikasi

  1. Dari layar ringkasan project baru Anda, klik ikon Android untuk meluncurkan alur kerja penyiapan.
  2. Masukkan nama paket codelab: org.tensorflow.lite.codelabs.textclassification

Menambahkan file google-services.json ke aplikasi Anda

Setelah menambahkan nama paket dan memilih Daftarkan**, Klik Download google-services.json** untuk mendapatkan file konfigurasi Android Firebase, lalu salin file google-services.json ke direktori *app* di project Anda.

Menambahkan plugin google-services ke aplikasi Anda

Ikuti petunjuk di Firebase Console untuk memperbarui file build.gradle.kts guna menambahkan Firebase ke aplikasi Anda.

Plugin google-services menggunakan file google-services.json untuk mengonfigurasi aplikasi Anda agar dapat menggunakan Firebase.

Menyinkronkan project dengan file gradle

Untuk memastikan bahwa semua dependensi tersedia untuk aplikasi Anda, Anda harus menyinkronkan project dengan file gradle pada tahap ini. Pilih File > Sync Project with Gradle Files dari toolbar Android Studio.

7. Menjalankan aplikasi dengan Firebase

Setelah mengonfigurasi plugin google-services dengan file JSON, Anda siap menjalankan aplikasi dengan Firebase. Hubungkan perangkat Android Anda, lalu klik Run ( execute.png) di toolbar Android Studio.

Aplikasi akan diluncurkan di perangkat Anda. Pada tahap ini, aplikasi Anda seharusnya masih berhasil di-build.

8. Melatih model analisis sentimen

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

Langkah ini disajikan sebagai notebook Python yang dapat Anda buka di Google Colab. Anda dapat memilih Runtime > Run all untuk menjalankan semua notebook sekaligus.

Buka di Colab

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

9. 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 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, lalu klik Machine Learning di panel navigasi kiri. Klik 'Mulai' jika Anda membukanya untuk pertama kalinya. Kemudian, buka "Kustom" dan klik tombol "Tambahkan model".

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

3c3c50e6ef12b3b.png

10. 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 meskipun tanpa koneksi jaringan, Anda juga harus memaketkannya tanpa aplikasi sebagai cadangan.

Untuk memudahkan, kita 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 file app/build.gradle.kts, tambahkan dependensi Firebase Machine Learning.

app/build.gradle.kts

Temukan komentar ini:

// TODO 1: Add Firebase ML dependency

Kemudian, tambahkan:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

Saat diminta oleh Android Studio untuk menyinkronkan project Anda, pilih Sinkronkan Sekarang.

Kemudian, mari kita tambahkan beberapa kode untuk mendownload model dari Firebase.

MainActivity.java

Temukan komentar ini:

// TODO 2: Implement a method to download TFLite model from Firebase

Kemudian, tambahkan:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

Selanjutnya, panggil metode downloadModel dalam metode onCreate aktivitas.

MainActivity.java

Temukan komentar ini:

// TODO 3: Call the method to download TFLite model

Kemudian, tambahkan:

downloadModel("sentiment_analysis");

11. 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 NLClassifier 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 file Gradle aplikasi dan tambahkan Library Tugas TensorFlow Lite (Teks) di dependensi aplikasi.

app/build.gradle

Temukan komentar ini:

// TODO 4: Add TFLite Task API (Text) dependency

Kemudian, tambahkan:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

Saat diminta oleh Android Studio untuk menyinkronkan project Anda, pilih Sinkronkan Sekarang.

Melakukan inisialisasi pengklasifikasi teks

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

MainActivity.java

Mari kita deklarasikan variabel instance NLClassifier. Temukan komentar ini:

// TODO 5: Define a NLClassifier variable

Kemudian, tambahkan:

private NLClassifier textClassifier;

Lakukan inisialisasi variabel textClassifier dengan model analisis sentimen yang didownload dari Firebase. Temukan komentar ini:

// TODO 6: Initialize a TextClassifier with the downloaded model

Kemudian, tambahkan:

textClassifier = NLClassifier.createFromFile(model.getFile());

Mengklasifikasikan teks

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

MainActivity.java

Temukan komentar ini:

// TODO 7: Run sentiment analysis on the input text

Kemudian, tambahkan:

List<Category> results = textClassifier.classify(text);

Menerapkan pascapemrosesan

Terakhir, kita akan mengonversi output model menjadi teks deskriptif untuk ditampilkan di layar.

MainActivity.java

Temukan komentar ini:

// TODO 8: Convert the result to a human-readable text

Hapus kode yang menghasilkan teks hasil dummy:

String textToShow = "Dummy classification result.\n";

Kemudian, tambahkan:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12. Menjalankan aplikasi akhir

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

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

img/text-classification-result.png

13. Meningkatkan kualitas aplikasi dengan lebih banyak fitur Firebase

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

  • Firebase Performance Monitoring untuk mengukur kecepatan inferensi model yang berjalan di perangkat pengguna.
  • 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:

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