Anda di halaman 1dari 17

ANALISIS SENTIMEN TWITTER UNTUK MENGETAHUI DAMPAK DARI

PANDEMI COVID-19 TERHADAP MASYARAKAT JAKARTA

Wahyu Setianto
Program Studi Statistika, Fakultas MIPA
Universitas Negeri Jakarta
Email: wahyusetianto19@gmail.com
Respositories : https://github.com/Hyuto/Analisis-Sentimen-Corona-DKI-Jakarta

ABSTRAK

Penelitian ini bertujuan untuk mengetahui apa dampak yang ditimbulkan oleh pandemi COVID-
19 atau virus corona terhadap tingkah laku masyarakat DKI Jakarta dalam berkomentar di social
media. Penelitian ini menggunakan data primer yang diperoleh dari crawling database twitter
menggunakan bahasa pemrograman Python. Pengujian dilakukan dengan menggunakan analisis
TF-IDF Vectorizer untuk mendapatkan feature atau kata-kata berbobot dari tweet/artikel yang
akan diujikan Analisis Sentimen. Karena awalnya data tidak memiliki sentiment maka perlu
dibangkitkan secara manual dengan cara menarik sampel secara acak tweet dari data. Setelah
didapatkan sampel yang cukup akan dibuat model menggunakan beberapa metode Klasifikasi
Machine Learning dengan sentiment sebagai target dan feature dari TF-IDF Vectorizer sebagai
variable bebasnya. Didapatkan akurasi yang cukup baik dari model yaitu sebesar 82,10%.

Kata Kunci: Analisis Sentimen, Machine Learning, Klasifikasi, TF-IDF, Twitter

1. PENDAHULUAN
Diawal tahun 2020, dunia digemparkan dengan merebaknya virus baru yaitu coronavirus
jenis baru (SARS-CoV-2) dan penyakitnya disebut Coronavirus disease 2019 (COVID-19).
Diketahui, asal mula virus ini berasal dari Wuhan, Tiongkok. Ditemukan pada akhir Desember
tahun 2019. Sampai saat ini sudah dipastikan terdapat 210 negara (30 April 2020) (WHO, 2020).
Saat ini ada sebanyak 210 negara terinfeksi virus corona. Menurut data WHO per tanggal
30 April 2020 jumlah penderita mencapai 3.212.850 orang terinfeksi Covid-19. Di Indonesia pun
sampai saat ini terinfeksi 9.771 orang dengan 4.033 kasus berada di Jakarta. Angka kematian
mencapai 381 atau 9% dengan angka kesembuhan 412 orang atau 10% tentunya membuat
masyarakat Jakarta menjadi cemas. Tentunya kecemasan tersebut akan memberikan dampak
terhadap perilaku masyarakat Jakarta baik secara langsung maupun tidak langsung. Dengan
diberlakukannya PSBB(Pembatasan Sosial Berskala Besar) di Jakarta maka akan mengurangi
bertemunya manusia secara langsung sehingga dampak yang diberikan akan jauh lebih
berpengaruh terhadap perilaku masyarakat secara tidak langsung.
Sosial media adalah sarana berinteraksi utama masyarakat saat ini. Karena lumpuhnya
system interaksi langsung yang dianggap menjadi sarana penularan virus corona maka social
media adalah sarana yang tepat untuk berinteraksi secara tidak langsung bagi masyarakat saat ini.

