Mengklasifikasikan Komentar Reddit: Dari Bag of Words ke Word2Vec & Analisis Sentimen
Komentar pengguna di platform seperti Reddit merupakan sumber data yang kaya akan opini, emosi, bahkan misinformasi. Dalam artikel ini…
Mengklasifikasikan Komentar Reddit: Dari Bag of Words ke Word2Vec & Analisis Sentimen
Photo by Kim Menikh on Unsplash
Komentar pengguna di platform seperti Reddit merupakan sumber data yang kaya akan opini, emosi, bahkan misinformasi. Dalam artikel ini, kita akan belajar bagaimana:
- Mempersiapkan dan membersihkan komentar
- Menerapkan teknik machine learning
- Menggunakan representasi teks seperti Bag of Words dan Word2Vec
- Memprediksi sentimen dari komentar
Tentang Dataset
Dataset yang digunakan merupakan data Tweet dan komentar yang dibuat pada Narendra Modi dan para pemimpin lainnya serta opini rakyat terhadap Perdana Menteri Negara berikutnya (dalam konteks dengan pemilihan umum yang diadakan di India — 2019). Berikut merupakan link dataset dari kaggle:
Kolom Penting :
- Category: label sentiment ( misalnya: positive, negative, neutral, news)
- Clean_comment: teks komentar Reddit yang telah dibersihkan
Contoh data :
category clean_comment
------------- ------------------------
positive this is an amazing post
negative I hate this subreddit
neutral okay I see your point
Text Classification
Text classification merupakan proses dimana memberi label kategori pada teks. Disini, kita akan mengklasifikasi komentar Reddit berdasarkan sentiment :
- Positive
- Negative
- Neutral
- News (jika relevan dalam analisis opini/objektivitas)
Teknik Machine Learning
Algoritma yang umum digunakan yaitu :
- Naive Bayes: untuk klasifikasi cepat dan ringan
- Logistic Regression: baseline model
- Random Forest: model berbasis pohon
- Support Vector Machine (SVM): untuk klasifikasi margin maksimum
Bag of Words (BoW)
BoW mengubah komentar menjadi angka berdasarkan frekuensi kata. Contoh:
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(df['clean_comment'])
print(vectorizer.get_feature_names_out()[:10])
Deteksi Spam Komentar Reddit (Opsional)
Meskipun dataset yang digunakan tidak menyebut spam, kita bisa menambahkan label spam vs. non-spam dari analisis manual atau model tambahan jika diperlukan.
Word2Vec: Representasi Semantik
Word2Vec memahami konteks kata melalui embedding:
from gensim.models import Word2Vec
sentences = [comment.split() for comment in df['clean_comment']]
model = Word2Vec(sentences, vector_size=100, window=5, min_count=2, workers=4)
print(model.wv.most_similar('good'))
Doc2Vec: Representasi Kalimat
Untuk mendapatkan vektor representasi dari satu komentar secara keseluruhan:
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
tagged_data = [TaggedDocument(words=comment.split(), tags=[str(i)]) for i, comment in enumerate(df['clean_comment'])]
model = Doc2Vec(tagged_data, vector_size=50, window=2, min_count=2, workers=4)
vector = model.infer_vector("this is great".split())
Deteksi Sentimen Komentar
Menggunakan label category sebagai target, kita bisa membangun model analisis sentimen:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import classification_report
X_train, X_test, y_train, y_test = train_test_split(df['clean_comment'], df['category'], test_size=0.2)
tfidf = TfidfVectorizer()
X_train_vec = tfidf.fit_transform(X_train)
X_test_vec = tfidf.transform(X_test)
model = LogisticRegression(max_iter=200)
model.fit(X_train_vec, y_train)
y_pred = model.predict(X_test_vec)
print(classification_report(y_test, y_pred))
Pipeline: Preparation, Training, Testing
- Preparation:
- Membersihkan komentar
- Lowercasing, stopword removal, tokenisasi
2. Training:
- Memilih representasi teks (TF-IDF, BoW, Word2Vec)
- Melatih model ML
3. Testing:
- Mengevaluasi akurasi, precision, recall, dan F1-score
Kesimpulan
Dengan dataset Reddit ini, kita bisa:
- Menerapkan klasifikasi komentar
- Membangun model analisis sentimen
Memahami teknik NLP dari yang paling sederhana (BoW) ke yang canggih (Word2Vec, Doc2Vec)
Link Google Colab untuk code lengkap nya:
[embed]Google Colab Edit descriptioncolab.research.google.com
메타데이터
- post_id
- db5d7e7a7f3c
- slug
- mengklasifikasikan-komentar-reddit-dari-bag-of-words-ke-word2vec-analisis-sentimen-db5d7e7a7f3c
- url
- https://medium.com/@barganakukuh/mengklasifikasikan-komentar-reddit-dari-bag-of-words-ke-word2vec-analisis-sentimen-db5d7e7a7f3c
- canonical_url
- https://medium.com/@barganakukuh/mengklasifikasikan-komentar-reddit-dari-bag-of-words-ke-word2vec-analisis-sentimen-db5d7e7a7f3c
- author_url
- https://medium.com/@barganakukuh
- status
- ok
- fetched_at
- 2026-07-07 15:26:23