Skip to main content
  1. Belajar/
  2. Data Science with Python/
  3. Penggunaan Python dalam Analisis Sentimen/

Pendekatan Analisis Sentimen dengan Rule-Based

12 mins· loading · loading ·
Penggunaan Python dalam Analisis Sentimen - This article is part of a series.
Part 6: This Article

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.

Penggunaan Python dalam Analisis Sentimen - This article is part of a series.
Part 6: This Article