1
Dengan maraknya penggunaan social media saat ini msyarakat akan lebih sering mengutarakan
pendapatnya ke social media. Twitter adalah salah satu platform social media yang banyak di
gunakan oleh masyarakat. Yang perlu dilakukan adalah usaha untuk mengumpulkan semua data
opini pada platform tersebut dan mengolahnya menjadi suatu yang dapat menjawab pertanyaan-
pertanyaan tentang dampak yang diberikan pandemi COVID-19 ini.
Sentimen analisis atau opini mining adalah riset komputasional dari opini dan emosi yang
diekpresikan secara tekstual. Opini akan digolongkan menjadi 3 nilai sentiment Negatif, Netral,
dan Positif.
Berdasarkan konsep-konsep yang digambarkan di atas peneliti bermaksud untuk
melakukan kajian khususnya pada dampak yang diberikan pandemic COVID-19 dengan judul
penelitian “Analisis Sentimen Data Twitter untuk mengetahui Dampak dari Pandemi COVID-19
terhadap masyarakat Jakarta”.

2. TINJAUAN PUSTAKA
2.1. Definisi Sentiment
Sentimen adalah pendapat atau pandangan yang didasarkan pada perasaan yang
berlebih-lebihan terhadap sesuatu (bertentangan dengan pertimbangan
pikiran)[KBBI].
2.2. Definisi Analisis Sentiment
Sentiment Analysis adalah salah satu teknik dalam mengekstrak informasi
berupa pandangan (sentimen) seseorang terhadap suatu isu atau kejadian. Analisis
Sentimen dapat digunakan untuk mengungkap opini publik terhadap suatu isu,
kepuasan pelayanan, kebijakan, cyber bulliying, memprediksi harga saham, dan
analisis pesaing berdasarkan data tekstual.
2.3. Definisi TF-IDF
TF-IDF adalah suatu metode algoritma yang berguna untuk menghitung bobot
setiap kata yang umum digunakan. Metode ini akan menghitung nilai Term
Frequency (TF) dan Inverse Document Frequency (IDF) pada setiap token (kata) di
setiap dokumen dalam korpus. Secara sederhana, metode TF-IDF digunakan untuk
mengetahui berapa sering suatu kata muncul di dalam dokumen.

3. BAHAN DAN METODE PENELITIAN


3.1. Jenis Penelitian
Jenis penelitian yang dilakukan bersifat deskriptif, yang bertujuan untuk
menunjukkan jumlah dan perbandingan sentiment. Pendekatan secara deskriptif yaitu
penelitian yang dilakukan untuk memberikan gambaran yang lebih detail mengenai
suatu gejala atau fenomena (Priyono, 2016).

2
3.2. Sumber dan Metode Pengumpulan Data
3.2.1. Sumber Data
Data yang akan diolah bersumber dari salah satu platform media social
ternama di Indonesia yaitu Twitter.
3.2.2. Metode Pengumpulan Data
Metode yang digunakan untuk mengumpulkan data yaitu dengan cara
membuat application langsung ke pihak twitter untuk mendapatkan API key.
Setelah API key di dapatkan data dapat langsung di crawl menggunakan
bahasa penmrograman python. Data yang di kumpulkan adalah Tweet yang
mengandung kata kunci corona atau Covid19 atau DiRumahAja atau
quarantine. Data terkumpul sebanyak 250279 tweets dalam selang waktu 19
– 27 April 2020.
Program untuk crawling data terdapat di lampiran.
3.3. Indentifikasi Variable
Variabel-variabel yang digunakan dalam penelitian ini adalah sebagai berikut:
a) Tweet : Tweet yang ditulis oleh pengguna
b) Tanggal : Tanggal dibuatnya tweet
c) ID : ID pengguna
d) Screen Name : Screen Name user
e) Banyak Retweet : Banyak retweet dari tweet tersebut
f) Source : Sumber/device pengguna
g) Retweet Status : Status apakah tweet tersebut adalah retweet dari tweet
lain(0 : Tidak , 1 : Iya)
h) Hashtag : Hashtag yang digunakan dalam tweet tersebut
3.4. Analisis Data
Analisis data dalam penelitian ini menggunakan metode :
a) TF-IDF
TF-IDF dilakukan untuk menghasilkan features yang berisi kata-kata
berbobot dari seluruh tweet. Adapun pembobotan yang dilakukan menggunakan
rumus
𝐷
𝑤𝑖𝑗 = 𝑡𝑓𝑖𝑗 × log( )
𝑑𝑓𝑖
b) Analisis Sentiment
Dari matrix features yang di hasilkan oleh TF-IDF dapat dibuat model
dengan menggunakan klasifikasi Machine learning. Adapun metode klasifikasi
yang digunakan dalam analisis data ini adalah Logistic Regression, Random
Forest Classifier, dan Decision Tree Classifier lalu dicari nilai akurasi untuk
membandingkan 3 model tersebut untuk diambil yang terbaik.

