Membuat model Machine Learning Komentar Komentar

1. Sebelum memulai

Dalam codelab ini, Anda akan meninjau kode yang dibuat menggunakan TensorFlow dan TensorFlow Lite Model Maker untuk membuat model menggunakan set data berdasarkan spam komentar. Data asli tersedia di kaggle. File tersebut telah dikumpulkan menjadi satu CSV, dan dibersihkan dengan menghapus teks, markup, kata berulang, dan lainnya yang rusak. Hal ini akan mempermudah fokus pada model, bukan teks.

Kode yang akan Anda tinjau telah disediakan di sini, tetapi sangat disarankan agar Anda mengikuti kode di Google Colab.

Prasyarat

  • Codelab ini ditulis untuk developer berpengalaman yang baru mengenal machine learning.
  • Codelab ini adalah bagian dari jalur Memulai Klasifikasi Teks untuk Seluler. Jika Anda belum menyelesaikan aktivitas sebelumnya, hentikan dan lakukan sekarang.

Yang akan Anda pelajari

  • Cara menginstal TensorFlow Lite Model Maker menggunakan Google Colab
  • Cara mendownload data dari server Cloud ke perangkat Anda
  • Cara menggunakan loader data
  • Cara membuat model

Yang Anda butuhkan

2. Instal TensorFlow Lite Model Maker

Buka kolaborasi. Sel pertama di notebook akan menginstal Pembuat Model TensorFLow Lite untuk Anda:

!pip install -q tflite-model-maker

Setelah selesai, lanjutkan ke sel berikutnya.

3 Mengimpor kode

Sel berikutnya memiliki sejumlah impor yang harus digunakan oleh kode di notebook:

import numpy as np
import os
from tflite_model_maker import configs
from tflite_model_maker import ExportFormat
from tflite_model_maker import model_spec
from tflite_model_maker import text_classifier
from tflite_model_maker.text_classifier import DataLoader

import tensorflow as tf
assert tf.__version__.startswith('2')
tf.get_logger().setLevel('ERROR')

Tindakan ini juga akan memeriksa apakah Anda menjalankan TensorFlow 2.x yang merupakan persyaratan untuk menggunakan Model Maker.

4. Download data

Selanjutnya, Anda akan mendownload data dari server Cloud ke perangkat, dan menetapkan data_file untuk diarahkan ke file lokal:

data_file = tf.keras.utils.get_file(fname='comment-spam.csv',
  origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/lmblog_comments.csv',
  extract=False)

Model Maker dapat melatih model dari file CSV sederhana seperti ini. Anda hanya perlu menentukan kolom mana yang menyimpan teks dan mana yang menyimpan label tersebut. Anda akan melihat cara melakukannya nanti dalam codelab.

5. Penyematan pembelajaran sebelumnya

Umumnya, saat menggunakan Model Maker, Anda tidak mem-build model dari awal. Anda menggunakan model yang ada yang Anda sesuaikan dengan kebutuhan Anda.

Untuk model bahasa, seperti ini, ini menggunakan penggunaan penyematan yang telah dipelajari sebelumnya. Ide di balik penyematan adalah bahwa kata-kata diubah menjadi angka, dengan setiap kata dalam korpus keseluruhan Anda diberi angka. Penyematan adalah vektor yang digunakan untuk menentukan sentimen kata tersebut dengan membuat "arah" untuk kata. Misalnya, kata-kata yang sering digunakan dalam pesan spam komentar akan memiliki vektor yang menunjuk ke arah yang sama, dan kata-kata yang tidak akan menunjuk ke arah yang berlawanan.

Dengan menggunakan sematan yang telah dipelajari sebelumnya, Anda dapat memulai dengan korpus, atau kumpulan, kata-kata yang sudah memiliki sentimen yang dipelajari dari kumpulan teks yang besar. Hal ini akan membawa Anda ke solusi yang jauh lebih cepat daripada memulai dari nol.

Model Maker menyediakan beberapa sematan yang telah dipelajari sebelumnya yang dapat Anda gunakan, tetapi cara memulai yang paling sederhana dan cepat adalah average_word_vec.

Berikut kodenya:

spec = model_spec.get('average_word_vec')
spec.num_words = 2000
spec.seq_len = 20
spec.wordvec_dim = 7

Parameter num_words

Anda juga akan menentukan jumlah kata yang diinginkan untuk digunakan model Anda.

Anda mungkin berpikir "semakin baik," tetapi umumnya ada angka yang tepat berdasarkan frekuensi setiap kata digunakan. Jika Anda menggunakan setiap kata di seluruh korpus, Anda bisa berakhir dengan model yang mencoba mempelajari dan menentukan arah kata yang hanya digunakan sekali. Anda akan menemukan dalam korpus teks bahwa banyak kata hanya digunakan sekali atau dua kali, dan umumnya tidak layak digunakan dalam model karena memiliki dampak yang dapat diabaikan pada sentimen secara keseluruhan. Anda dapat menyesuaikan model sesuai jumlah kata yang diinginkan dengan menggunakan parameter num_words.

Angka yang lebih kecil mungkin akan memberikan model yang lebih kecil dan lebih cepat, tetapi mungkin kurang akurat, karena mengenali lebih sedikit kata. Angka yang lebih besar akan memiliki model yang lebih besar dan lebih lambat. Menemukan titik ideal adalah kuncinya!

Parameter Wordvec_dim

Parameter wordved_dim adalah jumlah dimensi yang ingin Anda gunakan untuk vektor setiap kata. Aturan praktis yang ditentukan dari penelitian adalah kata tersebut merupakan akar keempat dari jumlah kata. Misalnya, jika Anda menggunakan 2.000 kata, titik awal yang baik adalah 7. Jika mengubah jumlah kata yang digunakan, Anda juga dapat mengubahnya.

Parameter seq_len

Model umumnya sangat kaku dalam hal nilai input. Untuk model bahasa, ini berarti bahwa model bahasa dapat mengklasifikasikan kalimat dengan panjang dan statis tertentu. Hal tersebut ditentukan oleh parameter seq_len, atau panjang urutan.

Jika Anda mengonversi kata menjadi angka (atau token), kalimat akan menjadi urutan token tersebut. Jadi, model Anda akan dilatih (dalam hal ini) untuk mengklasifikasikan dan mengenali kalimat yang memiliki 20 token. Jika lebih panjang, kalimat tersebut akan dipotong. Jika lebih pendek, akan diberi padding. Anda akan melihat token <PAD> khusus di korpus yang akan digunakan untuk hal ini.

6. Menggunakan loader data

Sebelumnya Anda mendownload file CSV. Sekarang saatnya menggunakan loader data untuk mengubahnya menjadi data pelatihan yang dapat dikenali model:

data = DataLoader.from_csv(
    filename=data_file,
    text_column='commenttext',
    label_column='spam',
    model_spec=spec,
    delimiter=',',
    shuffle=True,
    is_training=True)

train_data, test_data = data.split(0.9)

Jika membuka file CSV di editor, Anda akan melihat bahwa setiap baris hanya memiliki dua nilai, dan ini dijelaskan dengan teks di baris pertama file. Biasanya, setiap entri akan dianggap sebagai kolom.

Anda akan melihat bahwa deskripsi untuk kolom pertama adalah commenttext, dan entri pertama di setiap baris adalah teks komentar. Demikian pula, deskripsi untuk kolom kedua adalah spam, dan Anda akan melihat bahwa entri kedua di setiap baris adalah True atau False, untuk menunjukkan apakah teks tersebut dianggap sebagai spam komentar atau tidak. Properti lainnya menyetel model_spec yang Anda buat sebelumnya, bersama dengan karakter pembatas, yang dalam hal ini adalah koma karena file dipisahkan koma. Anda akan menggunakan data ini untuk melatih model, sehingga is_Training ditetapkan ke True.

Anda perlu menahan sebagian data untuk menguji model. Membagi data, dengan 90% dari data tersebut untuk pelatihan, dan 10% lainnya untuk pengujian/evaluasi. Karena itu, kami ingin memastikan bahwa data pengujian dipilih secara acak, dan bukan merupakan 'bawah' 10% set data, jadi Anda menggunakan shuffle=True saat memuat data untuk mengacaknya.

7. Mem-build model

