← Back to list

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…

Bargana Kukuh · 2025-06-02 14:35 · 0 claps · 2.0 min read
#reddit #bag-of-words #word2vec #analisis-sentimen #word2vecs-gensim
Open on Medium ↗

Mengklasifikasikan Komentar Reddit: Dari Bag of Words ke Word2Vec & Analisis Sentimen

Photo by Kim Menikh on Unsplash

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:

[embed]Twitter and Reddit Sentimental analysis Dataset Tweets and Comments extracted from Twitter and Reddit For Sentimental Analysis.www.kaggle.com

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

  1. 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