3
1) Logistic Regression
Regresi logistik merupakan salah satu jenis regresi yang
menghubungkan antara satu atau beberapa variabel independen
(variabel bebas) dengan variabel dependen yang berupa kategori.

2) Random Forest Classifier


Random forest adalah classifier yang terdiri dari classifier yang
berbentuk pohon {h(x, θ k ), k = 1, . . .} dimana θk adalah random vector
yang diditribusikan secara independen dan masing masing tree pada
sebuah unit kan memilih class yang paling popular pada input x.

4
3) Decision Tree Classifier
Decision tree adalah model prediksi menggunakan struktur pohon
atau struktur berhirarki. Decision tree memadukan antara eksplorasi data
dan pemodelan, sehingga sangat bagus sebagai langkah awal dalam
proses pemodelan bahkan ketika dijadikan sebagai model akhir dari
beberapa teknik lain.

4. HASIL DAN PEMBAHASAN


4.1. Analisis Data Exploratif
Analisis Data Eksploratif adalah suatu pendekatan yang digunakan untuk
menganalisis data menggunakan berbagai teknik khususnya secara grafis. Tujuannya
adalah memaksimalkan wawasan dari sekumpulan data yang ada. Hal yang pertama
dilakukan adalah pengecekan data. Dari pengecekan data didapatkan :

Dari gambar diatas dapat diketahu data memiliki 8 kolom yang masing-masing
kolomnya terdiri dari 250279 baris kecuali kolom Source. Dapat diketahui juga bahwa
Sebagian besar tipe data yang ada adalah object.

5
a) Menghitung banyaknya tweet berdasarkan Tanggal(Hari)
Dihitung banyaknya tweet perharinya untuk mencari tahu apakah ada
perubahan banyaknya tweet terkait perharinya. Di dapatkan hasil berikut :

Dapat disimpulkan dari grafik di atas bahwa tidak ada perubahan jumlah tweet
yang signifikan per harinya dengan jumlah tweet tertinggi ada pada hari senin. Sangat
mengejutkan jika melihat jumlah tweet pada hari minggu menjadi hari yang memiliki
jumlah tweet paling sedikit.

6
b) Menghitung banyaknya tweet berdasarkan Tanggal(Jam)
Dihitung banyaknya tweet perharinya lalu di golongkan lagi berdasarkan jam
untuk mencari tahu waktu optimal user untuk membuat tweet. Didapatkan hasil :

Dari grafik di atas dapat diketahui bahwa waktu optimal dalam membuat tweet
adalah siang hari interval pukul 10 – pukul 15 sore. Dan dari pola ke -8 grafik tersebut
dapat di simpulkan bahwa mulai pukul 15 sore sampai dengan pukul 20 malam adalah
jam istirahat/waktu dengan jumlah tweet terendah dalam rentang waktu 1 hari.

c) Menghitung Perbandingan Tweet dan Retweet


Dihitung banyaknya tweet dan banyaknya retweet pada data untuk melihat
perbandingan keduanya. Didapatkan hasil :

7
Dari grafik diatas dapat disimpulkan bahwa mayoritas user lebih sering
leakukan retweeting daripada membuat tweet yang berisikan pendapat pribadinya.

