Membuat model klasifikasi teks kustom, lalu mengupdate aplikasi Anda

1. Sebelum memulai

Dalam codelab ini, Anda akan mempelajari cara memperbarui model klasifikasi teks, yang dibuat dari set data komentar spam blog asli, tetapi ditingkatkan kualitasnya dengan komentar Anda sendiri, sehingga Anda dapat memiliki model yang sesuai dengan data Anda.

Prasyarat

Codelab ini adalah bagian dari jalur Mulai menggunakan klasifikasi teks seluler. Codelab di jalur ini bersifat berurutan. Aplikasi dan model yang akan Anda kerjakan seharusnya sudah dibuat sebelumnya, saat Anda mengikuti jalur pertama. Jika Anda belum menyelesaikan aktivitas sebelumnya, silakan berhenti dan melakukannya sekarang:

  • Membangun aplikasi gaya pesan dasar
  • Membangun model machine learning spam komentar
  • Mengupdate aplikasi untuk menggunakan model Machine Learning pemfilteran spam

Yang akan Anda pelajari

  • Cara memperbarui model klasifikasi teks yang Anda buat di jalur Mulai menggunakan klasifikasi teks seluler
  • Cara menyesuaikan model agar dapat memblokir spam yang paling umum di aplikasi Anda

Yang Anda butuhkan

  • Model aplikasi pesan dan pemfilteran spam yang telah Anda amati dan buat di aktivitas sebelumnya.

2. Meningkatkan kualitas klasifikasi teks

Anda bisa mendapatkan kode untuk ini dengan meng-clone repo ini dan memuat aplikasi dari TextClassificationStep2. Anda dapat menemukannya di jalur TextClassificationOnMobile->Android.

Kode selesai juga tersedia untuk Anda sebagai TextClassificationStep3.

Jika Anda membuka aplikasi pesan yang Anda buat dan mencoba pesan ini, skor spam akan sangat rendah:

f111e21903d6fd1f.png

Kesalahan ejaan seperti ini adalah cara yang umum untuk menghindari filter spam. Meskipun pesan tersebut tidak berbahaya, spammer akan sering menambahkan link pada ID pengguna (bukan di pesan itu sendiri, karena link tersebut dapat memicu filter).

Di lab ini, Anda akan melihat cara mengupdate model dengan data baru. Setelah selesai, menelusuri dengan kalimat yang sama akan memberikan hasil seperti di bawah ini, yang mana pesan ini diidentifikasi sebagai spam!

c96613a0a4d1fef0.png

3. Mengedit file CSV

Untuk melatih model asli, set data dibuat sebagai CSV (lmblog_comments.csv) yang berisi hampir seribu komentar yang diberi label spam atau bukan spam. (Buka CSV di editor teks apa pun jika Anda ingin memeriksanya.)

Susunan CSV adalah membuat baris pertama mendeskripsikan kolom – di sini kolom diberi label commenttext dan spam.

Setiap baris berikutnya mengikuti format berikut:

64c0128548e1d082.pngS

Label di sebelah kanan benar untuk spam, dan salah jika bukan spam. Dalam hal ini baris 3 dianggap spam.

Untuk menambahkan komentar Anda sendiri, misalnya, jika Anda memiliki banyak orang yang mengirim spam ke situs Anda dengan pesan tentang perdagangan online, yang harus Anda lakukan adalah menambahkan contoh komentar spam di bagian bawah situs Anda. Contoh:

online trading can be highly highly effective,true
online trading can be highly effective,true
online trading now,true
online trading here,true
online trading for the win,true

Setelah selesai, simpan file dengan nama baru (misalnya lmblog_comments.csv), dan Anda dapat menggunakannya untuk melatih model baru.

Dalam codelab ini, Anda akan menggunakan contoh yang disediakan, diedit, dan dihosting di Google Cloud Storage beserta info terbaru seputar perdagangan online. Anda dapat mengubah URL dalam kode jika ingin menggunakan set data Anda sendiri.

4. Melatih ulang model dengan data baru

Untuk melatih ulang model, Anda cukup menggunakan kembali kode dari versi sebelumnya (SpamCommentsModelMaker.ipynb), tetapi arahkan ke set data CSV baru, yang disebut lmblog_comments_extras.csv. Jika menginginkan notebook lengkap dengan konten yang diupdate, Anda dapat menemukannya sebagai SpamCommentsUpdateModelMaker.ipynb.

