PEMBAHASAN
18
proses pengklasifikasian data, normalisasi yaitu untuk mengubah kata singkatan
atau slang words menjadi bahasa baku, selanjutnya stemming yaitu menghilangkan
kata ber-imbuhan menjadi kata dasar. Kemudian tokenizing merubah kalimat
menjadi potongan-potongan kata, potongan kata tersebut disebut dengan token dan
terakhir stopword removal yaitu menghilangkan kata-kata dalam kalimat yang tidak
memberikan makna, seperti kata hubung, kata depan, dan lain-lain. Setelah tahap
preprocessing selesai, data hasil preprocessing diklasifikasi dengan menggunakan
metode lexicon-based dan hasilnya akan divisualisasinkan.
Alat yang di gunakan pada penelitian ini adalah seperangkat laptop dan
beberapa perangkat lunak pendukung. Berikut spesifikasi laptop yang akan
digunakan:
Pengumpulan data dalam penelitian ini akan menggunakan data dari tweet
yang membahas topik “pembelian minyak goreng curah menggunakan aplikasi
pedulilindung”. Proses pengumpulan data dilakukan dengan mengambil data tweet
pada layanan Twitter API menggunakan Bahasa pemrograman R. Tahapan pertama
pengambilan data yaitu harus membuat koneksi Twitter API agar aplikasi R dapat
19
terhubung dengan layanan sosial media Twitter. Setelah membuat koneksi dengan
Twitter menggunakan autentikasi API Key yang telah didapat, maka dilanjutkan
dengan pengambilan data atau crawling tweet. Proses ini dilakukan untuk
mendapatkan tweets dengan bentuk ekstensi .csv dari Twitter. Data yang telah
dikumpulkan akan digunakan lagi dalam tahapan proses data pre-processing.
20
2. Membuat aplikasi baru dengan cara memilih Add APP kemudian pilih
Create a new App.
3. Melilih Development pada App Environment kemudian isi nama app dengan
Migor. Setelah app selesai dibuat maka akan mendapatkan akses Keys dan
Tokens.
Gambar 3.4 Keys and Tokens dari aplikasi yang telah dibuat
(Sumber:https://developer.twitter.com/en/portal/projects/13160560091026
51393/apps/23312857/keys)
4. Apliaksi yang telah di buat tadi memiliki kunci dan token akses yang
meliputi consumer API key, consumer secret, access token dan access token
secret yang nantinya akan di gunakan sebgai koneksi dan akses dari Twitter
21
API dalam melakukan pengambilan data tweet pada Twitter. Token
autentikasi dalam penelitian ini terdari 4 kunci API, yaitu:
Tabel 3.1 Developer API Keys dan Tokens
Nama Kode API Kode API
Consumer Key (API zQkW21uG9uQ5GevfgWpODb1Gi
Key)
Consumer Secret l7zxLm9td8rKktRHyf3rYfYJ2RwuF76RZUW6
Key (API Secret PSm0duAPEs8wjj
Key)
Access Token 821731748-
BcMKdiNRbxSyzQxb9DOUHtCJpkSR7SYiCn
CDb5fH
Access Secret Token glJDIPxC6YYOqYNs6kShoF9GnXN3HcEGffz
tvIn0T1H9d
library(tm)
library(rtweet)
library(dplyr)
library(NLP)
library(ggplot2)
library(wordcloud2)
library(syuzhet)
install_github("nurandi/katadasaR")
library(katadasaR)
22
• library(ggplot2) digunakan untuk membuat grafik yang
merepresentasikan data numerik dan kategorik baik univariat maupun
multivariat secara simultan.
• library(wordcloud2) digunakan untuk membuat wordcloud.
• library(syuzhet) digunakan untuk menampilkan plots.
• install_github("nurandi/katadasaR") digunakan untuk menngunduh
katadasar .
• library(katadasaR) yang akan digunakan untuk proses stemming.
23
lang = "id",
tweet_mode = "extended",
type = "recent")
save_as_csv(crawling, "migor-crawling")
Hasil scraping data atau pengambilan data dari Twitter dengan keyword
yang mengandung kata “pembelian minyak goreng” atau “pedulilindungi”
berjumlah 2.000 data dalam bahasa Indonesia. Data disimpan dengan nama migor-
crawling dan berformat csv file. Data yang berhasil di ambil sebanyak 1.685 data
yang dapat dilihat pada Gambar 3.5.
Setelah data mentah di dapat, data yang hanya diperlukan adalah text saja.
Untuk mengambil data berupa text dilakukan dengan menulis kode seperti dibawah
baris pertama pada kode diatas berfungsi untuk membuka file migor-
crawling dan disimpan pada variable crawling. Kemudian pada baris kedua
berfungsi untuk mengambil kolom text pada variable crawling dan disimpan pada
variabel migor. Hasilnya bisa dilihat seperti gambar 3.6.
24
Gambar 3.6 Data crawling migor
Pada penelitian ini selain menggunakan data dati Twitter juga menggunakan
data berupa kata sentimen positif dan negatif. Ada kurang lebih sekitar 1188 kata
sentimen positif dan 2400 sentimen kata negatif. Dibawah ini adalah kode untuk
memuka file korpus.
25
Tabel 3.2 Contoh Kata Sentimen Positif dan Negatif
Positif Negatif
Anggun Ancaman
Bergembira Bentrokan
Cemerlang Curang
Dermawan Dicuri
Efektif Egois
Pre-processing data di lakukan agar data yang telah di dapat menjadi data
yang ideal dan sesuai untuk di proses pada metode Lexicon-based. Pre-processing
data terbagi menjadi beberapa tahapan, yaitu sebgai berikut :
Data tweets yang telah di dapat kemudian di proses pertama kali yaitu
cleaning, lalu di lanjutkan dengan proses normalisasi. Selanjutnya data yang sudah
normal di lakukan proses stemming, kemudian langkah selanjutnya yaitu
26
tokenizing, dan langkah terakhir adalah penghapusan stopword, setelah itu di
dapatkan data hasil pre-processing.
3.4.1 Cleaning
27
4. Mengubah tipe data tweets menjadi dataframe dan disimpan pada variabel
data.clean
5. pendeklarasian variabel tweet yang berisi fungsi distinct yaitu untuk
menghapus tweet yang sama dalam variabel migor.
6. Menyimpan data.clean dengan nama file data-clean dengan format .csv.
Berikut merupakan contoh adalah hasil tweet sebelum dan sesudah dilakukan
proses cleaning untuk menghapus username, hashtag, URL, link, tanda baca,
angka,simbol emoji, dan data yang sama.
Tabel 3.3 Perbandingan teks tweets sebelum dan sesudah dilakukan proses
cleaning
Sebelum proses cleaning Sesudah proses cleaning
@Android_AK_47 Minyak goreng minyak goreng susah bbm susah
susah BBM susah elu dan gerombolan elu dan gerombolan ribut dibatasin
ribut. Dibatasin pembelian migor dan pembelian migor dan bbm pake
BBM pake aplikasi elu dan aplikasi elu dan gerombolan ribut
gerombolan ribut juga.\nHidup elu dan juga hidup elu dan gerombolan
gerombolan sejenis elu nih emang sejenis elu nih emang suka yang
suka yang ribet.\n\nElu tahu nggak ribet elu tahu nggak kalo sepeda
kalo sepeda dilarang beli BBM pake dilarang beli bbm pake aplikasi
aplikasi?
@PDemokrat Rupanya pemerintah rupanya pemerintah sekarang
sekarang selalu pake PeduliLindungi selalu pake pedulilindungi untuk
untuk pembelian minyak goreng pembelian minyak goreng curah
curah baru di rezim ini yang lindungi baru di rezim ini yang lindungi
mafia minyak goreng mafia minyak goreng
@Andhika81824262 @isson70 halah itu trik awal aja minyak
@jokowi Halah2 itu trik awal aja, goreng sengaja dinaikin dinegeri
minyak goreng sengaja dinaikin sendiri stlah itu biar seolah harga
dinegeri sendiri stlah itu biar seolah2 migor cepet turunnya dibuat
harga migor cepet turunnya dibuat kebijakan stop ekspor biar harga
kebijakan stop ekspor biar harga sawit sawit lokal turun pembelian sawit
28
lokal turun, pembelian sawit dari dari petani bisa murah dibuka lagi
petani bisa murah, dibuka lagi kran kran ekspor luar negeri dan jual
ekspor luar negeri dan jual keluar keluar mahal
mahal
Total jumlah tweet yang telah melewati proses cleaning menjadi 940 tweet.
Setelah selesai file disimpan dalam format csv dengan nama data-clean. Hasil bisa
dilihat seperti gambar 3.8.
3.4.2 Normalisasi
Normalisasi bertujuan untuk mengubah kata singkatan atau slang words
menjadi bahasa baku sesuai KBBI (Kamus Besar Bahasa Indonesia). Pada tahap ini
data tweets diolah lagi agar menjadi data yang lebih bersih dengan cara mengubah
kata yang tidak baku menjadi kata baku. Gambaran tahap normalisasi tweets dapat
dilihat pada Gambar 3.9.
29
Gambar 3.9 Tahapan proses Normalisasi
30
4. Variabel data.normalisasi disimpan dengan nama data_normalisasi dalam
format .csv.
Adapun hasil proses normalisasi pada file cleaning data
Tabel 3.4 Perbandingan teks sebelum dan sesudah proses normalisasi
Sebelum Normalisasi Sesudah Normalisasi
nah selain itu pemerintah jg mulai nah selain itu pemerintah juga mulai
mensosialisasikan pembelian minyak mensosialisasikan pembelian minyak
goreng menggunakan apps peduli goreng menggunakan apps peduli
lindungi gunanya utk memantau lindungi gunanya untuk memantau
pendistribusian minyak goreng dan pendistribusian minyak goreng dan
menghindari penyelewengan harga menghindari penyelewengan harga
aku ulang lagi ya cara dapatin minyak aku ulang lagi ya cara dapatin minyak
goreng curah rakyat scan qr code klo goreng curah rakyat scan qr code kalo
hasil scan nya berwarna hijau berarti hasil scan nya berwarna hijau berarti
kamu bisa melakukan pembelian kamu bisa melakukan pembelian
minyak goreng kalau hasil scan brwarna minyak goreng kalau hasil scan brwarna
merah berarti kmu udh mencapai titik merah berarti kamu sudah mencapai
max pmbelian titik max pmbelian
di negeri penghasil sawit yg tinggi di negeri penghasil sawit yang tinggi
rakyat justru hrs beli minyak goreng dg rakyat justru harus beli minyak goreng
harga tinggi skrg disosialisasikan dengan harga tinggi sekarang
pembelian minyak goreng curah pakai disosialisasikan pembelian minyak
peduli lindungi bukan solusi malah goreng curah pakai peduli lindungi
bukan
3.4.3 Stemming
Stemming merupakan suatu proses text preprocessing untuk menemukan
kata dasar dari sebuah kata. Dengan menghilangkan semua imbuhan baik yang
terdiri dari awalan, sisipan, akhiran, dan kombinasi imbuhan pada kata turunan.
Stemming digunakan agar kata yang diperoleh dapat merepresentasikan kata yang
31
tidak diberi imbuhan. Gambaran tahap stemming tweets dapat dilihat pada Gambar
3.10.
32
3. Mengkonversi tipe datanormal menjadi karakter agar bisa dilakukan
proses stemming
4. Mengaplikasikan fungsi stemming pada variabel stem
5. Menyimpan file hasil stemming dengan nama data-stemming.csv.
Adapun hasil dari proses stemming pada file data_normalisasi.
Tabel 3.5 Perbandingan teks sebelum dan sesudah proses stemming
Sebelum stemming Sesudah Stemming
pembelian minyak goreng pakai beli minyak goreng pakai
pedulilindungi dicoba di pasar pedulilindungi coba di pasar
wonokromo wonokromo
pembelian minyak goreng curah beli minyak goreng curah wajib
wajib pakai aplikasi peduli pakai aplikasi peduli lindung
lindungi
pembelian minyak goreng beli minyak goreng sekarang harus
sekarang harus menggunakan guna aplikasi peduli lindung bukan
aplikasi peduli lindungi bukankah ini akan timbul potensi distribusi
ini akan menimbulkan potensi tidak tepat sasar tidak semua
distribusi tidak tepat sasaran tidak masyarakat bawah punya
semua masyarakat bawah smartphone
mempunyai smartphone
3.4.4 Tokenizing
Tokenizing merupakan tahap text preprocessing yang berguna untuk
memecahkan kalimat, paragraf, atau dokumen menjadi bagian yang lebih kecil,
yaitu token atau kata-kata yang berdiri sendiri. Pada umumnya setiap kata
terpisahkan oleh karakter spasi, sehingga proses ini mengandalkan karakter spasi
pada dokumen untuk melakukan pemisahan kata. Gambaran tahap Tokenizing
tweets dapat dilihat pada Gambar 3.11.
33
Gambar 3.11 Tahapan Tokenizing
Berikut dibawah ini kode untuk melakukan proses tokenizing
34
beli minyak goreng via pedulilindungi "beli", "minyak", "goreng", "via",
dagang di yogyakarta rumit "pedulilindungi", "dagang", "di",
"yogyakarta", "rumit"
35
myStopwords <- readLines("stopword_list_id.txt") #File stopword dapat diganti
sesuai dengan kamus yang anda punya
datastop <- as.character(tokenize) #Mengubah data menjadi karakter agar dapat
dilakukan proses stopword
datastop <- removeWords(datastop, myStopwords)
data.stopword <- data.frame(text = datastop)
save_as_csv(data.stopword,"data-stop.csv")
Data yang di dapat dari tokenizing dilakukan stopword removal agar lebih
mudah di proses untuk proses selanjutnya. Contoh stopword dapat dilihat pada
Tabel 3.7.
36
"masyarakat", "keluh", "beli", "masyarakat", "keluh", "beli",
"minyak", "goreng", "guna", "minyak", "goreng", "aplikasi",
"aplikasi", "pedulilindungi", "ribet" "pedulilindungi", "ribet"
3.5 Lexicon-based
Metode lexicon based digunakan karena klasifikasi ini dapat
mengklasifikasikan data tweets apakah data tersebut merupakan sentimen positif,
negatif, maupun netral dari data yang sudah dibersihkan. Klasifikasi dengan lexicon
sangat mengandalkan kebutuhan kamus lexicon bahasa Indonesia, karena kata pada
data dapat dinilai berdasarkan kamus apakah kata positif, negatif, maupun netral.
Untuk penilaian sentimen pada tweet sendiri berbeda-beda, jika kata positif pada
tweet lebih banyak dari negatif maka tweet tersebut termasuk ke dalam kategori
sentimen positif, jika kata negatif pada tweet lebih banyak maka tweet tersebut
masuk ke dalam kategori negatif, dan jika kata positif dan negatif bernilai sama
maka tweet tersebut masuk ke dalam kategori netral. Berikut gambaran tahapan
proses metode Lexicon-based dapat dilihat pada gambar 3.13.
37
Berikut kode untuk melakukan proses klasifikasi sentimen menggunakan
metode lexicon-based.
38
return(negatif)
}, positif, negatif, .progress=.progress)
require(plyr)
require(stringr)
scores = laply(data, function(datas, positif, negatif) {
tokenizing <- tokenize_ngrams(datas, n = 3, n_min = 1)
words <- unlist(tokenizing)
pos.matches = match(words, positif)
neg.matches = match(words, negatif)
pos.matches = !is.na(pos.matches)
neg.matches = !is.na(neg.matches)
scores = sum(pos.matches) + sum(neg.matches)
return(scores)
}, positif, negatif, .progress=.progress)
scores.df = data.frame(text=data,
total=sentimen,
positive=positif,
negative=negatif,
scores = positif - negatif)
return(scores.df)
}
data.lexicon.token = score.sentiment(data$text, positif, negatif)
View(data.lexicon.token)
data.lexicon.token$kelas <-ifelse(data.lexicon.token$score<0, "negatif",
ifelse(data.lexicon.token$score==0, "netral", "positif"))
save_as_csv(data.lexicon.token, "data_label.csv")
39
• Mengidentifikasi kata positif dan negatif pada setiap potongan kata dan
menjumlahkan kata negatif lalu disimpan pada variabel negatif.
• Mengidentifikasi kata positif dan negatif pada setiap potongan kata dan
menjumlahkannya lalu disimpan pada variabel score.
• Menyimpan hasil dalam bentuk tabel total, positive, negative, dan scores.
• Memanggil fungsi score.sentiment yang telah dibuat.
• Kemudian melakukan konversi nilai skor ke dalam kelas positif, negatif
dan netral.
• Menyimpan file hasil pelabelan kedalam format csv.
40
Setelah hasil sentimen didapat, hasil sentimen dijumlahkan sesuai dengan
masing-masing klasifikasi. Adapun perhitungan untuk mendapatkan total sentimen
dari masing-masing klasifikasi adalah seperti gambar 3.14.
41
Gambar 3.15 Diagram Batang (Bar Chart)
Data yang ditampilkan adalah proporsi antara klasifikasi sentimen negatif
pada batang merah sebanyak 803 tweets, klasifikasi sentimen netral pada batang
hijau sebanyak 98 tweets, dan klasifikasi sentimen positif pada batang biru
sebanyak 39 tweets dari total 940 tweets.
42