d) Hashtag Terbanyak
Dikelompokan hashtag-hashtag yang ada di dalam data lalu di hitung banyaknya
frekuensi hashtag tersebut untuk melihat hashtag terkait apa yang sangat popular dalam
rentang waktu 19 – 27 April 2020

Dapat disimpulkan bahwa user-user dalam twitter sangat sering membahas


tetang kegiatan mereka selama PSBB dengan hashtag #DiRumahAja

e) Source Terbanyak
Dikelompokan source-source yang ada di dalam data lalu di hitung banyaknya
frekuensi source tersebut.

8
Dapat disimpulkan bahwa mayoritas pengguna twitter Jakarta mengaksesnya
melaui Android, iPhone, dan web browser.

4.2. Sampling
Dikarenakan data hasil crawling tidak memiliki nilai sentiment, maka haruslah
menggenerate data secara manual. Namun Tidak mungkin untuk menggenerate secara
manual sebanyak 250279 tweet. Maka dari itu perlu dilakukan sampling untuk kolom
tweet baru menggenerate nilai sentimentnya untuk dibuat model pada tahap Analisis
Sentimen.
Dari 250279 tweet pastilah terdapat banyak tweet yang sama terutama untuk tweet
yang memiliki status retweet 1. Maka dari itu perlu di drop data tweet yang berganda.
Sehingga di dapatlah 71208 tweet yang tidak berulang. Selanjutnya ditarik sample
secara acak sebanyak 700 dengan selang kepercayaan 95% dan margin of error 3.686%.
Penentuan jumlah sample dilakukan berdasarkan kemampuan dan waktu penulis untuk
menilainya.
Setelah sample ditarik dilakukan penentuan nilai sentiment secara manual.

9
4.3. TF-IDF Vectorizer
Dilakukan pembobotan kata pada kalimat dengan metode TF-IDF. Dari hasil
perhitungan tersebut diperoleh sebanyak 12174 fitur/kata. Dari kata-kata tersebut
dilakukan perhitungan frekuensi kata dengan bobot terbesar di setiap tweet/artikelnya
dan di dapatkan hasil :

Dapat di lihat bahwa kata ustadz memiliki frekuensi terbanyak pada kata dengan
bobot terbesar di per setiap tweet/artikel. Jadi dapat di simpulkan bahwa banyak sekalu
user yang membahas sesuatu dengan kata ustadz.
Kata dengan bobot terbesar di setiap tweet/artikelnya juga di rekam dalam file
Top_Word_Twitter.json.

4.4. Analisis Sentimen


Pada tahap ini dilakukan pemodelan terlebih dahulu untuk memprediksi nilai
sentiment yang masih kosong. Hal yang pertama dilakukan adalah menggabungkan data
sampling sentiment yang sudah di berikan nilai pada data utama. Agar mudah
gabungkan dengan menggunakan kolom acuan tweet. Selanjutnya pilih tweet dengan
nilai sentiment yang tidak kosong atau NaN.

10
Setelah terpilih pasangkan indexnya dengan index sparse matrix hasil perhitungan
TF-IDF yang akan menjadi variable independent dalam pembuatan model kali ini.
Setelah itu tetapkan bahwa data sentiment adalah variable terikat/target dan sparse
matrix yang sudah di pilih adalah variable independent/bebas. Lakukan split data X dan
Y untuk training dan testing, hal ini berguna untuk menghitung nilai akurasi model
nantinya. Selanjutanya dilakukan pemodelan x & y train dengan 3 metode klasifikasi
Machine Learning yaitu Logistic Regression, Random Forest Classifier, dan Decision
Tree Classifier. Lakukan pemrediksian untuk x test lalu hitung akurasinya terhadap y
test. Maka di dapatkan hasil :

Accuracy Logistic Regression : 0.7957894736842105


Accuracy Random Forest Classifier : 0.8210526315789474
Accuracy Decision Tree Classifier : 0.791578947368421

