Pendekatan Analisis Sentimen dengan Rule-Based
Table of Contents
Penggunaan Python dalam Analisis Sentimen - This article is part of a series.
Analisis sentimen dengan pendekatan berbasis aturan (rule-based) melibatkan penggunaan aturan dan pola-pola yang telah ditentukan sebelumnya untuk menilai sentimen dalam suatu teks. Dalam konteks ini, dua library yang sering digunakan untuk pendekatan ini adalah TextBlob dan VADER Sentiment Analysis.
A. Library Pendukung: TextBlob dan VADER #
1. TextBlob #
TextBlob menyediakan antarmuka sederhana untuk melakukan analisis sentimen pada teks. Dengan menggunakan model yang telah dilatih sebelumnya, TextBlob memberikan skor sentimen positif, negatif, atau netral. Langkah-langkahnya melibatkan pembuatan objek TextBlob dari teks dan penggunaan metode sentiment.polarity untuk mendapatkan skor sentimen.
Contoh Penggunaan TextBlob:
from textblob import TextBlob
text = "Python adalah bahasa pemrograman yang sangat kuat dan menyenangkan."
blob = TextBlob(text)
sentiment_score = blob.sentiment.polarity
print("Skor Sentimen TextBlob:", sentiment_score)
2. VADER Sentiment Analysis #
VADER Sentiment Analysis adalah algoritma berbasis aturan yang dirancang khusus untuk menangani teks dengan nuansa kuat, seperti teks sosial media. VADER memberikan skor sentimen positif, negatif, dan netral, bersamaan dengan skor komposit.
Contoh Penggunaan VADER Sentiment Analysis:
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
text = "Python adalah bahasa pemrograman yang sangat kuat dan menyenangkan."
analyzer = SentimentIntensityAnalyzer()
sentiment_scores = analyzer.polarity_scores(text)
print("Skor Sentimen VADER:", sentiment_scores)
B. Studi Kasus: Analisis Sentimen pada Teks Tertentu #
Mari terapkan pendekatan berbasis aturan pada beberapa contoh teks untuk melihat bagaimana TextBlob dan VADER Sentiment Analysis dapat memberikan skor sentimen.
Pada kode contoh dibawah, kita menambahkan tahap preprocessing pada teks menggunakan NLTK (Natural Language Toolkit) sebelum menerapkan analisis sentimen. Pada tahap preprocessing ini, kita akan melakukan beberapa langkah seperti tokenisasi, penghapusan stopwords, dan stemming menggunakan NLTK. Berikut adalah kode lengkapnya:
Contoh Studi Kasus:
from textblob import TextBlob
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer
# Download data untuk NLTK (jalankan sekali)
nltk.download('punkt')
nltk.download('stopwords')
# Contoh teks
text1 = "Saya sangat senang belajar Python. Sangat menyenangkan!"
text2 = "Pengalaman saya dengan produk ini lumayan."
text3 = "Proses instalasi agak rumit, tetapi hasilnya memuaskan."
# Preprocessing teks menggunakan NLTK
def preprocess_text(text):
# Tokenisasi
words = word_tokenize(text)
# Hapus stopwords
stop_words = set(stopwords.words('indonesian')) # Menggunakan stopwords Bahasa Indonesia
words = [word for word in words if word.lower() not in stop_words]
# Stemming
stemmer = PorterStemmer()
words = [stemmer.stem(word) for word in words]
# Gabungkan kata-kata kembali menjadi kalimat
processed_text = ' '.join(words)
return processed_text
processed_text1 = preprocess_text(text1)
processed_text2 = preprocess_text(text2)
processed_text3 = preprocess_text(text3)
# Analisis sentimen dengan TextBlob
blob1 = TextBlob(processed_text1)
blob2 = TextBlob(processed_text2)
blob3 = TextBlob(processed_text3)
sentiment_score1 = blob1.sentiment.polarity
sentiment_score2 = blob2.sentiment.polarity
sentiment_score3 = blob3.sentiment.polarity
print("TextBlob - Skor Sentimen 1:", sentiment_score1)
print("TextBlob - Skor Sentimen 2:", sentiment_score2)
print("TextBlob - Skor Sentimen 3:", sentiment_score3)
# Analisis sentimen dengan VADER Sentiment Analysis
analyzer = SentimentIntensityAnalyzer()
sentiment_scores1 = analyzer.polarity_scores(processed_text1)
sentiment_scores2 = analyzer.polarity_scores(processed_text2)
sentiment_scores3 = analyzer.polarity_scores(processed_text3)
print("\nVADER - Skor Sentimen 1:", sentiment_scores1['compound'])
print("VADER - Skor Sentimen 2:", sentiment_scores2['compound'])
print("VADER - Skor Sentimen 3:", sentiment_scores3['compound'])
Dalam kode di atas, fungsi preprocess_text digunakan untuk melakukan tokenisasi, penghapusan stopwords, dan stemming pada teks. Hasil preprocess kemudian digunakan untuk melakukan analisis sentimen menggunakan TextBlob dan VADER Sentiment Analysis.
Hasil output:
TextBlob - Skor Sentimen 1: 0.65
TextBlob - Skor Sentimen 2: 0.0
TextBlob - Skor Sentimen 3: 0.0
VADER - Skor Sentimen 1: 0.7177
VADER - Skor Sentimen 2: 0.0
VADER - Skor Sentimen 3: 0.4588
Output tersebut menunjukkan skor sentimen dari setiap pendekatan untuk masing-masing contoh teks. Skor sentimen TextBlob berkisar antara -1 hingga 1, sedangkan skor sentimen VADER memiliki skala compound dari -1 hingga 1. Nilai positif menunjukkan sentimen positif, nilai negatif menunjukkan sentimen negatif, dan nilai netral mendekati 0.
Pendekatan analisis sentimen berbasis aturan dengan menggunakan TextBlob dan VADER Sentiment Analysis dapat memberikan solusi yang cepat dan mudah diimplementasikan, terutama untuk tugas analisis sentimen yang sederhana atau kasus penggunaan tertentu. Namun, perlu diingat bahwa pendekatan ini mungkin memiliki keterbatasan dalam menangani kompleksitas sentimen pada data teks yang lebih bervariasi. Pilihan antara TextBlob dan VADER Sentiment Analysis tergantung pada karakteristik dan kebutuhan spesifik dari tugas analisis sentimen yang dihadapi.