×

7 Langkah Menyiapkan Data Teks untuk Proyek Machine Learning

Ilustrasi meja kerja data scientist dengan laptop menampilkan kode praproses teks dan catatan

7 Langkah Menyiapkan Data Teks untuk Proyek Machine Learning

Kamu punya ribuan komentar media sosial atau ulasan produk, dan ingin melatih model untuk mengklasifikasikannya. Begitu data teks dibuka, isinya campur aduk: ada emoji, tautan, singkatan, dan huruf kapital yang tidak konsisten. Tujuh langkah berikut mengubah teks mentah itu menjadi representasi angka yang bisa diproses algoritma machine learning.

1. Kumpulkan dan Periksa Data Mentah

Sebelum menyentuh kode pembersihan, lihat dulu isi datanya. Buka beberapa baris di pandas dan perhatikan pola yang muncul: apakah ada tag HTML, mention, atau karakter aneh? Periksa juga distribusi panjang teks dan jumlah label per kelas. Langkah ini membantumu menentukan teknik praproses apa yang benar-benar diperlukan, sehingga tidak membuang waktu untuk operasi yang tidak relevan. Jika data tersimpan dalam format tabel, pastikan kolom teks dan label sudah terpisah dengan benar.

2. Bersihkan Teks dari Noise

Noise seperti tanda baca berlebih, angka acak, atau karakter khusus bisa mengganggu model. Gunakan ekspresi reguler untuk menghapus pola yang tidak diinginkan. Contohnya, kode berikut menghapus tautan dan mention:

import re

def bersihkan_teks(teks):
    teks = re.sub(r'httpS+', '', teks)
    teks = re.sub(r'@w+', '', teks)
    teks = re.sub(r'[^a-zA-Zs]', '', teks)
    return teks.lower()

komentar = "Coba @teman, lihat https://contoh.com bagus!"
print(bersihkan_teks(komentar))  # output: coba  lihat  bagus

Hati-hati, penghapusan tanda baca bisa menghilangkan informasi penting seperti negasi (“tidak bagus” menjadi “tidak bagus”). Sesuaikan dengan kebutuhan. Untuk data yang sangat kotor, kamu mungkin perlu menangani outlier atau nilai ekstrem, mirip caranya seperti 7 cara menangani outlier sebelum melatih model ML.

3. Tokenisasi dan Normalisasi

Tokenisasi memecah teks menjadi unit kata atau subkata. Untuk bahasa Indonesia, gunakan tokenizer yang mendukung aturan morfologi, misalnya dari library Sastrawi. Normalisasi seperti mengubah kata tidak baku (“gak” menjadi “tidak”) membantu menyatukan variasi. Setelah tokenisasi, kamu bisa melakukan stemming atau lemmatisasi untuk mereduksi kata berimbuhan ke bentuk dasar. Namun, stemming agresif kadang menghilangkan nuansa; uji dampaknya pada performa model.

Jika kamu berurusan dengan data deret waktu, praproses teks mungkin bukan fokus utama, tetapi prinsip pembersihan tetap sama. Lihat tips praktis membedakan deret waktu untuk pemula untuk konteks lain.

4. Tangani Kata Henti (Stopword)

Kata seperti “dan”, “di”, “ke” sering dianggap tidak informatif. Menghapusnya bisa mengurangi dimensi fitur. Namun, untuk tugas analisis sentimen, kata negasi seperti “tidak” justru penting. Uji dua konfigurasi: dengan dan tanpa stopword, lalu bandingkan akurasi model. Di Python, kamu bisa memakai daftar stopword dari NLTK atau Sastrawi untuk bahasa Indonesia. Pastikan daftar tersebut sesuai dengan domain teksmu.

5. Ekstraksi Fitur: Dari Teks ke Angka

Model machine learning membutuhkan input numerik. Ada beberapa pendekatan populer:

  • Bag of Words (BoW): menghitung frekuensi kata dalam dokumen. Cocok untuk data teks panjang dengan kosakata terbatas.
  • TF-IDF: memberi bobot kata berdasarkan seberapa sering muncul di dokumen dan seberapa langka di seluruh korpus. Efektif untuk klasifikasi teks.
  • Embedding kata: menggunakan vektor padat dari model pra-latih seperti Word2Vec atau IndoBERT. Memerlukan lebih banyak data dan komputasi, tetapi menangkap makna semantik.

