Preprocessing: Membersihkan Data Teks
Text Preprocessing adalah langkah penting dalam NLP untuk membersihkan dan mempersiapkan data teks sebelum dimasukkan ke model. Bayangkan preprocessing seperti mencuci sayuran sebelum dimasak!
Overview Arsitektur NLP Tanpa Neural Network
Untuk arsitektur pertama kita, kita akan mempelajari bagaimana melakukan klasifikasi sentimen menggunakan metode tradisional seperti Naive Bayes. Ini adalah cara yang bagus untuk memahami konsep fundamental NLP!
Pipeline Klasifikasi Sentimen
Input: "Saya sangat senang dengan produk ini! 😊"
⬇️ Preprocessing
"saya sangat senang dengan produk ini"
⬇️ Feature Extraction
[0, 1, 2, 0, 1, ...] (vektor angka)
⬇️ Classification
Output: Sentimen Positif
Konsep-konsep yang akan kita pelajari seperti preprocessing, tokenisasi, dan word embedding akan sangat berguna untuk memahami arsitektur modern seperti Transformers!
Klasifikasi Teks: Sentiment Analysis
Klasifikasi teks adalah tugas menentukan kategori dari sebuah teks. Untuk contoh kita, kita akan mengklasifikasikan tweet apakah bersifat positif atau negatif.
Contoh Tweet Positif
"Aku sangat senang menyambut hari esok untuk pembukaan toko kita, sampai jumpa di xxx!"
Analisis: Tweet ini mengandung kata-kata positif seperti "senang", "menyambut", yang mengindikasikan sentimen positif.
Contoh Tweet Negatif
"Kecewa sekali dengan pelayanan hari ini, tidak akan kembali lagi."
Analisis: Tweet ini mengandung kata-kata negatif seperti "kecewa", "tidak akan", yang mengindikasikan sentimen negatif.
Model kita akan belajar mengidentifikasi kata-kata kunci yang mengindikasikan sentimen positif atau negatif dari data training.
Dataset: 1.6 Juta Tweet
Untuk pembelajaran kita, kita akan menggunakan dataset dari Kaggle yang berisi 1.6 juta tweet yang sudah diklasifikasikan sebagai positif atau negatif.
Dataset ini berisi tweet-tweet real dari Twitter yang sudah dilabeli dengan sentimen mereka.
Dengan dataset yang besar ini, model kita bisa:
- Belajar pola-pola kata yang mengindikasikan sentimen
- Memahami konteks penggunaan kata-kata tertentu
- Membuat prediksi yang akurat untuk tweet baru
Menghilangkan Noise
Noise adalah elemen dalam teks yang tidak memberikan informasi berguna untuk tugas klasifikasi kita. Preprocessing membantu model fokus pada informasi yang benar-benar penting dengan menghilangkan noise.
Contoh noise yang perlu dihilangkan:
- URLs: http://example.com
- Mentions: @username
- Hashtags: #trending
- Emojis: 😊 😢 👍
- Punctuation: !!! ??? ...
- Stopwords: "the", "is", "at", "which"
Contoh Sebelum & Sesudah Noise Removal
Sebelum:
😃 Super senang untuk membagikan artikel terbaruku! @OpenAI 👀👉 http://ai.newpost.com #AI #OpenAI 😎
Sesudah:
super senang untuk membagikan artikel terbaruku
Normalisasi Kata
Normalisasi adalah proses menggabungkan kata-kata yang memiliki arti mirip dengan menghilangkan variasi bentuk kata. Ini membantu model mengenali bahwa kata-kata yang berbeda bentuk sebenarnya memiliki makna yang sama.
Teknik Normalisasi
- Lowercase: "Exciting" → "exciting"
- Stemming: "excited", "exciting" → "excit"
- Lemmatization: "better" → "good"
Dengan normalisasi, model dapat memahami bahwa "Exciting", "excited", dan "excitement" semuanya merujuk pada konsep yang sama, sehingga meningkatkan kemampuan generalisasi model.
Stemming
Stemming adalah teknik untuk menggabungkan kata-kata yang memiliki akar yang sama dengan cara menghilangkan suffixes (dan terkadang prefixes) dari kata-kata, hanya menyisakan "stem" kata.
Cara Kerja Stemming
Stemming bekerja dengan memotong akhiran kata untuk mendapatkan bentuk dasarnya. Ini adalah pendekatan yang cepat dan sederhana.
Contoh:
exciting → excit
excited → excit
excitement → excit
⚠️ Keterbatasan: Stemming mereduksi ke karakter yang unik, tapi terkadang tidak "masuk akal" dalam arti kata. Misalnya "went" dan "go" akan berbeda di stem meskipun "went" adalah past tense dari "go".
Lemmatization
Lemmatization berbeda dari stemming karena menekankan pertimbangan aturan tata bahasa. Lemmatization memahami konteks dan elemen tata bahasa seperti verb tenses, bentuk jamak, dan bahkan gender untuk mengekstrak bentuk dasar linguistik yang benar dari kata, yang dikenal sebagai 'lemma'.
Cara Kerja Lemmatization
Lemmatization menggunakan kamus dan aturan tata bahasa untuk mengubah kata ke bentuk dasarnya yang benar secara linguistik.
Contoh:
Better → Good
Geese → Goose
Went → Go
Perbedaan dengan Stemming
Lemmatization mengenali dan mengubah kata ke bentuk kamus/dasar mereka, dengan mempertimbangkan tenses, plurality, dan banyak lagi. Ini tidak bisa dicapai dengan stemming karena stemming hanya "memotong" kata tanpa mempertimbangkan konteks linguistik.
POS (Part of Speech)
Part of Speech adalah proses menentukan jenis kata: Apakah itu kata benda? Kata kerja? Kata sifat? Dll.
POS tagging membantu dalam memastikan setiap kata dikonversi ke lemma yang benar. Berbeda dari stemming, agar lemmatization bekerja dengan benar, kita harus memastikan POS dilakukan sebelum menghilangkan stopwords.
Kenapa POS Penting?
Kata yang sama bisa memiliki lemma berbeda tergantung konteksnya. Misalnya kata "meeting" bisa jadi kata kerja ("meet") atau kata benda ("meeting").
⚠️ Penting: POS tagging harus dilakukan sebelum menghilangkan stopwords untuk memastikan akurasi yang tepat!
Demo
Sekarang mari kita praktikkan langsung berbagai teknik preprocessing di Google Colab! Anda akan melihat demonstrasi lengkap untuk remove noises, stemming, POS tagging, lemmatization, basic tokenization, dan sub-words tokenizer yang digunakan oleh BERT.
💻 Praktikkan di Google Colab
Demo Remove noises, stemming, POS, lemmatization, basic tokenization, Sub-words tokenizer that is used by BERT model
Buka di Google ColabRangkuman: Text Preprocessing
Selamat! Anda telah mempelajari konsep dan implementasi text preprocessing. Mari kita rangkum:
Poin-Poin Penting
- Preprocessing membersihkan teks dari noise yang tidak berguna
- Noise termasuk URLs, mentions, hashtags, emojis, dan punctuation
- Normalisasi mengubah kata ke bentuk standar (lowercase, stemming)
- Stopwords removal menghilangkan kata-kata umum yang kurang informatif
- Pipeline preprocessing penting untuk performa model NLP