Sel berikutnya cukup untuk mem-build model dan berupa satu baris kode:

# Build the model
model = text_classifier.create(train_data, model_spec=spec, epochs=50,
                               validation_data=test_data)

Tindakan ini akan membuat model pengklasifikasi teks dengan Model Maker, dan Anda menentukan data pelatihan yang ingin digunakan (seperti yang disiapkan pada langkah 4), spesifikasi model (seperti yang ditetapkan pada langkah 4), dan sejumlah iterasi pelatihan, dalam hal ini 50

Prinsip dasar Machine Learning adalah machine learning merupakan bentuk pencocokan pola. Awalnya, kontrol akan memuat bobot yang telah dilatih sebelumnya untuk kata-kata, dan mencoba untuk mengelompokkannya dengan prediksi mana, ketika dikelompokkan bersama, menunjukkan spam, dan mana yang tidak. Pertama kali, kemungkinan mendekati 50:50, karena model ini baru mulai.

b94b00f0b155db3d.png

Ini kemudian akan mengukur hasil dari hal ini, dan menjalankan kode pengoptimalan untuk menyesuaikan prediksinya, lalu mencoba lagi. Ini adalah iterasi pelatihan. Jadi, dengan menentukan epochs=50, akan melalui "loop" 50 kali.

85f1d21c0b64d654.png

Pada saat Anda mencapai epoch ke-50, model ini akan melaporkan tingkat akurasi yang jauh lebih tinggi. Dalam hal ini, 99% telah ditampilkan.

Di sisi kanan, Anda akan melihat angka akurasi validasi. Ini biasanya akan sedikit lebih rendah daripada akurasi pelatihan, karena merupakan indikasi tentang bagaimana model mengklasifikasikan data yang belum'dilihat' sebelumnya. Model ini menggunakan 10% data pengujian yang kami sediakan sebelumnya.

5be7967ec70e4302.png

8 Mengekspor model

Setelah pelatihan selesai, Anda dapat mengekspor model tersebut.

TensorFlow melatih model dalam formatnya sendiri, dan ini perlu dikonversi ke format TFLITE agar dapat digunakan dalam aplikasi seluler. Model Maker menangani kompleksitas ini untuk Anda.

Cukup ekspor model, dengan menentukan direktori:

model.export(export_dir='/mm_spam')

Dalam direktori tersebut, Anda akan melihat file model.tflite. Download aplikasinya. Anda akan membutuhkannya di codelab berikutnya, tempat Anda menambahkannya ke Aplikasi Android.

Pertimbangan iOS

Model .tflite yang baru Anda ekspor berfungsi dengan baik untuk Android, karena metadata tentang model disematkan di dalamnya, dan Android Studio dapat membaca metadata tersebut.

Metadata ini sangat penting karena mencakup kamus token yang mewakili kata-kata saat model mengenalinya. Ingat sebelumnya ketika Anda mengetahui bahwa kata menjadi token, dan token tersebut kemudian diberi vektor untuk sentimennya? Aplikasi seluler Anda harus mengetahui token ini. Misalnya, jika "anjing" ditokenisasi ke 42, lalu pengguna mengetik "anjing" menjadi kalimat, aplikasi Anda kemudian harus mengonversi "anjing" menjadi 42 agar model dapat memahaminya. Sebagai developer Android, Anda akan memiliki 'Library Tugas TensorFlow Lite' yang mempermudah penggunaan ini, tetapi di iOS, Anda perlu memproses kosakata, jadi Anda harus tersedia. Model Maker dapat mengekspor nilai ini dengan menentukan parameter export_format. Jadi, untuk mendapatkan label dan kosakata untuk model, Anda dapat menggunakan:

model.export(export_dir='/mm_spam/',
             export_format=[ExportFormat.LABEL, ExportFormat.VOCAB])

9. Selamat

Codelab ini akan memandu Anda menjalankan Python Code untuk membuat dan mengekspor model. Anda akan memiliki file .tflite di bagian akhir file tersebut.

Pada codelab berikutnya, Anda akan melihat cara mengedit Aplikasi Android untuk menggunakan model ini sehingga Anda dapat mulai mengklasifikasikan komentar spam.