Pilih metode yang sesuai dengan ukuran data dan sumber daya. Untuk proyek awal, TF-IDF sering memberikan hasil memuaskan dengan waktu komputasi rendah. Ingat untuk menyesuaikan parameter seperti ukuran kosakata maksimum dan n-gram. Jika kamu ingin belajar menyimpan hasil ekstraksi ke database, langkahnya mirip dengan cara menyimpan data ke database dari pipeline ML.

6. Tangani Data Tidak Seimbang

Dalam klasifikasi teks, seringkali satu kelas lebih dominan. Jika tidak ditangani, model cenderung memprediksi kelas mayoritas. Beberapa strategi yang bisa dicoba: oversampling kelas minoritas dengan SMOTE untuk teks (misalnya menggunakan teknik augmentasi), undersampling kelas mayoritas, atau menggunakan bobot kelas pada fungsi kerugian. Evaluasi dengan metrik seperti F1-score daripada akurasi saja. Untuk panduan lebih lanjut, baca cara menangani data tidak seimbang di machine learning.

7. Bagi Data dan Lakukan Validasi

Setelah fitur siap, bagi data menjadi set pelatihan dan pengujian. Pastikan pembagian stratifikasi agar distribusi kelas tetap terjaga. Gunakan cross-validation untuk mendapatkan estimasi performa yang lebih stabil. Jangan lupa untuk menyimpan vektorizer yang telah dilatih agar bisa digunakan pada data baru tanpa kebocoran informasi. Jika ingin memahami lebih dalam tentang cross-validation, kunjungi panduan lengkap cross-validation untuk model machine learning.

Dalam membangun pipeline teks, pastikan setiap langkah praproses diterapkan secara konsisten pada data latih dan uji. Hindari mengubah data uji berdasarkan statistik dari data latih. Untuk tips menyiapkan dataset secara umum, lihat 7 kesalahan umum saat menyiapkan dataset machine learning.

Ringkasan

Menyiapkan data teks untuk machine learning memerlukan perhatian pada detail: dari pembersihan noise, tokenisasi, hingga ekstraksi fitur. Tujuh langkah di atas membantumu membangun fondasi yang kuat untuk proyek NLP. Mulailah dari data kecil, iterasi cepat, dan dokumentasikan setiap keputusan praproses. Dengan begitu, model yang dihasilkan lebih dapat diandalkan.

Pertanyaan yang Sering Diajukan

Apakah saya perlu menghapus semua tanda baca?

Tidak selalu. Tanda baca seperti tanda seru atau tanya bisa mengandung sinyal emosi. Untuk tugas sentimen, pertahankan beberapa tanda baca. Untuk topik modeling, mungkin bisa dihapus. Uji dampaknya pada validasi.

Berapa ukuran kosakata yang ideal untuk TF-IDF?

Tidak ada angka pasti. Mulailah dengan 5000-10000 kata paling sering, lalu sesuaikan berdasarkan performa model dan ukuran data. Kosakata terlalu besar bisa menyebabkan overfitting, terlalu kecil bisa kehilangan informasi.

Apakah stemming selalu diperlukan?

Stemming membantu mengurangi dimensi, tetapi bisa menghilangkan makna. Untuk bahasa Indonesia, lakukan dengan hati-hati dan bandingkan hasilnya dengan dan tanpa stemming. Jika performa tidak meningkat, lewati langkah ini.

Jika kamu tertarik memperluas keterampilan pengembangan web, lihat tips jQuery untuk pemula: pola animasi sederhana agar halaman tidak membosankan. Untuk topik energi pada perangkat keras, baca mengelola daya perangkat IoT: perbandingan strategi hemat energi. Sementara itu, untuk mendapatkan berita teknologi terkini dari sumber terpercaya, kunjungi indowarta yang menyajikan informasi berdasarkan fakta dengan penulis berpengalaman.

You May Have Missed