Maka dapat dikatakan bahwa Random Forest Classifier memiliki model terbaik.
Untuk memastikan proses modelling dapat di lakukan secara berulang-ulang untuk
melihat mana model yang paling stabil dan baik. Maka setelah itu dapat dilakukan
pemrediksian nilai statement yang masih kosong.
Setelah dilakukan pemodelan dilakukan pengecekan terhadap kolom statement
dengan pie-chart untuk melihat perbandingan nilainya.

Dari grafik di atas dapat di simpulkan kata yang bersentimen positif memiliki
frekuensi dan jumlah yang jauhh lebih besar dari kata yang bersentimen negatif.
11
Selanjutnya dilakukan perhitungan frekuensi tweet yang digolongkan berdasarkan
sentiment perharinya untuk melihat apakah ada peningkatan yang signifikan. Di
dapatkan hasil :

Dapat disimpulkan bahwa tidak ada perubahan yang signifikan pada frekuensi
sentiment perharinya.

12
4.5. Word Cloud
Kata – kata dengan bobot besar pada Sentiment Negatif

Kata – kata degan bobot besar pada Sentiment Positif

13
5. KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan hasil analisis dan pembahasan di atas, berikut adalah beberapa kesimpulan yang
didapat:
a) Waktu uptimal user dalam membuat tweet adalah pukul 10.00 – 15.00 sedangkan pukul
15.00 – 20.00 adalah kebalikannya
b) Mayoritas user cenderung melakukan retweet yang merupakan pendapat orang lain
dibandingkan menyerukan pikirannya sendiri lewat tweet
c) Mayoritas pengguna twitter di Jakarta mengaksesnya melalui Android, iPhone, dan Web
browser
d) Frekuensi tweet yang bersentimen positif jauh lebih banyak terhadap tweet yang
bersentiment negative

Sehingga Dampak pandemi COVID-19 terhadap masyarakan Jakarta adalah masyarakat


Jakarta menjadi bosan terhadap keadaan di rumahnya karena tidak bisa keluar rumah akibat
PSBB hal ini ditunjukan dari peningkatan tweet perharinya. Masyarakat jadi giat dan bahu
membahu menyemangati sesama agar pandemi COVID-19 segera berlalu. Hal tersebut dapat
dilihat dari besarnya nilai frekuensi sentiment positif .

5.2. Saran
Saran yang bisa di berikan adalah pengujian ini harusnya dimulai untuk mengambil data
dari saat penerapan WFH dan PSBB pertama kali dikeluarkan untuk melihat hasil yang lebih
jelas. Karena API search twitter hanya menyimpan data selama 7 hari maka data yang di ambil
pada penelitian ini hanya 7 hari ke belakang dari tanggal 27 April yang mana isu WFH dan
PSBB sudah tidak lagi trending. Selanjutnya karena pemodelan yang baik membutuhkan
jumlah train yang banyak maka diharapkan jumlah sampe bisa lebih banyak lagi untuk
meningkatkan kualitas model.

14
DAFTAR PUSTAKA

Internet

Malik, Usman(April 23, 2019). Twitter Sentiment Analysis Using TF-IDF Approach, Diakses
pada 30 April 2020, dari https://python.gotrained.com/tf-idf-twitter-sentiment-analysis/

Navlani, Avinash(May 16, 2018). Understanding Random Forests Classifiers in Python, Diakses
pada 30 April 2020, dari https://www.datacamp.com/community/tutorials/random-
forests-classifier-python

Navlani, Avinash(Desember 29, 2018). Decision Tree Classification in Python, Diakses pada 30
April 2020, dari https://www.datacamp.com/community/tutorials/decision-tree-
classification-python

Sierra, Delta (Februari 13,2019). Algoritma TF — IDF, Diakses pada 30 April 2020, dari
https://medium.com/@dltsierra/algoritma-tf-idf-633e17d10a80