Jika memiliki akses ke Google Colab, Anda dapat meluncurkannya langsung dari di sini. Jika tidak, dapatkan kode dari repo dan jalankan di lingkungan notebook pilihan Anda.

Berikut adalah kode yang diperbarui:

training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',   
          origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
                  lmblog_comments_extras.csv', 
          extract=False)

Saat melatih, Anda akan melihat bahwa model akan tetap dilatih dengan tingkat akurasi yang tinggi:

8886033d1f8161c.png

Buka notebook untuk mendownload file model, vocab, dan label. Pada langkah berikutnya, Anda akan mengintegrasikannya di Android.

5. Update Aplikasi Android Anda

  1. Buka aplikasi di Android Studio, dan pastikan Android dipilih di bagian atas penjelajah project.
  2. Temukan file assets Anda yang berisi label, model, dan kosakata dari file model versi lama.

91116524e9016ed4.pngS

  1. Klik kanan folder aset.
  2. Di menu, pilih opsi untuk membuka folder dengan pengelola file sistem operasi Anda. (Pengungkapan di Finder pada Mac, seperti yang ditunjukkan. Tombol tersebut akan menjadi Show in Explorer di Windows, dan Open in Files atau yang serupa di Linux.)

25f63f9629657e85.pngS

  1. Tindakan ini akan membuka direktori yang berisi model, kosakata, dan label di file manager sistem operasi Anda. Salin skrip baru yang Anda buat di langkah sebelumnya.

Anda tidak perlu membuat perubahan apa pun pada kode di aplikasi. Jalankan dan cobalah, dan Anda akan melihat hasil seperti di atas, di mana model telah ditingkatkan untuk mendeteksi "perdagangan online" skenario teks.

Versi kode yang sudah selesai tersedia di repo sebagai TextClassificationStep3.

6. Update Aplikasi iOS Anda

Anda bisa mendapatkan kode untuk ini dengan meng-clone repo ini dan memuat aplikasi dari TextClassificationStep2. Anda dapat menemukannya di jalur TextClassificationOnMobile->Android.

Kode selesai juga tersedia untuk Anda sebagai TextClassificationStep3.

Jika menyelesaikan codelab sebelumnya, Anda akan memiliki TextClassificationStep2 versi iOS yang berfungsi dengan model dasar. Jika Anda ingin memulai dari versi kami yang sudah ada, cukup ambil yang itu dari repo. Fitur ini akan berfungsi dengan model pertama yang dilatih berdasarkan data spam komentar, dan Anda mungkin melihat hasil seperti ini:

553b845565b5b822.pngS

Mengupdate aplikasi untuk menggunakan model baru Anda sangatlah mudah. Cara termudah adalah dengan membuka file explorer Anda, mendapatkan versi baru model.tflite, vocab, dan labels.txt, lalu menyalinnya ke direktori project Anda.

Setelah Anda selesai melakukannya, aplikasi Anda akan berfungsi dengan model baru, dan Anda dapat mencobanya. Berikut ini contoh kalimat yang sama, tetapi menggunakan model baru:

9031ec260b1857a3.pngS

7. Selamat

Selesai. Dengan melatih ulang model menggunakan data baru, dan menambahkannya ke aplikasi Android dan iOS, Anda dapat mengupdate fungsinya tanpa perlu menulis kode baru.

Langkah Berikutnya

Model ini hanyalah mainan, yang dilatih hanya dengan 1.000 item data.

Saat Anda mengeksplorasi natural language processing, Anda mungkin ingin bekerja dengan {i>dataset<i} yang lebih besar. Anda juga dapat menyiapkan pipeline pelatihan berkelanjutan, sehingga saat data baru masuk dan ditandai sebagai spam, data tersebut dapat melatih ulang model di backend secara otomatis, kemudian men-deploy model tersebut menggunakan Firebase Model Hosting.

Pengguna Anda akan dengan mudah mendapatkan model yang telah diperbarui tanpa perlu menyalin dan menempelkannya sebagai aset, mengompilasi ulang, dan mendistribusikan ulang. Misalnya, Anda juga dapat menggunakan Firebase Remote Config untuk mengelola nilai minimum pengiriman spam, bukan 0, 8 yang Anda miliki sekarang.

Ada begitu banyak kemungkinan, dan kita akan mempelajarinya di codelab berikutnya dalam kursus ini.