Dalam NLTK, preprocessing teks memerlukan beberapa langkah, termasuk tokenisasi menggunakan word_tokenize:
- def preprocess_text(text):
- Â Â text = re.sub(r'[^a-zA-Z0-9\s]', '', text) Â # Menghapus karakter non-alfanumerik
- Â Â tokens = word_tokenize(text.lower()) Â # Tokenisasi
- Â Â return tokens
Sebaliknya, spaCy menggunakan objek doc untuk memproses teks, yang secara otomatis menangani tokenisasi dan penghapusan stop words.
- def preprocess_text(text):
- Â Â text = re.sub(r'[^a-zA-Z0-9\s]', '', text) Â # Menghapus karakter non-alfanumerik
- Â Â doc = nlp(text.lower()) Â # Menggunakan spaCy untuk memproses teks
- Â Â return [token.text for token in doc if not token.is_stop and not token.is_punct]
Identifikasi Emosi
Kedua pustaka memiliki fungsi yang mirip untuk mengidentifikasi emosi, tetapi pendekatan spaCy lebih terintegrasi dengan pemrosesan teks yang lebih canggih. Berikut adalah contoh fungsi identifikasi emosi.
- def identify_emotions(text):
- Â Â tokens = preprocess_text(text)
- Â Â identified_emotions = set()
- Â Â for emotion, keywords in emosi_cowen.items():
- Â Â Â Â for keyword in keywords:
- Â Â Â Â Â Â if any(keyword in token for token in tokens):
- Â Â Â Â Â Â Â Â identified_emotions.add(emotion)
- Â Â return list(identified_emotions)
Ekstraksi Fitur
Kedua pustaka menggunakan TfidfVectorizer dari sklearn untuk ekstraksi fitur, menunjukkan bahwa mereka dapat digunakan bersama dengan alat pembelajaran mesin yang sama.
- vectorizer = TfidfVectorizer()
- X = vectorizer.fit_transform(data['respon'])
 Evaluasi Model
Proses evaluasi model sama untuk kedua pustaka, menunjukkan bahwa meskipun pendekatan pemrosesan teks berbeda, mereka dapat digunakan dalam konteks yang sama untuk membangun dan mengevaluasi model pembelajaran mesin:
- print(classification_report(y_test, y_pred))
- print(confusion_matrix(y_test, y_pred))
Mana lebih unggul?
NLTK dan spaCy memiliki keunggulan masing-masing dalam pembelajaran mesin, tergantung pada kebutuhan pengguna. NLTK, yang dirancang untuk penelitian dan pendidikan, menawarkan fleksibilitas yang tinggi dan menyediakan berbagai alat untuk eksperimen dalam pemrosesan bahasa alami (NLP). Dengan koleksi algoritma dan fungsi yang luas, NLTK memungkinkan pengguna untuk melakukan berbagai tugas seperti tokenisasi, stemming, dan analisis semantik. Dokumentasi yang komprehensif dan banyak tutorial juga menjadikannya pilihan yang baik untuk pemula. Namun, NLTK cenderung lebih lambat dibandingkan spaCy, terutama saat memproses data dalam jumlah besar, dan lebih cocok untuk eksperimen akademis daripada aplikasi produksi.
Di sisi lain, spaCy dirancang untuk kecepatan dan efisiensi, menjadikannya ideal untuk aplikasi yang memerlukan pemrosesan teks yang cepat. Dengan pendekatan berbasis objek, spaCy memudahkan eksplorasi dan penggunaan, karena setiap fungsi mengembalikan objek yang kaya informasi. Selain itu, spaCy menyediakan model terlatih untuk berbagai tugas NLP, seperti pengenalan entitas dan analisis sintaksis. Meskipun sangat efisien, spaCy mungkin memiliki kurva pembelajaran yang lebih curam bagi pemula dan mungkin tidak menawarkan fleksibilitas yang sama seperti NLTK untuk eksperimen. Secara keseluruhan, pengguna disarankan untuk memilih NLTK jika ingin belajar dasar-dasar NLP dan melakukan eksperimen akademis, sementara spaCy lebih cocok untuk mereka yang membutuhkan alat yang cepat dan efisien untuk aplikasi produksi dan pemrosesan teks yang lebih besar.