Septiar, Irvan(Feb 20, 2019). Introduction: Sentiment Analysis. Mudah?, Diakses pada 30 April
2020, dari https://medium.com/@irvanseptiar/introduction-sentiment-analysis-mudah-
5785f88e435d

IYKRA(Jul 23, 2018). Mengenal Decision Tree dan Manfaatnya, Diakses pada 30 April 2020,
dari, https://medium.com/iykra/mengenal-decision-tree-dan-manfaatnya-b98cf3cf6a8d

15
Lampiran I

All Code & Data

Respositories : https://github.com/Hyuto/Analisis-Sentimen-Corona-DKI-Jakarta

Crawl Twitter.py

import tweepy
import pandas as pd

#Bu Selly
consumer_key = 'wU2srXqhIlZEHPUNRn71Ligs9'
consumer_secret = 'BAdzrCvTmunLHENsjWX91DK6G31Hsx622hL3LDWmbZnFIK9gtM'
access_token = '110120311-sD6JPWSdPv45TlIHvD0zQIgRMYMcCZSX8vXCnwno'
access_token_secret = '9YTWxh5rS9PqX0eh3BbyAOolFVRTEBMOBB22OgGIWFjrO'

#Rizky
consumer_key = '2xPzS0XSEIdpyiI65o9uABjro'
consumer_secret = 'ChMPw04zMTX12sv1amYcced8sF6rmlAFqzM5nMkGOWlXbcMG3z'
access_token = '51395041-xBkiyOCZrY2xHXnR08EszW4aVUM4SU85KqrB6beEC'
access_token_secret = 'DxzSengsN9V8j8bLuUHsP73Z8bj39aEL9MqSP3FD39KJS'

#Wahyu
consumer_key = '2NBRV4vmmVeimyznPpFPMNVTc'
consumer_secret = 'jVe6ujjn7yqc6mZmHqHxOqSUz4S7o4rEuVHl6p3yqdK2PJcpvE'
access_token = '1240469132551708672-9d23s1S9oQpJWOpeV9aMJ9VT2Gdpf8'
access_token_secret = 'uuZQhai6FuCLBsRAFnOOlMMvLCbsz04BFHPBZeJhdtxdS'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)


auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True,wait_on_rate_limit_notify=True)
query = '#corona OR covid OR Covid19 OR #DiRumahAja OR #quarantine OR Corona OR D
iRumahAja OR wabah OR pandemi OR quarantine'
#'Corona' or 'DiRumahAja' or 'wabah' or 'pandemi' or 'quarantine'

#List
tweetan=[]
tanggal=[]
teks=[]
Id=[]
sn=[]
source=[]
rtc=[]

16
rts=[]
hashtag =[]

for tweet in tweepy.Cursor(api.search, q=query, tweet_mode='extended', count = 20


0, geocode ='-6.213621,106.832673,20km',
lang = "id",until = '2020-04-28',since = '2020-04-
27').items():
print(tweet.created_at, tweet.full_text)
tweetan.append(tweet)
tanggal.append(tweet.created_at)
teks.append(tweet.full_text.encode("utf-8"))
Id.append(tweet.id)
sn.append(tweet.user.screen_name)
source.append(tweet.source)
rtc.append(tweet.retweet_count)
hashtag.append([x['text'] for x in tweet.entities['hashtags']])
if 'RT' in tweet.full_text :
rts.append(1)
else :
rts.append(0)
print(len(Id))

#To Json
data_json = pd.DataFrame(tweetan)
data_json.to_json('Crawling Twitter 4.json')

#To_CSV
data = pd.DataFrame()
data['Tanggal']=tanggal
data['Tweets']=teks
data['ID']=Id
data['Screen Name']=sn
data['Banyak Retweet']=rtc
data['Source']=source
data['Retweet Status']=rts
data['Hashtags'] = hashtag
data.to_csv('Crawling Twitter Jakarta Baru 27.csv',index=False)

17

Anda mungkin juga menyukai