Tutorial ini menunjukkan cara membuat aplikasi Android menggunakan TensorFlow Lite untuk mengklasifikasikan teks bahasa alami. Aplikasi ini dirancang untuk perangkat Android fisik tetapi juga dapat dijalankan pada emulator perangkat.
Contoh aplikasi menggunakan TensorFlow Lite untuk mengklasifikasikan teks sebagai positif atau negatif, menggunakan pustaka Tugas untuk bahasa alami (NL) untuk mengaktifkan eksekusi model pembelajaran mesin klasifikasi teks.
Jika Anda memperbarui proyek yang sudah ada, Anda dapat menggunakan contoh aplikasi sebagai referensi atau templat. Untuk petunjuk tentang cara menambahkan klasifikasi teks ke aplikasi yang sudah ada, lihat Memperbarui dan memodifikasi aplikasi Anda .
Ikhtisar klasifikasi teks
Klasifikasi teks adalah tugas pembelajaran mesin yang menetapkan serangkaian kategori yang telah ditentukan sebelumnya ke teks terbuka. Model klasifikasi teks dilatih pada korpus teks bahasa alami, tempat kata atau frasa diklasifikasikan secara manual.
Model yang dilatih menerima teks sebagai masukan dan mencoba mengkategorikan teks berdasarkan kumpulan kelas yang diketahui yang dilatih untuk mengklasifikasikannya. Misalnya, model dalam contoh ini menerima cuplikan teks dan menentukan apakah sentimen teks tersebut positif atau negatif. Untuk setiap cuplikan teks, model klasifikasi teks mengeluarkan skor yang menunjukkan keyakinan teks tersebut diklasifikasikan dengan benar sebagai positif atau negatif.
Untuk informasi selengkapnya tentang cara pembuatan model dalam tutorial ini, lihat tutorial Klasifikasi teks dengan TensorFlow Lite Model Maker .
Model dan kumpulan data
Tutorial ini menggunakan model yang dilatih menggunakan dataset SST-2 (Stanford Sentiment Treebank). SST-2 berisi 67.349 review film untuk pelatihan dan 872 review film untuk pengujian, dengan setiap review dikategorikan positif atau negatif. Model yang digunakan dalam aplikasi ini dilatih menggunakan alat TensorFlow Lite Model Maker .
Contoh aplikasi menggunakan model terlatih berikut:
Vektor Kata Rata-Rata (
NLClassifier
) -NLClassifier
Perpustakaan Tugas mengklasifikasikan teks masukan ke dalam kategori berbeda, dan dapat menangani sebagian besar model klasifikasi teks.MobileBERT (
BertNLClassifier
) -BertNLClassifier
di Perpustakaan Tugas mirip dengan NLClassifier tetapi disesuaikan untuk kasus-kasus yang memerlukan tokenisasi Wordpiece dan Sentencepiece di luar grafik.
Siapkan dan jalankan aplikasi contoh
Untuk menyiapkan aplikasi klasifikasi teks, unduh aplikasi contoh dari GitHub dan jalankan menggunakan Android Studio .
Persyaratan sistem
- Android Studio versi 2021.1.1 (Bumblebee) atau lebih tinggi.
- Android SDK versi 31 atau lebih tinggi
- Perangkat Android dengan versi OS minimum SDK 21 (Android 7.0 - Nougat) dengan mode pengembang diaktifkan, atau Android Emulator.
Dapatkan kode contoh
Buat salinan lokal dari kode contoh. Anda akan menggunakan kode ini untuk membuat proyek di Android Studio dan menjalankan aplikasi contoh.
Untuk mengkloning dan mengatur kode contoh:
- Kloning repositori git
git clone https://github.com/tensorflow/examples.git
- Secara opsional, konfigurasikan instance git Anda untuk menggunakan checkout jarang, sehingga Anda hanya memiliki file untuk aplikasi contoh klasifikasi teks:
cd examples git sparse-checkout init --cone git sparse-checkout set lite/examples/text_classification/android
Impor dan jalankan proyek
Buat proyek dari kode contoh yang diunduh, bangun proyek, lalu jalankan.
Untuk mengimpor dan membuat proyek kode contoh:
- Mulai Android Studio .
- Dari Android Studio, pilih File > New > Import Project .
- Navigasikan ke direktori kode contoh yang berisi file build.gradle (
.../examples/lite/examples/text_classification/android/build.gradle
) dan pilih direktori tersebut. - Jika Android Studio meminta Sinkronisasi Gradle, pilih OK.
- Pastikan perangkat Android Anda terhubung ke komputer dan mode pengembang diaktifkan. Klik panah
Run
yang berwarna hijau.
Jika Anda memilih direktori yang benar, Android Studio akan membuat proyek baru dan membangunnya. Proses ini dapat memakan waktu beberapa menit, bergantung pada kecepatan komputer Anda dan apakah Anda pernah menggunakan Android Studio untuk proyek lain. Saat build selesai, Android Studio menampilkan pesan BUILD SUCCESSFUL
di panel status Build Output .
Untuk menjalankan proyek:
- Dari Android Studio, jalankan proyek dengan memilih Run > Run… .
- Pilih perangkat Android yang terpasang (atau emulator) untuk menguji aplikasi.
Menggunakan aplikasi
Setelah menjalankan proyek di Android Studio, aplikasi akan otomatis terbuka di perangkat atau emulator perangkat yang terhubung.
Untuk menggunakan pengklasifikasi teks:
- Masukkan cuplikan teks ke dalam kotak teks.
- Dari tarik-turun Delegasi , pilih
CPU
atauNNAPI
. - Tentukan model dengan memilih
AverageWordVec
atauMobileBERT
. - Pilih Klasifikasi .
Aplikasi ini menghasilkan skor positif dan skor negatif . Kedua skor ini akan berjumlah 1, dan mengukur kemungkinan bahwa sentimen teks masukan positif atau negatif. Angka yang lebih tinggi menunjukkan tingkat kepercayaan yang lebih tinggi.
Anda sekarang memiliki aplikasi klasifikasi teks yang berfungsi. Gunakan bagian berikut untuk lebih memahami cara kerja aplikasi contoh, dan cara mengimplementasikan fitur klasifikasi teks ke aplikasi produksi Anda:
Cara kerja aplikasi - Panduan tentang struktur dan file kunci dari contoh aplikasi.
Ubah aplikasi Anda - Petunjuk untuk menambahkan klasifikasi teks ke aplikasi yang sudah ada.
Cara kerja aplikasi contoh
Aplikasi ini menggunakan paket Task Library for Natural Language (NL) untuk mengimplementasikan model klasifikasi teks. Kedua model, Average Word Vector dan MobileBERT, dilatih menggunakan TensorFlow Lite Model Maker . Aplikasi berjalan pada CPU secara default, dengan opsi akselerasi perangkat keras menggunakan delegasi NNAPI.
File dan direktori berikut berisi kode penting untuk aplikasi klasifikasi teks ini:
- TextClassificationHelper.kt - Menginisialisasi pengklasifikasi teks dan menangani pemilihan model dan delegasi.
- MainActivity.kt - Mengimplementasikan aplikasi, termasuk memanggil
TextClassificationHelper
danResultsAdapter
. - ResultsAdapter.kt - Menangani dan memformat hasilnya.
Ubah aplikasi Anda
Bagian berikut menjelaskan langkah-langkah utama untuk memodifikasi aplikasi Android Anda untuk menjalankan model yang ditunjukkan dalam contoh aplikasi. Petunjuk ini menggunakan aplikasi contoh sebagai titik referensi. Perubahan spesifik yang diperlukan untuk aplikasi Anda mungkin berbeda dari aplikasi contoh.
Buka atau buat proyek Android
Anda memerlukan proyek pengembangan Android di Android Studio untuk mengikuti petunjuk selanjutnya. Ikuti petunjuk di bawah ini untuk membuka proyek yang sudah ada atau membuat proyek baru.
Untuk membuka proyek pengembangan Android yang sudah ada:
- Di Android Studio, pilih File > Buka dan pilih proyek yang sudah ada.
Untuk membuat proyek pengembangan Android dasar:
- Ikuti instruksi di Android Studio untuk Membuat proyek dasar .
Untuk informasi selengkapnya tentang penggunaan Android Studio, lihat dokumentasi Android Studio .
Tambahkan dependensi proyek
Dalam aplikasi Anda sendiri, Anda harus menambahkan dependensi proyek tertentu untuk menjalankan model pembelajaran mesin TensorFlow Lite, dan mengakses fungsi utilitas yang mengonversi data seperti string, menjadi format data tensor yang dapat diproses oleh model yang Anda gunakan.
Petunjuk berikut menjelaskan cara menambahkan dependensi proyek dan modul yang diperlukan ke proyek aplikasi Android Anda sendiri.
Untuk menambahkan dependensi modul:
Pada modul yang menggunakan TensorFlow Lite, perbarui file
build.gradle
modul untuk menyertakan dependensi berikut.Dalam contoh aplikasi, dependensi terletak di app/build.gradle :
dependencies { ... implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.0' }
Proyek harus menyertakan pustaka tugas Teks (
tensorflow-lite-task-text
).Jika Anda ingin memodifikasi aplikasi ini agar berjalan pada unit pemrosesan grafis (GPU), pustaka GPU (
tensorflow-lite-gpu-delegate-plugin
) menyediakan infrastruktur untuk menjalankan aplikasi pada GPU, dan Delegate (tensorflow-lite-gpu
) menyediakan daftar kompatibilitas. Menjalankan aplikasi ini pada GPU berada di luar cakupan tutorial ini.Di Android Studio, sinkronkan dependensi proyek dengan memilih: File > Sync Project with Gradle Files .
Inisialisasi model ML
Di aplikasi Android, Anda harus menginisialisasi model machine learning TensorFlow Lite dengan parameter sebelum menjalankan prediksi dengan model tersebut.
Model TensorFlow Lite disimpan sebagai file *.tflite
. File model berisi logika prediksi dan biasanya menyertakan metadata tentang cara menafsirkan hasil prediksi, seperti nama kelas prediksi. Biasanya, file model disimpan di direktori src/main/assets
proyek pengembangan Anda, seperti pada contoh kode:
-
<project>/src/main/assets/mobilebert.tflite
-
<project>/src/main/assets/wordvec.tflite
Untuk kenyamanan dan keterbacaan kode, contoh mendeklarasikan objek pendamping yang menentukan pengaturan model.
Untuk menginisialisasi model di aplikasi Anda:
Buat objek pendamping untuk menentukan pengaturan model. Dalam contoh aplikasi, objek ini terletak di TextClassificationHelper.kt :
companion object { const val DELEGATE_CPU = 0 const val DELEGATE_NNAPI = 1 const val WORD_VEC = "wordvec.tflite" const val MOBILEBERT = "mobilebert.tflite" }
Buat pengaturan untuk model dengan membuat objek pengklasifikasi, dan membuat objek TensorFlow Lite menggunakan
BertNLClassifier
atauNLClassifier
.Dalam contoh aplikasi, ini terletak di fungsi
initClassifier
dalam TextClassificationHelper.kt :fun initClassifier() { ... if( currentModel == MOBILEBERT ) { ... bertClassifier = BertNLClassifier.createFromFileAndOptions( context, MOBILEBERT, options) } else if (currentModel == WORD_VEC) { ... nlClassifier = NLClassifier.createFromFileAndOptions( context, WORD_VEC, options) } }
Aktifkan akselerasi perangkat keras (opsional)
Saat menginisialisasi model TensorFlow Lite di aplikasi Anda, Anda harus mempertimbangkan penggunaan fitur akselerasi hardware untuk mempercepat penghitungan prediksi model. Delegasi TensorFlow Lite adalah modul perangkat lunak yang mempercepat eksekusi model pembelajaran mesin menggunakan perangkat keras pemrosesan khusus pada perangkat seluler, seperti unit pemrosesan grafis (GPU) atau unit pemrosesan tensor (TPU).
Untuk mengaktifkan akselerasi perangkat keras di aplikasi Anda:
Buat variabel untuk menentukan delegasi yang akan digunakan aplikasi. Dalam contoh aplikasi, variabel ini terletak di awal TextClassificationHelper.kt :
var currentDelegate: Int = 0
Buat pemilih delegasi. Dalam contoh aplikasi, pemilih delegasi terletak di fungsi
initClassifier
dalam TextClassificationHelper.kt :val baseOptionsBuilder = BaseOptions.builder() when (currentDelegate) { DELEGATE_CPU -> { // Default } DELEGATE_NNAPI -> { baseOptionsBuilder.useNnapi() } }
Disarankan untuk menggunakan delegasi untuk menjalankan model TensorFlow Lite, tetapi tidak wajib. Untuk informasi selengkapnya tentang penggunaan delegasi dengan TensorFlow Lite, lihat Delegasi TensorFlow Lite .
Siapkan data untuk model
Di aplikasi Android, kode Anda menyediakan data ke model untuk diinterpretasikan dengan mengubah data yang ada seperti teks mentah menjadi format data Tensor yang dapat diproses oleh model Anda. Data di Tensor yang Anda teruskan ke model harus memiliki dimensi atau bentuk tertentu yang cocok dengan format data yang digunakan untuk melatih model.
Aplikasi klasifikasi teks ini menerima string sebagai masukan, dan modelnya dilatih secara eksklusif pada korpus bahasa Inggris. Karakter khusus dan kata-kata non-Inggris diabaikan selama inferensi.
Untuk menyediakan data teks ke model:
Pastikan fungsi
initClassifier
berisi kode untuk delegasi dan model, seperti yang dijelaskan di bagian Inisialisasi model ML dan Aktifkan akselerasi perangkat keras .Gunakan blok
init
untuk memanggil fungsiinitClassifier
. Dalam contoh aplikasi,init
terletak di TextClassificationHelper.kt :init { initClassifier() }
Jalankan prediksi
Di aplikasi Android, setelah menginisialisasi objek BertNLClassifier atau NLClassifier , Anda dapat mulai memasukkan teks input agar model dapat dikategorikan sebagai "positif" atau "negatif".
Untuk menjalankan prediksi:
Buat fungsi
classify
, yang menggunakan pengklasifikasi yang dipilih (currentModel
) dan mengukur waktu yang dibutuhkan untuk mengklasifikasikan teks masukan (inferenceTime
). Pada contoh aplikasi, fungsiclassify
terletak di TextClassificationHelper.kt :fun classify(text: String) { executor = ScheduledThreadPoolExecutor(1) executor.execute { val results: List<Category> // inferenceTime is the amount of time, in milliseconds, that it takes to // classify the input text. var inferenceTime = SystemClock.uptimeMillis() // Use the appropriate classifier based on the selected model if(currentModel == MOBILEBERT) { results = bertClassifier.classify(text) } else { results = nlClassifier.classify(text) } inferenceTime = SystemClock.uptimeMillis() - inferenceTime listener.onResult(results, inferenceTime) } }
Teruskan hasil dari
classify
ke objek pendengar.fun classify(text: String) { ... listener.onResult(results, inferenceTime) }
Menangani keluaran model
Setelah Anda memasukkan satu baris teks, model menghasilkan skor prediksi, yang dinyatakan sebagai Float, antara 0 dan 1 untuk kategori 'positif' dan 'negatif'.
Untuk mendapatkan hasil prediksi dari model:
Buat fungsi
onResult
untuk objek pendengar guna menangani output. Dalam contoh aplikasi, objek pendengar terletak di MainActivity.ktprivate val listener = object : TextClassificationHelper.TextResultsListener { override fun onResult(results: List<Category>, inferenceTime: Long) { runOnUiThread { activityMainBinding.bottomSheetLayout.inferenceTimeVal.text = String.format("%d ms", inferenceTime) adapter.resultsList = results.sortedByDescending { it.score } adapter.notifyDataSetChanged() } } ... }
Tambahkan fungsi
onError
ke objek pendengar untuk menangani kesalahan:private val listener = object : TextClassificationHelper.TextResultsListener { ... override fun onError(error: String) { Toast.makeText(this@MainActivity, error, Toast.LENGTH_SHORT).show() } }
Setelah model mengembalikan serangkaian hasil prediksi, aplikasi Anda dapat bertindak berdasarkan prediksi tersebut dengan menyajikan hasilnya kepada pengguna atau mengeksekusi logika tambahan. Contoh aplikasi mencantumkan skor prediksi di antarmuka pengguna.
Langkah selanjutnya
- Latih dan terapkan model dari awal dengan klasifikasi Teks dengan tutorial TensorFlow Lite Model Maker .
- Jelajahi lebih banyak alat pemrosesan teks untuk TensorFlow .
- Unduh model BERT lainnya di TensorFlow Hub .
- Jelajahi berbagai kegunaan TensorFlow Lite dalam contoh .
- Pelajari lebih lanjut cara menggunakan model machine learning dengan TensorFlow Lite di bagian Model .
- Pelajari lebih lanjut cara menerapkan pembelajaran mesin di aplikasi seluler Anda di Panduan Pengembang TensorFlow Lite .