Anda di halaman 1dari 65

TESIS

MENDETEKSI HATE SPEECH DI TWITTER


MENGGUNAKAN METODE LONG SHORT-TERM
MEMORY DAN FITUR WORD2VEC

R. FIRMAN SRIYONO H.S


16/403706/PPA/05223

PROGRAM STUDI S2 ILMU KOMPUTER


DEPARTEMEN ILMU KOMPUTER DAN ELEKTRONIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2019
BAB I
PENDAHULUAN

1.1 Latar Belakang Masalah


Perkembangan teknologi informasi sudah sangat canggih dan mudah, sehingga
menjadi gaya hidup bagi masyarakat di seluruh dunia tanpa terkecuali Indonesia juga
terkena pengaruh perkembangan teknologi ini. Jumlah penduduk Indonesia yang
setiap tahun selalu bertambah populasi penduduknya dikarenakan angka kelahiran
terus meningkat, sehingga pemanfaatan teknologi diperlukan untuk menunjang
kegiatan sehari hari. Salah satu manfaat teknologi informatika adalah munculnya
berbagai macam situs jejaring sosial atau media sosial, pengguna situs jejaring sosial
atau media sosial ini mencangkup berbagai macam kalangan mulai dari anak-anak,
mahasiswa, ibu rumah tangga, pedagang, pegawai dan sebagainya. Media sosial
banyak digunakan oleh masyarakat Indonesia dan bisa kita temukan melalui mesin
pencari seperti Google atau Mozilla firefox namun yang paling populer dikalangan
pengguna media sosial adalah Facebook, Twitter, BBM, WhatsApp, Instagram.
Masalah hukum yang sering kali dihadapi adalah saat terkait dengan penyampaian
informasi dan komunikasi, khususnya dalam hal pembuktian dan hal yang terkait
dengan hukum yang dilaksanakan melalui sistem elektronik. Akibat dari
perkembangan tersebut, maka teknologi informasi dengan sendirinya juga telah
mengubah perilaku masyarakat dari peradaban manusia secara global. Tetapi
perkembangan teknologi tidak hanya berdampak positif saja, namun juga berdampak
negatif yaitu tindak pidana penghinaan atau ujaran kebencian (hate speech) serta
penyebaran informasi yang bertujuan untuk menimbulkan rasa kebencian atau
permusuhan antar individu atau kelompok tertentu berdasarkan suku, agama dan ras.
Tindakan tersebut dapat menimbulkan dampak yang tidak baik juga merugikan
seseorang atau kelompok dalam pencemaran nama baik. Kasus-kasus pencemaran
nama baik yang masuk dalam ranah ujaran kebencian sering dilakukan oleh mereka
yang merasa dirugikan oleh para haters (pengguna jejaring sosial dengan komentar
yang menjatuhkan dan menghina).
Penelitian yang dilakukan oleh Silva (2016) membahas tentang menganalisis
target Hate Speech di Media Sosial Twitter dan Whisper. Penelitian tersebut
menggunakan Metode membangun ekspresi: Subjek + intensitas + maksud pengguna
+ target kebencian dalam menganalisa data yang didapatkan dari Media Sosial Twitter
dan Whisper. Komponen dari ekspresi ini menjelaskan bahwa <Subjek> "Saya"
berarti bahwa hal ini berbicara tentang emosi pribadi pengguna. Komponen
<intensitas> menerangkan bahwa beberapa pengguna media sosial mencoba untuk
memperkuat emosi mereka yang diungkapkan sesuai keinginan mereka menggunakan
kualifikasi (misal: kata keterangan). Komponen <maksud_pengguna> menjelaskan
apa maksud pengguna, atau dengan kata lain bagaimana perasaannya (misal: benci,
benci sekali). Komponen <target_kebencian> fokus pada menemukan kebencian
terhadap sekelompok orang (misal: orang kulit hitam atau orang meksiko). Kelemahan
dari penelitian tersebut adalah hasil yang didapatkan belum mampu mengidentifikasi
kata kunci baru yang terkait dengan ujaran kebencian dan mekanisme Metode tersebut
belum terperinci untuk mengidentifikasi ujaran kebencian secara online.
Penelitian yang dilakukan oleh Thomas (2017) membahas tentang Mendeteksi
Ujaran Kebencian secara Otomatis dan Masalah Bahasa yang Menyinggung.
Penelitian tersebut menggunakan Metode Logistic Regression dan Metode Linear
SVM serta Fitur Unigram, Fitur Bigram, Fitur Trigram, Fitur Sintaktik dalam
menganalisa data yang didapatkan dari Media Sosial Facebok dan Twitter. Kelemahan
dari penelitian tersebut adalah hasil yang didapatkan kurang akurat untuk
mengidentifikasi ujaran kebencian, dan hanya sebagian kecil tweet yang dianggap
sebagai ujaran kebencian oleh kamus yang dibuat oleh manusia.
Penelitian yang dilakukan oleh Varma (2017) membahas tentang Metode Deep
Learning (Fast Text, LSTM, CNN) untuk mendeteksi ujaran kebencian di Twitter.
Penelitian tersebut menggunakan Metode Deep Learning (Fast Text, LSTM, CNN)
serta Fitur Char n-gram, Fitur TF-IDF, Fitur Bag of Word Vector (BoWV).
Kelemahan dari penelitian tersebut adalah hasil yang didapatkan dari model jaringan
syaraf tiruan ketika dikombinasikan dengan pohon keputusan menghasilkan nilai
akurasi yang kurang baik dalam mendeteksi ujaran kebencian.
Penulis menggunakan Metode Deep Learning (Long Short-Term Memory)
karena Metode Deep Learning (Long Short-Term Memory) memiliki banyak lapisan
atau filter yang dapat membantu mendeteksi hate speech dengan lebih kompleks dan
menggunakan Fitur Bigram, Trigram serta Bag of Word Vector (BoWV) karena Fitur-
Fitur tersebut dapat memisahkan tiap-tiap kata dalam sebuah kalimat menjadi beberapa
bagian sehingga hate speech lebih mudah terdeteksi.

1.2 Rumusan Masalah


Berdasarkan latar belakang yang telah disebutkan diatas, maka rumusan
masalah dalam penelitian ini adalah:
a) Banyaknya tweet membuat penggunaan Fitur Word2vec semakin kompleks, hal
ini menyebabkan sulitnya mendeteksi tweet yang termasuk positif hate speech atau
netral.
b) Bagaimana performa akurasi Metode Long Short-Term Memory dalam mendeteksi
hate speech dengan menggunakan dan Fitur Word2vec.

1.3 Batasan Masalah


Batasan masalah yang digunakan pada penelitian ini adalah sebagai berikut:
a) Data yang digunakan dalam penelitian ini adalah data dari twitter indonesia.
b) Data diklasifikasikan dalam dua kelas yaitu positif hate speech dan netral.
c) Fitur yang digunakan adalah Word2vec.

1.4 Tujuan Penelitian


Tujuanya adalah menggunakan Metode Deep Learning (Long Short-Term
Memory) dan Fitur Word2vec untuk mendeteksi hate speech yang ada di media sosial
Twitter.

1.5 Manfaat Penelitian


Menerapkan Metode Deep Learning (Long Short-Term Memory) dan Fitur
Word2vec untuk mendeteksi hate speech di media sosial. Sehingga penelitian ini
diharapkan memberi gagasan peneliti-peneliti berikutnya dalam memilih Metode
untuk mendeteksi hate speech.

1.6 Keaslian Penelitian


Berdasarkan referensi dan kajian pustaka yang dimiliki penulis, penelitian yang
membahas tentang mendeteksi hate speech menggunakan metode Long Short-Term
Memory sudah pernah dilakukan. Walaupun demikian, terdapat penelitian terdahulu
tentang topik dan metode sejenis yang dipaparkan dalam kajian pustaka.

1.7 Metode Penelitian


Tahapan-tahapan dan metode yang dilakukan dalam penelitian ini adalah
sebagai berikut:
1. Studi Pustaka
Studi pustaka dilakukan untuk mempelajari literatur-literatur yang mendukung
penelitian. Literatur yang dipelajari berkaitan dengan pengumpulan informasi,
teori, dan data pendukung dalam memahami fitur Word2vec dan Metode Long
Short-Term Memory, dan bahasa pemrograman python. Literatur diperoleh dari
berbagai sumber antara lain dari jurnal ilmiah, laporan hasil penelitian, dan skripsi.
2. Analisis Kebutuhan Sistem
Analisis kebutuhan sistem dilakukan untuk mengidentifikasi masalah dan
mendefinisikan kebutuhan spesifikasi sistem yang akan dibangun.
3. Perancangan Sistem
Perancangan sistem merupakan tahapan dimana alur kerja dari sistem yang akan
dibangun digambarkan dengan flowchart. Pada tahap ini dilakukan pemodelan
permasalahan menggunakan model deep learning yang telah ditentukan pada tahap
analisis dan metode-metode yang dipakai.
4. Implementasi
Implementasi sistem dilakukan dengan menuliskan kode program berdasarkan alur
kerja sistem yang telah dirancang sebelumnya.
5. Pengujian dan Evaluasi
Pengujian sistem dilakukan setelah proses implementasi selesai kemudian
dilanjutkan dengan proses evaluasi dengan pengecekan akurasi hasil pengujian.

1.8 Sistematika Penulisan


Sistematika penulisan merupakan gambaran secara umum pada setiap bab
terkait dengan penulisan hasil penelitian. Adapun sistematika penulisan dalam
penelitian ini adalah sebagai berikut:
BAB I PENDAHULUAN
Bab ini akan menguraikan secara singkat mengenai latar belakang masalah,
rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian,
keaslian penelitian, metode penelitian, dan sistematika penulisan.
BAB II TINJAUAN PUSTAKA
Tinjauan pustaka membahas tentang penelitian-penelitian terdahulu yang
terkait dengan penelitian ini. Selain itu, pada bab ini juga diuraikan tentang
perbandingan metode antara penelitian ini dengan penelitian yang telah ada
sebelumnya.
BAB III LANDASAN TEORI
Landasan teori memuat teori-teori dasar yang terkait dengan penelitian ini dan
menjadi dasar dalam memecahkan masalah dalam penelitian ini.
BAB IV ANALISIS DAN PERANCANGAN SISTEM
Bab ini akan menguraikan tentang analisis kebutuhan sistem, spesifikasi
fungsional sistem, spesifikasi data yang digunakan, arsitektur sistem, rancangan
proses kerja sistem dalam bentuk flowchart.
BAB V IMPLEMENTASI SISTEM
Bab ini menguraikan tentang implementasi sistem berupa penulisan kode
program dengan bahasa pemrograman python yang mengacu pada rancangan
sistem yang telah dibuat sebelumnya.
BAB VI HASIL DAN PEMBAHASAN
Hasil dan pembahasan berisi tentang hasil dari implementasi sistem dan hasil
pengujian akurasi sistem yang telah dibangun.
BAB VII KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan dari hasil penelitian yang telah dilakukan.
Kesimpulan diambil berdasarkan hasil dan pembahasan pada bab sebelumnya.
Selanjutnya, kekurangan yang ada pada sistem akan dituliskan pada bagian
saran untuk pengembangan penelitian di masa yang akan datang.
BAB II
TINJAUAN PUSTAKA

Beberapa penelitian tentang Hate speech yang dijadikan kajian pustaka dalam
penelitian ini adalah penelitian Buntoro (2016), Silva (2016), Thomas (2017), Varma
(2017) dan Zhang (2016).
Buntoro (2016) menggunakan Metode Naïve Bayes Clasiffier dan Metode
Support Vektor Machine untuk mendeteksi ujaran kebencian. Dari penelitian yang
telah dilakukan, Analisis sentimen tweet Bahasa Indonesia dengan tanda pagar Hate
speech dapat membantu menentukan sentimen pada tweet opini Bahasa Indonesia
yang ada di Twitter. Setelah dilakukan analisis sentimen terlihat banyak tweet opini
yang sebenarnya tidak masuk kategori Hate speech tapi diberi tanda pagar Hate
speech. Nilai akurasi tertinggi didapat dengan Metode klasifikasi Support Vector
Machine (SVM) dengan tokenisasi Unigram, stopword list Bahasa Indonesia dan
emoticons, dengan nilai rata-rata akurasi mencapai 66,6%, nilai presisi 67,1%, nilai
recall 66,7% nilai TP rate 66,7% dan nilai TN rate 75,8%. Dalam penelitian ini juga
dapat diketahui Metode klasifikasi Support Vector Machine (SVM) lebih tinggi
akurasinya untuk klasifikasi sentiment tweet Hate speech Bahasa Indonesia
dibandingkan Metode klasifikasi Naïve Bayes Classifier (NBC).
Penelitian yang dilakukan oleh Silva (2016) menggunakan Metode
membangun ekspresi : Subjek + Intensitas + Maksud_Pengguna + Target_Kebencian
dalam menganalisa data yang didapatkan dari Media Sosial Twitter dan Whisper.
Komponen dari ekspresi ini menjelaskan bahwa <Subjek> "Saya" berarti bahwa hal
ini berbicara tentang emosi pribadi pengguna. Komponen <intensitas> menerangkan
bahwa beberapa pengguna media sosial mencoba untuk memperkuat emosi mereka
yang diungkapkan sesuai keinginan mereka menggunakan kualifikasi (misal: kata
keterangan). Komponen <maksud_pengguna> menjelaskan apa maksud pengguna,
atau dengan kata lain bagaimana perasaannya (misal: benci, benci sekali). Komponen
<target_kebencian> fokus pada menemukan kebencian terhadap sekelompok orang
(misal: orang kulit hitam atau orang meksiko).
Penelitian yang menggunakan Metode Logistic Regression adalah seperti yang
dilakukan oleh Thomas (2017). Penelitian tersebut menggunakan Logistic Regression
dengan regularisasi L1 untuk mengurangi dimensi data, kemudian menguji berbagai
model yang telah digunakan dalam pekerjaan sebelumnya: Logistic Regression, Naïve
Bayes, decision tree, dan Linear SVM. Penelitian tersebut menguji setiap model dengan
menggunakan validasi silang 5 kali lipat, menggunakan 10% sampel untuk evaluasi.
Setelah menggunakan grid searching untuk mengulangi model dan parameter,
kemudian menemukan bahwa Metode Logistic Regression dan Metode Linear SVM
cenderung secara signifikan lebih baik daripada model lainnya. Penelitian tersebut
memutuskan untuk menggunakan Metode Logistic Regression dengan regularisasi L2
untuk model akhir karena lebih mudah untuk memeriksa probabilitas prediksi
keanggotaan kelas dan telah dilakukan dengan baik pada makalah sebelumnya (Burnap
dan Williams 2015).
Selain Thomas, Metode Deep Learning (Fast Text, LSTM, CNN dan Gated
Recurrent Unit Network) digunakan untuk mendeteksi hate speech seperti yang
dilakukan oleh Varma (2017) dan Zhang (2016).
Penelitian yang dilakukan Varma (2017) menjelaskan bahwa Metode Deep
Learning (Fast Text, LSTM, CNN dan Gated Recurrent Unit Network) yang diusulkan
secara signifikan lebih baik daripada Metode TF-IDF dan Metode n-gram karakter.
Diantara Metode lainya Metode CNN tampil lebih baik dari LSTM dan Fast Text.
Anehnya, inisialisasi dengan random embedding sedikit lebih baik daripada
inisialisasi dengan GloVe saat digunakan bersamaan dengan GBDT. Metode terbaik
adalah LSTM + Random Embedding + GBDT, dimana tweet embedding diinisialisasi
ke random vektor, Metode LSTM dilatih menggunakan propagasi balik, dan
kemudian embedding digunakan untuk melatih pengklasifikasi GBDT. Kombinasi
CNN, LSTM, emblem Fast Text sebagai fitur untuk GBDT tidak menghasilkan hasil
yang lebih baik.
Penelitian yang dilakukan Zhang (2016) menjelaskan bahwa penelitian tersebut
memperkenalkan Metode yang secara otomatis mengklasifikasikan perkataan yang
menyebabkan kebencian di Twitter menggunakan model jaringan saraf dalam
menggabungkan CNN dan GRU, hal itu ditemukan secara empiris dan meningkatkan
akurasi klasifikasi. Penelitian tersebut juga melakukan evaluasi komparatif pada
koleksi terbesar dari dataset publik dan menunjukkan Metode yang diusulkan dapat
menambahkan baseline dan juga state of the art kasus. Hasil penelitian tersebut
membuat referensi baru untuk studi perbandingan masa depan. Penelitian tersebut juga
membuat dan menerbitkan kumpulan data kebencian lainnya, melengkapi dataset yang
sudah ada dengan berfokus pada agama (Muslim) dan pengungsi. Tinjauan pustaka
tersebut ditampilkan pada Tabel 2.1.

Tabel 2.1 Tinjauan Pustaka


No Penulis Metode Fitur yang digunakan
Buntoro
1
(2016) Metode Naive Bayes Clasiffier, Fitur Unigram,
Metode Support Vector
Machine Fitur Bigram,
Fitur n-gram ,
Fitur stop word list WEKA ,
Fitur stop word list
B.Indonesia
Silva
2 Word Generalization
(2016) Metode membangun ekspresi :
I + intensity+ user_intent+
hate_target
Metode Deep Learning
Zhang (convolutional neural network
3 Word Generalization
(2016) & gated recurrent unit
network),
Metode Deep Neural Network
Thomas
4 Metode Logistic Regression,
(2017) Fitur Bigram,
Metode Linear SVM Fitur Unigram,
Fitur Trigram,
Fitur sintaktik
Varma Metode Deep Learning (Fast
5
(2017) Text, LSTM, CNN) Fitur Char n-gram,

Fitur TF -IDF,
Fitur BoWV
BAB III
LANDASAN TEORI

3.1 Hate speech


Hate speech (Ujaran Penghinaan atau kebencian) adalah tindakan komunikasi
yang dilakukan oleh suatu individu atau kelompok dalam bentuk provokasi, hasutan,
ataupun hinaan kepada individu atau kelompok yang lain dalam hal berbagai aspek
seperti ras, warna kulit, etnis, gender, cacat, orientasi seksual, kewarganegaraan,
agama, dan lain-lain. Dalam arti hukum, Hate speech adalah perkataan, perilaku,
tulisan, ataupun pertunjukan yang dilarang karena dapat memicu terjadinya tindakan
kekerasan dan sikap prasangka entah dari pihak pelaku ataupun korban dari tindakan
tersebut. Website yang menggunakan atau menerapkan Hate speech ini disebut Hate
Site. Kebanyakan dari situs ini menggunakan Forum Internet dan Berita untuk
mempertegas suatu sudut pandang tertentu. Para kritikus berpendapat bahwa
istilah Hate speech merupakan contoh modern dari novel Newspeak, ketika Hate
speech dipakai untuk memberikan kritik secara diam-diam kepada kebijakan sosial
yang diimplementasikan dengan buruk dan terburu-buru seakan-akan kebijakan
tersebut terlihat benar secara politik. Sampai saat ini, belum ada pengertian atau
definisi secara hukum mengenai apa yang disebut Hate speech dan pencemaran nama
baik dalam bahasa Indonesia. Dalam bahasa Inggris, pencemaran nama baik diartikan
sebagai sebagai defamation, libel, dan slander yang jika diterjemahkan ke dalam
bahasa Indonesia adalah fitnah (defamation), fitnah lisan (slander), fitnah tertulis
(libel). Dalam bahasa Indonesia, belum ada istilah yang sah untuk membedakan ketiga
kata tersebut.

3.1.1 Hate speech Dalam Internet


Etika dalam dunia online perlu ditegaskan, mengingat dunia online merupakan
hal yang sudah dianggap penting bagi masyarakat dunia. Namun, semakin banyak
pihak yang menyalahgunakan dunia maya untuk menyebarluaskan hal-hal yang tidak
lazim mengenai sesuatu, seperti suku bangsa, agama, dan ras. Penyebaran berita yang
sifatnya fitnah di dunia Internet, misalnya, menjadi hal yang patut diperhatikan.
Internet Service Provider (ISP) biasanya menjadi pihak yang dianggap bertanggung
jawab atas segala isi yang mengandung fitnah. Sesungguhnya, isi yang mengandung
fitnah berada di luar tanggung jawab ISP; terlebih ada pihak ke tiga yang
memasukkannya tanpa sepengetahuan ISP. Sama halnya seperti manajemen dalam
toko buku, dunia Internet membedakan peran antara distributor dan publisher. Dalam
hal ini, ISP sekadar bertindak sebagai publisher yang mengontrak distributor untuk
mengelola jaringan mereka.

Hal di ataslah yang sering disebut dengan Libel yakni sebuah pernyataan
ataupun ekspresi seseorang yang mengakibatkan rusaknya reputasi orang lain dalam
komunitas tertentu karena ekspresinya itu. Ataupun bisa dalam bentuk pembunuhan
karakter dan dalam dunia professional sekalipun. Dalam bukunya yang berjudul ‘The
New Communication Technology’, Mirabito menyatakan ada 12 ribu pengguna
Internet yang menjadi korban kejahatan di Internet yang berkenaan dengan: suku
bangsa, ras, agama, etnik, orientasi seksual, hingga gender. Nyatanya, kemajuan
Internet berjalan seiring dengan peningkatan teror di dunia maya. Contoh kasus pada
seorang anak muda berusia 19 tahun yang menggunakan komputer di sekolahnya
untuk mengirim surat elektronik berisi ancaman pembunuhan pada 62 siswa lain yang
keturunan Asia-Amerika. Contoh kasus di atas adalah salah satu contoh kasus
mengenai istilah hate yang sering dihadapi oleh Amerika dan merupakan sebuah
dilema dari kebebasan berekspresi dari amandment mereka. Hate Crime merupakan
masalah serius yang dihadapi oleh Amerika, pada tahun 2001 sendiri terdapat 12.000
individu yang menjadi korban dari ujaran kebencian ini biasanya dikarenakan ras,
etnis, negara asal, agama atau kepercayaan mereka, orientasi sex, atau bahkan karena
gender mereka. Di Amerika, pernah muncul sebuah aksi yang bernama The Hate
Crime Prevention Act of 2003 yang masih diperdebatkan dalam kongres yang ke-108.
Jika aksi ini disahkan kedalam hukum, maka perlindungan dari hate speech akan
semakin terjamin dari lembaga federal. Aksi tersebut didasarkan pada premis legal
yaitu:
 Individu yang menjadi target Hate Crime akan mencoba untuk pergi keluar batas
negara agar tidak menjadi korban penghinaan.
 Pelaku ujaran kebencian akan mencoba untuk pergi melewati batas negara untuk
melakukan penghinaan terhadap korban.
 Pelaku mungkin menggunakan artikel, termasuk komputer yang mampu
menyebarkan informasi ke berbagai negara, untuk melakukan Hate Crime.

3.2 Deep Learning


Deep Learning adalah pengembangan dari Jaringan Saraf Tiruan (Artificial
Neural Network) yang memiliki lebih banyak lapisan atau layer. Dengan Lapisan yang
lebih banyak, Deep Learning diharapkan untuk dapat mengenali proses yang lebih
kompleks. Metode ini efektif dalam mengidentifikasi pola dari data. Deep
Learning dapat meningkatkan semua bagian dari rdasan buatan, mulai dari
pemrosesan bahasa alami hingga machine vision. Deep Learning dapat berperan
sebagai otak yang lebih baik yang dapat meningkatkan cara belajar komputer. Ia dapat
meningkatkan kemampuan asisten virtual seperti Google Now untuk menangani hal-
hal yang belum dikenali dengan baik oleh kedua asisten virtual tersebut. Pemrosesan
video dan pembuatan klip juga sangat mungkin dilakukan oleh Deep Learning.
Algoritma Deep Learning memiliki beberapa jenis diantaranya adalah Supervised
Learning dan Unsupervised Learning.
3.2.1 Supervised Learning
Algoritma Supervised Learning ditampilkan pada Tabel 3.1.
Tabel 3.1 Supervised learning
Pengolahan data berupa tulisan Recurrent Network,
- analisa sentimen Recurrent Network Sensor
- penguraian kalimat Network
Deep Belief Network,
Pengolahan citra digital
Convolutional Network
Convolutional Network,
Pengenalan obyek Recurrent Network Tensor
Network
Pengolahan suara Recurrent Network

3.2.2 Unsupervised Learning


Unsupervised Learning menggunakan Restricted Boltman Machines atau
Autoencoder.

3.3 Text Mining


Text mining dapat didefinisikan sebagai proses untuk memperoleh informasi
oleh user dengan berinteraksi sekumpulan dokumen dari waktu ke waktu dengan
menggunakan seperangkat alat analisis. Text mining merupakan perkembangan dari
disiplin ilmu komputer dalam menangani masalah tentang Natural Language. Text
mining mengadopsi beberapa metodologi dan teknik dari beberapa area yaitu
Information Retrieval, Information Extraction, dan komputasi linguistik berbasis
korpus.
Text mining melakukan beberapa tahapan proses dalam mengambil sebuah
informasi. Tahapan proses yang dilakukan dalam text mining adalah sebagai berikut:

1. Text Preprocessing
Text Preprocessing merupakan pemrosessan yang dilakukan untuk membuat
dokumen atau teks agar lebih konsisten saat melakukan proses selanjutnya. Proses
yang biasanya dilakukan adalah text cleanup, tokenization dan part of speech
tagging.
2. Text Transformation (Attribute Generation)
Text Transformation merupakan proses yang dilakukan dengan mengambil fitur
dari sebuah teks dengan menggunakan pendekatan bag of word, vector space,
stemming dan stopword yang bertujuan untuk menentukan fitur terbaik dalam
mencirikan dokumen.
3. Feature Selection (Attribute Selection)
Feature Selection merupakan proses dalam mengurangi fitur yang berlebihan
atau tidak relevan dalam teks sehingga didapatkan bagian terpenting saja.
4. Mining Patterns
Mining Pattern merupakan proses mining data teks dengan menggunakan
teknik mining seperti classification, clustering dan decision tree dalam menemukan
sebuah pola atau knowledge dari teks.
5. Evaluation
Melakukan evaluasi dari hasilnya yang selanjutnya dari hasil tersebut dapat
dibuang atau dapat digunakan sebagai alur selanjutnya. Tahapan dari text mining
dapat dilihat pada Gambar 3.1.
Gambar 3.1 Tahapan Text Mining
3.4 Sentiment Analysis
Sentiment analysis atau opinion mining adalah bidang studi yang menganalisis
opini, sentimen, evaluasi, sikap, dan emosi seseorang yang diungkapkan dalam bahasa
tulisan. Dalam sentimen analysis atau opinion mining mencakup beberapa tugas yang
berbeda seperti emotion analysis, opinion extraction, sentiment mining, subjectivity
analysis, affected analysis, emotion analysis.
Tujuan utama sentiment analysis adalah bagaimana komputer dapat mengenali
tingkat emosional positif atau negatif dari sampel teks. Adanya polaritas sentimen
tersebut merupakan ciri khusus dari teks. Sebuah teks secara umum memiliki dua
makna sentimen yaitu sentimen positif dan sentimen negatif. Selain polaritas positif
dan negatif, terkadang polaritas juga dianggap sebagai kisaran dimana suatu dokumen
dapat berisi penyataan yang memiliki polaritas campuran.
Sentiment analysis dapat dipahami pada beberapa level yaitu level dokumen,
paragraf, kalimat, atau klausa. Berdasarkan level sumber datanya, sentiment analysis
terbagi menjadi dua kategori yaitu:

1. Coarse-gained Sentiment Analysis


Level Coarse-gained Sentiment Analysis yaitu proses analisis sentimen yang
dilakukan pada level dokumen. Klasifikasi sentimen dilakukan pada sebuah dokumen
secara keseluruhan untuk menilai sentimen positif atau negatif.

2. Fine-gained Sentiment Analysis


Level Fine-gained Sentiment Analysis yaitu proses analisis sentimen yang
dilakukan pada level kalimat. Klasifikasi setimen dilakukan pada setiap kalimat pada
suatu dokumen, sehingga memungkinkan terjadinya perbedaan sentimen level kalimat
dan dokumen.

3.5 Word2vec
Word2vec, yang dipublikasikan oleh Google pada tahun 2013, adalah
implementasi jaringan syaraf tiruan yang mempelajari representasi terdistribusi kata.
Vektor kata terdistribusi powerful dan dapat digunakan dalam prediksi kata dan
terjemahan (Zharmagambetov dan Pak, 2015). Word2vec adalah sekelompok model
yang digunakan untuk menghasilkan word embedding. Representasi vektor dari
pembelajaran kata dengan menggunakan model word2vec telah terbukti membawa
makna semantik dan berguna dalam berbagai tugas NLP (Rong, 2014). Word2vec
dikembangkan dengan menggunakan jaringan syaraf dua lapisan.
Diperlukan data teks atau korpus teks sebagai masukan dan menghasilkan
sekumpulan vektor dari teks yang diberikan. Model word2vec menghasilkan satu set
vektor atau ruang vektor dari teks. Di ruang vektor, setiap kata unik dalam korpus
diberikan vektor yang sesuai. Jadi, ruang vektor merupakan representasi vektor dari
semua kata yang ada dalam korpus teks.

Gambar 3.2 Arsitektur CBOW

Word2vec memiliki dua buah arsitektur yang berbeda yaitu Continuous Bag-
of-word (CBOW) dan Skip-gram. Dalam metode CBOW tujuannya adalah untuk
memprediksi kata yang diberikan oleh kata-kata disekitarnya. Pada Gambar 3.2
diilustrasikan arsitektur CBOW dalam memprediksi kata saat ini didasarkan pada
konteks. Skip-gram sebaliknya, yaitu untuk memprediksi jendela kata yang
diberikan oleh kata tunggal. Kedua metode menggunakan jaringan syaraf tiruan
sebagai algoritmanya. Pada Gambar 3.3 diilustrasikan arsitektur Skip-gram
memprediksi kata yang diberikan oleh kata disekitarnya. Awalnya setiap kata dalam
kosakata adalah vektor acak N dimensi. Selama pelatihan, algoritma belajar vektor
optimal untuk setiap kata menggunakan metode CBOW atau skip-gram.
Gambar 3.3 Arsitektur skip-gram

Komponen utama arsitektur model word2vec adalah jaringan syaraf.


Word2vec memiliki dua lapisan pada jaringan syaraf untuk menghasilkan bentuk
vektor kata. Seperti yang ditunjukkan pada Gambar 3.4, ada tiga blok utama model
word2vec yaitu vocabulary builder, context builder, dan jaringan syaraf dua lapisan.
Gambar 3.4 Word2vec block

Vocabulary builder adalah blok pertama dari model word2vec. Dibutuhkan


data teks yang sebagian besar dalam bentuk kalimat. Vocabulary builder digunakan
untuk membangun kosakata dari korpus teks yang diberikan. Ini akan mengambil
semua kata-kata unik dari korpus. Setiap kata dalam kosakata memiliki hubunga
dengan objek kosakata, yang berisi indeks dan jumlah kata.
Context builder menggunakan output dari vocabulary builder. Context
window seperti sliding window yang dapat ditentukan ukuran window sesuai
aplikasi NLP saat menggunakna word2vec. Umumnya aplikasi NLP menggunakan
ukuran window lima sampai sepuluh kata. Jika digunakan sepuluh kata, maka akan
dipertimbangkan sepuluh kata disisi kiri dari kata tengah dan sepuluh kata disisi
kanan kata tengah. Dengan demikian, dapat menangkap informasi tentang kata-kata
disekitar kata pusat. Sebagai contoh, ukuran context window=1, dengan kalimat
“aku suka belajar komputer.”, dan ‘belajar’ adalah kata pusat. Jadi, harus
dipertimbangkan kata-kata disekitarnya sesuai ukuran window seperti kata ‘suka’
dan ‘komputer’. Kemudian iterasi berikutnya ‘komputer’, kata disekitarnya yaitu
‘dalam’ dan pada akhir kalimat tanda titik.
Setelah didapatkan pasangan kata, ini akan menjadi input pada jaringan syaraf.
Lapisan input memiliki banyak neuron karena ada kata-kata dalam kosakata untuk
pelatihan. Ukuran lapisan tersembunyi dalam jumlah neuronnya adalah dimensi dari
vektor kata yang dihasilkan. Lapisan output memiliki jumlah neuron yang sama
dengan lapisan input. Input pada lapisan input pertama adalah kata dengan
pengkodean one-hot. Asumsikan bahwa ukuran kosakata untuk mempelajari vektor
kata adalah V, yang berarti ada nomor V dari kata-kata yang berbeda dalam korpus.
Dalam hal ini, posisi kata yang mewakili dirinya dikodekan sebagai 1 dan semua
posisi lainnya dikodekan sebagai 0. Misalkan dimensi dari kata-kata ini adalah N.
Jadi, input ke koneksi lapisan tersembunyi dapat diwakili oleh matriks W1 (matriks
input) dari ukuran V * N, dengan setiap baris dari matriks W1 yang mewakili kata
dari kosakata. Demikian pula, koneksi dari lapisan tersembunyi ke lapisan output
berarti output dari lapisan tersembunyi dapat dijelaskan oleh matriks output lapisan
tersembunyi W0 (matriks hidden layer). Matriks W0 berukuran N * V. Dalam hal
ini, setiap kolom dari matriks W0 mewakili kata dari kosakata yang diberikan.
Untuk mempermudah memahami Word2vec maka akan diilustrasikan cara kerja
Word2vec, misal kita mempunyai sebuah kalimat yaitu: “Anoa melihat seekor kucing,
anoa mengejar kucing, kucing memanjat sebuah pohon”, korpus kosakata dari kalimat
tersebut memiliki delapan kata, setelah disusun menurut abjad, setiap kata dapat
direferensikan oleh indeks seperti yang dapat dilihat dalam Tabel 3.1.
Tabel 3.1 Corpus Word2vec
Kosakata Indeks
Anoa 1
Kucing 2
Melihat 3
Memanjat 4
Mengejar 5
Pohon 6
Seekor 7
Sebuah 8

Untuk contoh diatas, jaringan syaraf akan memiliki delapan neuron input dan
delapan neuron output, Kita asumsikan bahwa kita memutuskan untuk menggunakan
tiga neuron pada lapisan tersembunyi. Ini berarti matrik W1 dan W0 didapat dari
matriks 8x3 dan 3x8. Sebelum pelatihan dimulai, matriks ini diinisialisasikan dengan
nilai-nilai acak yang kecil seperti biasa dalam pelatihan jaringan syaraf tiruan. Kita
asumsikan W1 dan W0 diinisialisasikan dengan nilai-nilai berikut:
Misalkan kita ingin jaringan untuk mempelajari hubungan antara kata “kucing”
dan kata “memanjat”. Artinya jaringan harus menunjukkan probabilitas tinggi untuk
kata “memanjat” ketika kata “kucing” dimasukkan ke jaringan. Dalam terminologi
word embedding, kata “kucing” disebut sebagai konteks dan kata “memanjat” disebut
sebagai sasaran kata (target kata). Dalam hal ini, vektor input dari kata “kucing” akan
dikodekan menjadi [01000000], hanya indeks kedua dari vektor yang bernilai 1, hal
ini dikarenakan kata input “kucing” berada pada posisi nomor dua dalam daftar yang
diurutkan didalam corpus kata. Sedangkan kata yang menjadi target yaitu kata
“memanjat”, akan dikodekan menjadi [00010000], terlihat hanya indeks keempat dari
vektor yang bernilai 1 dikarenakan kata input “memanjat” berada pada posisi nomor
empat dalam daftar yang diurutkan didalam corpus kata.
Dengan vektor input menggunakan kata “kucing”, output pada neuron lapisan
tersembunyi dapat dihitung dengan persamaan 3.1.

Dengan H adalah hidden layer, X adalah input neuron sebelumnya dan W1


adalah bobot, output dari neuron tersembunyi yaitu vektor H meniru bobot dari baris
kedua matriks dari W1 hal ini dikarenakan input yang diberikan ke jaringan dikodekan
menggunakan representasi “1-out of-V” yang berarti bahwa hanya satu baris masukan
yang nilainya bernilai satu dan sisanya dari jalur input diatur ke nol. Jadi fungsi dari
input ke koneksi lapisan tersembunyi pada dasarnya adalah dengan menyalin vektor
kata input ke lapisan tersembunyi, kemudian untuk output dari lapisan tersembunyi
didapat dari persamaan 3.2.
Selanjutnya untuk menghasilkan probabilitas untuk kata-kata, Word2vec
menggunakan fungsi softmax pada lapisan output, dengan demikian probabilitas
untuk delapan kata-kata dalam korpus dapat dihitung menggunakan persamaan 3.3.

Dengan demikian probabilitas untuk delapan kata-kata dalam korpus adalah


0.158285 0.096969 0.111541 0.102965 0.137606 0.137606 0.088623 0.166400. Nilai
probabilitas untuk kata “memanjat” dicetak tebal, hal ini mengingat vektor sasaran
berada pada indeks keempat didalam corpus kata [00010000], vektor kesalahan untuk
lapisan output dengan mudah dihitung dengan mengurangkan vektor probabilitas
dengan vektor sasaran. Setelah kesalahan diketahui, bobot dalam matriks W1 dan W0
dapat diperbarui menggunakan backpropagation. Dengan demikian, pelatihan dapat
dilanjutkan dengan menghadirkan berbagai pasangan kata konteks-target dari korpus.

3.6 Long Short-Term Memory


Long Short-Term Memory (LSTM) merupakan varian dari Recurrent Neural
Network (RNN). LSTM dapat mengingat informasi jangka panjang. LSTM
menggantikan simpul RNN di hidden layer dengan sel LSTM yang dirancang untuk
menyimpan informasi terdahulu. LSTM menggunakan tiga gerbang yaitu input gate,
forget gate, output gate untuk mengendalikan penggunaan dan memperbaharui
informasi teks terdahulu. Sel memori dan tiga gerbang dirancang untuk memungkinkan
LSTM membaca, menyimpan, dan memperbaharui informasi terdahulu.

Berbeda dengan arsitektur RNN konvensional, LSTM dikembangkan sebagai


solusi dari masalah vanishing gradient yang biasa ditemui pada RNN konvensional.
Gradien yang semakin mengecil sampai layer terakhir sehingga nilai bobot tidak
berubah dan menyebabkan proses training tidak pernah konvergen untuk memperoleh
hasil yang lebih baik disebut vanishing gradients. Sebaliknya gradien yang semakin
membesar sehingga nilai bobot pada beberapa layer juga membesar sehingga
algoritme optimasi menjadi divergen disebut exploding gradients. RNN konvensional
tidak bisa mengingat hal-hal yang telah terjadi di jaringan dalam jangka waktu yang
terlalu lama. Arsitektur RNN dapat dilihat pada Gambar 3.3. Gerbang-gerbang gates
pada LSTM memungkinkan memory cell untuk menyimpan dan mengakses informasi
dalam jangka waktu yang lebih lama, sehingga mengurangi masalah vanishing
gradient. Gambar 3.4 memberikan ilustasi memory block LSTM dengan single cell.

Gambar 3.3 Struktur RNN

Gambar 3.4 Struktur LSTM


Langkah pertama pada LSTM adalah menentukan apakah informasi dari input
Xt-1 dan Xt pantas lewat atau tidak dari cell state. Keputusan ini dibuat oleh lapisan
sigmoid yang disebut “forget gate”. Output 1 artinya “biarkan lewat” dan 0 artinya
“lupakan informasi”. Menghitung nilai forget gate dengan persamaan berikut:

ft= σ (Wf .[ht−1,xt]+bi) (1)

Kemudian langkah selanjutnya adalah menentukan informasi baru apa yang


akan disimpan di cell state. Pertama lapisan sigmoid yang disebut input gate yang
menentukan bagian mana yang akan di update. Selanjutnya, lapisan tanh yang
membuat vektor nilai kandidat baru, 𝑐̃𝑡, yang dapat ditambahkan ke cell state. Pada
langkah selanjutnya, digabungkan keduanya untuk membuat update ke state. Untuk
menghitung nilai input gate dengan persamaan (2) dan nilai kandidat baru dengan
persamaan (3).

it= σ (Wi .[ht−1,xt]+bi) (2)

ct̃ = tanh (Wc .[ht−1,xt]+bc) (3)

Selanjutnya memperbarui cell state lama, 𝐶𝑡−1, ke cell state baru 𝐶𝑡. Dengan
mengalikan cell state lama dengan forget gate 𝑓𝑡 kemudian ditambah 𝑖𝑡∗ 𝑐̃𝑡. Untuk
lebih jelas pada persamaan (4).

Ct= ft∗ Ct−1+ it∗ C̃ t (4)

Terakhir adalah output gate. Pertama menjalankan lapisan sigmoid yang


menentukan sel mana yang akan menjadi output, kemudian menempatkan cell state
melalui tanh dan memperbanyak output dari sigmoid gate, sehingga hanya bagian
yang kita tentukan yang menjadi output. Perhitungan output gate dengan persamaan
(5) dan (6). Terakhir adalah output gate. Pertama menjalankan lapisan sigmoid yang
menentukan sel mana yang akan menjadi output, kemudian menempatkan cell state
melalui tanh dan memperbanyak output dari sigmoid gate, sehingga hanya bagian
yang kita tentukan yang menjadi output. Perhitungan output gate dengan persamaan
(5) dan (6).

Ot= σ (Wo .[ht−1,xt]+bo) (5)


ht= Ot∗tanh(Ct) (6)

Model LSTM terdiri dari lapisan LSTM tersembunyi tunggal diikuti oleh
lapisan output seperti pada Gambar (5) bagian (a). Deep LSTM adalah ekstensi untuk
model LSTM yang memiliki beberapa layer LSTM tersembunyi di mana setiap
lapisan berisi beberapa sel memori/neuron seperti yang ditunjukkan pada Gambar (6)
bagian (b). Deep LSTM diperkenalkan oleh Graves (2012) yang menyatakan
kedalaman jaringan lebih penting daripada jumlah sel memori dalam lapisan yang
diberikan untuk pembelajaran model. Deep LSTM memungkinkan representasi yang
lebih kompleks untuk menangkap informasi pada skala yang berbeda yang digunakan
untuk pembelajaran pada model.
Gambar 3.5 Arsitektur LSTM 1 layer (a) dan 2 layer (b)

3.7 Naïve Bayes

Algoritma Naive Bayes mempelajari kejadian dari rekaman database dengan


cara memperhitungkan korelasi antara variabel yang dianalisa dengan variabel-variabel
lainnya. Hasilnya adalah kita dapat memprediksi sesuatu, misalnya apakah seseorang
berasal dari kelompok tertentu berdasarkan variabel-variabel yang melekat padanya.
Selain itu, Naive Bayes dapat juga menganalisa variabel-variabel yang paling
mempengaruhinya dalam bentuk peluang. Naive Bayes merupakan teknik prediksi
berbasis probabilistik sederhana yang berdasar pada penerapan Teorema Bayes dengan
asumsi independensi yang kuat. Keuntungan dari metode Naïve Bayes adalah dalam
melakukan proses klasifikasi data latih yang diperlukan sedikit, data latih digunakan
untuk melakukan estimasi parameter (rata-rata dan varian dari variable). Persamaan
dalam teorema Bayes ditunjukkan pada persamaan berikut:
𝑃(𝑋|𝐻). 𝑃(𝐻)
𝑃(𝐻|𝑋) =
𝑃(𝑋)

Keterangan:
X : Data dengan class yang belum diketahui
P : Hipotesis data X merupakan suatu class spesifik
P(H|X) : Probabilitas hipotesis H berdasarkan kondisi X (posteritori probability)
P(H) : Probabilitas hipotesis H (prior probability)
P(X|H) : Probabilitas X berdasarkan kondisi pada hipotesis H
P(X) : probabilitas X
BAB IV
ANALISIS DAN PERANCANGAN SISTEM

4.1 Analisis Sistem


Sistem yang dibangun pada penelitian ini mengimplementasikan metode
Long Short-Term Memory untuk menghitung akurasi pada sentimen positif hate
speech dan netral berdasarkan data hate speech yang dicuitkan oleh pengguna
twitter. Sistem yang dibangun terdiri dari lima bagian, yaitu pengumpulan data,
preprocessing, konversi kalimat, klasifikasi sentimen, dan pengujian akurasi sistem.
Tahapan awal yang dilakukan adalah pengumpulan data melalui proses crawling
dari twitter dan kemudian disimpan kedalam file csv. Dalam penelitian ini, data yang
dikumpulkan akan dikelompokkan menjadi tiga buah polaritas sentimen yaitu
sentimen positif hate speech dan sentimen netral.

Data yang dibutuhkan dalam penelitian ini terdiri dari dua jenis, yaitu data
latih dan data uji. Semua data yang digunakan ini diambil dari kalimat hate speech
yang telah dilabeli sesuai dengan kelas sentimennya secara manual. Data latih
digunakan untuk mengklasifikasikan hate speech pada kelas sentimennya dan
jumlah datanya lebih banyak. Dalam penelitian ini jumlah data latih 80 % dari total
data keseluruhan. Sedangkan data uji digunakan untuk mengukur sejauh mana
classifier berhasil melakukan klasifikasi dengan benar. Jumlah data yang digunakan
dalam penelitian ini adalah 20% dari data keseluruhan.

Tahapan berikutnya adalah melakukan preprocessing yang bertujuan untuk


mendapatkan data hate speech bersih agar proses perhitungan klasifikasi dan
penentuan kelas sentimen menjadi lebih akurat. Data yang akan digunakan pada
proses preprocessing adalah data hate speech berbahasa Indonesia. Tahapan
preprocessing antara lain casefolding, normalisasi fitur, stopword removal, konversi
slangword. Setelah selesai tahap preprocessing, tahap selanjutnya adalah ekstraksi
fitur yaitu pengubahan data mentah menjadi data yang siap dipakai sebagai input
sistem. Pada tahap ini data hasil preprocessing akan dikonversi menjadi vektor.
Vektor diambil dari hasil training korpus Wikipedia Indonesia menggunakan
Word2vec.

Tahapan berikutnya adalah proses klasifikasi hate speech menggunakan


arsitektur Long Short-Term Memory yang telah ditentukan nilai parameternya.
Model klasifikasi selanjutnya digunakan untuk mengidentifikasi klasifikasi
sentimen hate speech pada data baru (data testing). Proses terakhir adalah pengujian
akurasi sistem terhadap data hate speech untuk menghitung akurasi.

4.2 Arsitektur Sistem


Berdasarkan analisis sistem yang telah dijelaskan diatas, arsitektur sistem
yang akan dibangun dapat dilihat pada Gambar 4.1.
Gambar 4.1 Arsitektur Sistem

4.3 Pengupulan Data


Data dikumpulkan berasal dari cuitan status pengguna di Twitter yang
berjumlah 2000 data. Data yang dikumpulkan hanya berupa cuitan status pengguna
berupa ujaran kebencian, artinya tulisan status tersebut terindikasi atau terdeteksi
sebagai Hate speech (ujaran kebencian). Setelah data terkumpul, selanjutnya
dilakukan filtering data sehingga data yang dihasilkan sesuai untuk penelitian ujaran
kebencian di media sosial Twitter yang ditampilkan pada Tabel 4.1.

Tabel 4.1 Hasil pengumpulan tweet bahasa indonesia


Data Tweet Indikasi
Sejak kapan politik dan agama menjadi sesuatu yang Hate speech
tidak bisa dipisahkan ya... Sejak jaman nenek anda
ya?
Lawan jangan takut . Anis harus dilantik . Memang Hate speech
nya mereka yang punya Indonesia berbuat semau
hatinya ?
Efek dari ketakutan politisi yang takut akan Netral
kekalahan di pilkada mendatang...yg sudah kalah
karena kita peduli akan agama.. agama kuat negara
pun ikut kuat...
Memilihlah berdasar kecerdasan seseorang yang Netral
anda pilih dengan begitu anda akan terlihat cerdas
juga.

4.3.1 Preprocessing
Tahapan preprocessing adalah mengelola data tweet agar lebih mudah dalam
melakukan proses selanjutnya. Dalam preprocessing terdapat dua tahapan yang harus
dilakukan yaitu:
1. Case Folding
Tidak semua dokumen teks konsisten dalam penggunaan huruf. Oleh karena itu,
tahap ini bertujuan untuk merubah karakter huruf di dalam komentar menjadi karakter
huruf kecil semua. Hasil tahap case folding ditampilkan pada Tabel 4.2.
Tabel 4.2 Tahap case folding
Input Output
Sejak kapan politik dan agama sejak kapan politik dan agama menjadi
menjadi sesuatu yang tidak bisa sesuatu yang tidak bisa dipisahkan ya...
dipisahkan ya... Sejak jaman nenek sejak jaman nenek anda ya?
anda ya?

2. Normalisasi Fitur
Tahap ini bertujuan untuk menghapus karakter khusus dalam komentar seperti
tanda baca (titik(.), koma(,), tanda tanya(?), tanda seru(!) dan sebagainya), angka
numerik (0-9), dan karakter lainnya ($, %, *, dan sebagainya). Hal ini dilakukan agar
proses klasifikasi menjadi lebih akurat. Hasil tahap normalisasi fitur ditampilkan pada
Tabel 4.3.
Tabel 4.3 Tahap normalisasi fitur
Input Output
sejak kapan politik dan agama sejak kapan politik dan agama menjadi
menjadi sesuatu yang tidak bisa sesuatu yang tidak bisa dipisahkan ya
dipisahkan ya... sejak jaman nenek sejak jaman nenek anda ya
anda ya?

3. Stop Word Removal


Penghapusan Stop Word merupakan proses penghilangan kata Stop Word. Stop
Word adalah kata- kata yang sering kali muncul dalam dokumen namun arti dari kata
kata tersebut tidak deskriptif dan tidak memiliki keterkaitan dengan tema tertentu.
Misalnya “di”, ”oleh”, “pada”, ”sebuah”, ”karena” dan lain sebagainya. Contoh dari
Stop Word Removal dapat dilihat pada Tabel 4.4.

Tabel 4.4 Hasil stopword

Kalimat Hasil Stopword Removal

Sejak Sejak
Kapan Kapan
Politik Politik
Dan Agama
Agama Menjadi
Menjadi Dipisahkan
Sesuatu Jaman
Yang Nenek
Tidak Anda
Bisa
Dipisahkan
Ya
Sejak
Jaman
Nenek
Anda
Ya

4. Slangword
Slangword merupakan proses mengubah kata yang tidak baku menjadi kata yang
baku. Tahap ini dilakukan dengan menggunakan bantuan kamus slangword dan padanan
dalam kata baku. Tahapan ini akan memeriksa kata yang terdapat dalam kamus slangword.
Contoh dari Slangword dapat dilihat pada Tabel 4.5.

Tabel 4.5 Hasil slangword

Kalimat Hasil Slangword

Aq Aku

Alus Halus

Bkn Bukan

Cm Cuma

Dah Sudah

Gak Tidak
Kalo Kalau

4.3.2 Konversi Kalimat


Konversi kalimat dilakukan dalam beberapa tahap yaitu pembuatan kamus
kata, mengubah kalimat menjadi angka, dan padding. Proses ini dilakukan agar siap
digunakan sebagai input pada metode LSTM. Proses diawali dengan membuat kamus
kata yang digunakan untuk memberikan id kata yang terdapat dalam kalimat pada data
hate speech yang telah melalui proses preprocessing. Dalam penelitian ini kamus kata
yang digunakan yaitu 5000. Contoh data hate speech yang sudah melalui proses
preprocessing dapat dilihat pada Tabel 4.6.

Tabel 4.6 Contoh kalimat hate speech yang telah melalui preprocessing
No Kalimat
1 lawan jangan takut anis dilantik mereka indonesia berbuat semau
hatinya
2 efek takut politisi takut kalah pilkada mendatang kalah kita peduli
agama negara kuat
3 memilihlah berdasar kecerdasan seseorang anda pilih terlihat cerdas.

Dari data hate speech yang telah melalui proses preprocessing seperti pada
Tabel 4.6, kemudian akan dibuat kamus kata. Ada tiga tahap yang harus dilakukan,
pertama memisahkan kalimat menjadi satuan kata. Kedua yaitu menghapus duplikasi
kata. Ketiga adalah memberi id pada masing-masing kata secara berurutan
berdasarkan kata yang sering muncul. Kata pertama diberi id=1 dan seterusnya hingga
kata terakhir. Contoh kamus kata dapat dilihat pada Gambar 4.2.
lawan = 1 berbuat = 8 kalah = 15 berdasar = 22
jangan = 2 semau = 9 kita = 16 kecerdasan = 23
takut = 3 hatinya = 10 peduli = 17 seseorang = 24
anis = 4 efek = 11 agama = 18 anda = 25
dilantik = 5 politisi = 12 negara = 19 pilih = 26
mereka = 6 pilkada = 13 kuat = 20 terlihat = 27
indonesia = 7 mendatang = 14 memilihlah = 21 cerdas = 28
Gambar 4.2 Contoh kamus kata

Tahap selanjutnya mengubah kalimat menjadi angka yaitu mengubah kata


yang menyusun kalimat hate speech menjadi angka berdasarkan kamus kata yang
telah dibuat pada tahap sebelumnya. Data kalimat hate speech pada Tabel 4.6 akan
diubah menjadi angka berdasarkan kamus kata seperti pada Gambar 4.2. Contoh hasil
konversi kalimat dapat dilihat pada Gambar 4.3.
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
11, 3, 12, 3, 15, 13, 14, 15, 16, 17, 18, 19, 20
21, 22, 23, 24, 25, 26, 27, 28
Gambar 4.3 Hasil konversi kalimat

Tahap terakhir adalah memberi padding pada kalimat agar panjang kalimatnya
sama. Padding dilakukan dengan menentukan panjang maksimal kata pada suatu
kalimat atau mencari jumlah kalimat terpanjang pada data hate speech. Pada Gambar
4.3 dapat dilihat kalimat terpanjang pada kalimat kedua dengan 13 kata, sedangkan
kalimat pertama memiliki 10 kata dan kalimat ketiga memiliki 8 kata. Oleh karena itu,
kalimat pertama dan kedua harus disesuaikan dengan kalimat terpanjang. Kalimat
pertama dan kedua harus dilakukan padding dengan menambahkan angka 0 agar
panjangnya sama dengan kalimat terpanjang. Penambahan angka 0 dapat dilakukan
diawal maupun diakhir kalimat. Hasil padding diawal kalimat dapat dilihat pada
Gambar 4.4.

Kalimat 1 0 0 0 1 2 3 4 5 6 7 8 9 10
Kalimat 2 11 3 12 3 15 13 14 15 16 17 18 19 20
Kalimat 3 0 0 0 0 0 21 22 23 24 25 26 27 28

Gambar 4.4 Proses padding kalimat hate sepech

4.4 Word2vec
4.4.1 Train Wikipedia Indonesia
Pada tahap ini diawali dengan mengambil data korpus Wikipedia Indonesia
(https://dumps.wikimedia.org/). Kemudian data tersebut dikonversi kedalam format
teks menggunakan bahasa pemrograman python. Data teks Wikipedia Indonesia
tersebut akan dijadikan input untuk membuat model word2vec dan output yang
dihasilkan berupa kata dan satu set vektor. Pada proses ini memanfaatkan library
gensim 3.4.0 (https://pypi.python.org/pypi/gensim). Library tersebut berfungsi
untuk membaca file teks Wikipedia Indonesia yang kemudian di training dengan
jaringan syaraf tiruan untuk mendapatkan nilai vektor yang kemudian disimpan
dalam format file txt. Arsitektur word2vec yang digunakan pada penelitian ini adalah
arsitektur CBOW (Continuous Bag-of-word) dan skipgram dengan ukuran
parameter yang sama yaitu vektor 300 dimensi, windows ukuran 10, dan jumlah
minimal kata sebanyak 5 kata. Proses pembuatan model word2vec dapat dilihat pada
Gambar 4.5.
Word2vec

Gambar 4.5 Proses pembuatan model word2vec

4.4.2 Konversi vector


Konversi vektor dilakukan dengan menggunakan kamus kata yang telah dibuat
dan akan direpresentasikan pada model word2vec yang telah dibuat pada tahap
sebelumnya. Jika kata dapat ditemukan dalam model word2vec (memiliki representasi
vektor untuk sebuah kata), maka akan digunakan vektor word2vec tersebut untuk
mewakili kata tersebut. Namun jika kata tidak ditemukan dalam model, maka akan
diganti dengan nilai vektor acak dari rata-rata semua nilai vektor pada model.
Selanjutnya didapatkan nilai vektor kamus kata berdasarkan model word2vec. Jika
diasumsikan kalimat hate speech memiliki 10 kata, dan vektor word2vec 300 dimensi,
maka input menjadi 10 x 300 = 3000 dimensi.

4.5 Perancangan Arsitektur LSTM


Pada tahap ini, metode yang digunakan adalah Long Short-Term Memory
(LSTM). Pada metode ini data akan dibagi menjadi dua bagian yaitu data latih dan data
uji. Masing-masing data berisi data hatespeech yang sudah diberi label secara manual
dan telah melalui tahap preprocessing. Arsitektur Long Short-Term Memory (LSTM)
yang diujikan dapat dilihat pada Gambar 4.6.
Embedding LSTM Output
Input Layer Layer layer

Gambar 4.6 LSTM layer

4.5.1 Input Layer


Layer pertama ini merupakan input dari LSTM yang tersusun dari kalimat
hate speech dengan ukuran tertentu. Dalam penelitian ini input yang digunakan
ukuran 20. Artinya nilai 20 adalah panjang maksimum kalimat dari data hate speech
yang sudah melalui proses preprocessing.

4.5.2 Embedding Layer


Tujuan dari embedding layer adalah untuk mempelajari pemetaan setiap kata
dalam kamus kata kedalam vektor dengan dimensi lebih rendah. Layer ini akan
mengubah indeks bilangan bulat positif dalam input menjadi vektor ukuran tetap
berdasarkan dimensi vektor dari kamus kata berdasarkan model word2vec. Data
input akan dipisah menjadi satuan indeks. Jika kata pada indeks dapat ditemukan
pada model word2vec, maka akan digunakan vektor word2vec tersebut untuk
mewakili indeks. Namun jika indeks tidak ditemukan dalam model, maka akan
diganti dengan vektor yang diinisialisasi secara acak. Sehingga, input akan berubah
menjadi vektor n*m dimensi dimana n adalah kalimat terpanjang pada kalimat hate
speech dan m adalah dimensi vektor kata. Pada penelitian ini, kalimat hate speech
terpanjang adalah 20 kata dan kita menggunakan model word2vec 300 dimensi.
Oleh karena itu, input akan menjadi 20 x 300 = 6000 dimensi. Output dari lapisan
ini akan menjadi input pada lapisan selanjutnya.
4.5.3 LSTM Layer
Long Short-Term Memory (LSTM) adalah varian dari Recurrent Neural
Network yang mampu mempelajari hubungan antar elemen dalam urutan input. Dalam
penelitian ini elemen tersebut adalah kata-kata. Jadi pada LSTM layer ini terdiri dari
beberapa neuron LSTM. Neuron LSTM dapat diartikan sebagai hidden layer pada
jaringan neural network. Jumlah node pada hidden layer setara dengan jumlah neuron
dalam LSTM pada setiap timestep. Ilustrasi neuron LSTM dapat dilihat pada Gambar
4.7.

Gambar 4.7 Neuron LSTM

Input dari LSTM layer adalah output dari embedding layer yaitu matriks 20
kali 300 dimensi. Setiap kata diwakili oleh 300 dimensi. Dan 20 kata tersebut akan
masuk ke jaringan LSTM secara berurutan dengan memasukkan setiap kata 300
dimensi. Kemudian diberi batch size sehingga input timesteps tergantung pada
jumlah batch size yang diberikan.
Output yang dihasilkan oleh LSTM layer adalah sejumlah neuron LSTM
yang ditentukan. Output diperoleh dari LSTM layer pada timesteps terakhir yang
dihasilkan dari kalkulasi seluruh kata yang menjadi input LSTM. Visualisasi input
pada LSTM layer dapat dilihat pada Gambar 4.8.

Gambar 4.8 Visualisasi input LSTM

4.5.4 Output Layer


Layer ini memiliki koneksi penuh ke semua aktivasi di layer sebelumnya.
Layer ini memiliki 2 neuron didalamnya yang mewakili dari 2 kelas dari kalimat
hate speech yang akan diklasifikasikan. Layer ini menggunakan aktivasi softmax
sehingga jika nilai aktivasi pada masing-masing neuron dijumlahkan bernilai sama
dengan 1.
4.6 Algoritma Pelatihan
Algoritma yang digunakan untuk pelatihan pada sistem ini adalah Adam.
Algoritma Adam bekerja dengan baik diberbagai arsitektur deep learning. Algoritma
ini merupakan kombinasi dari gradient descent dengan momentum dan RMSprop.
Seluruh data pelatihan akan langsung diterima oleh sistem jaringan syaraf tiruan
untuk dihitung nilai errornya dan dilakukan pembaruan bobot dan bias. Proses
algoritma Adam dimulai dengan menghitung rata-rata eksponensial dari gradient dan
eksponensial kuadrat dari gradient. Kemudian akan diperbarui parameternya dengan
menggabungkan informasi tersebut.

Penggunaan algoritma Adam memiliki keuntungan yaitu relatif hanya


membutuhkan memory rendah, dan biasanya memiliki kinerja yang baik dengan
sedikit pengaturan hyperparamater. Dalam penelitian ini nilai learning rate yang
digunakan yaitu dengan nilai 0.001.

4.7 Pengujian
Dalam pengujian akurasi data dibagi menjadi dua yaitu data latih dan data
uji. Masing-masing data terdapat kalimat hate speech dan labelnya. Model yang
telah ditentukan nilai parameternya diuji menggunakan data uji. Sebelum pengujian
model akan dilatih menggunakan semua data latih (80% data) dengan menggunakan
parameter yang telah ditentukan. Setelah proses pelatihan dilakukan, model diuji
menggunakan semua data uji (20% data) yang telah dipisahkan sejak awal dan
belum pernah digunakan sebelumnya. Akurasi akhir data uji ini yang menjadi nilai
akurasi model tersebut.
Jumlah total data yang digunakan adalah 2000 data hate speech. Kemudian
untuk data latih diambil sebanyak 1600 data dan data uji diambil sebanyak 400 data.
Kemudian akan diklasifikasikan menggunakan metode LSTM. Pengujian meliputi
pencarian nilai parameter yang dapat memberikan nilai akurasi tinggi terhadap data.
Pencarian nilai parameter akan menguji arsitektur word2vec yaitu CBOW dan
skipgram sebagai word embedding pada model LSTM.

Tabel 4.7 Nilai parameter yang diujikan


Epoch Fungsi Aktivasi
25 Tanh
30 Sigmoid
35 Relu

4.8 Perancangan Naïve Bayes


Metode pembanding yang digunakan dalam penelitian ini adalah metode
Naïve Bayes. Perancangan metode ini memanfaatkan library scikit learn dari python
dan ekstraksi fitur yang digunakan adalah TF (Term Frequency). Data yang telah
diberi label akan dikelompokkan berdasarkan label kelasnya yaitu positif hate speech,
dan netral. Kemudian data akan dibagi seperti pada pengujian metode LSTM yaitu data
latih sebanyak 1600 data dan data uji sebanyak 400 data. Proses pelatihan Naïve Bayes
menggunakan library scikit learn pada bahasa pemrograman python.
BAB V
IMPLEMENTASI SISTEM
IMPLEMENTASI SISTEM
5.1 Deskripsi Implementasi
Sistem yang dibangun dalam penelitian ini diimplementasikan berdasarkan
rancangan sistem pada bab sebelumnya. Sistem yang dibangun diimplementasikan
menggunakan Bahasa pemrograman python 3.6. Bahasa pemrograman
menggunakan python karena python memiliki library yang luas dan bisa dipakai
untuk segala keperluan. Perangkat keras dan perangkat lunak yang digunakan dalam
implementasi sistem adalah :

1. Perangkat keras
a. Processor Intel® Core i5-8250U CPU @1.6GHz
b. Hard Disk Drive 1000 GB
c. RAM 4 GB
d. GPU NVIDIA GeForce MX130

2. Perangkat Lunak
a. Sistem operasi Windows 10 Pro 64-bit
b. Python 3.6
c. Library Keras
d. Library Tensorflow
e. Library NLTK
f. Library Numpy
g. Library Pandas
h. Library Sastrawi
i. Library gensim
j. Library scikit-learn
k. Library twitteR
l. Library ROAuth
m. Library RStudio

5.2 Implementasi Pengumpulan Data


Pada tahap ini merupakan implementasi pengumpulan data. Implementasi
pengumpulan data dilakukan dengan teknik crawling.

5.3 Implementasi Crawling


Proses crawling dilakukan untuk mengambil data di media social twitter. Proses
ini dilakukan dengan menggunakan aplikasi RStudio. RStudio dapat mengambil data
dari media sosial twitter dengan cara memasukkan kata kunci yang diinginkan pada
aplikasinya. Langkah Pertama yang dilakukan adalah memanggil library twitteR dan
library ROAuth, kemudian memasukkan activation keys dan secret keys akun twitter
yang digunakan lalu dilajutkan pengambilan data dengan cara memasukkan kata kunci.
Kata kunci yang digunakan pada penelitian ini adalah #2019GantiPresiden. Kemudian
hasil crawling datanya disimpan dalam format file csv. Implementasi crawling
pengambilan data diperlihatkan pada gambar 5.1.
1 > library(twitteR)
2 > library(ROAuth)
3 >
setup_twitter_oauth('j8UesNlEqAwgV54HsEMfaILAe','2a6CBdGQmZVd60U
o8l8GwFy5g8uUlVzufEbhPIdvmNwskoVX0L','1019546345575612416-
YnAj8GwYMfGSkJG9rHMXa3utD1xtTR','qYNkxhDPAFgoNcVO7gA75ziGLL2bBFD
anbuO2pFjvvVrt')
[1] “using direct authentication”
4 > 1
[1] 1
5 > tweets<-searchTwitter(“#2019GantiPresiden”,n=2000)
6 > tweets<-searchTwitter(“#2019GantiPresiden”,n=2000)
7 > hatespeech.df<-twListToDF(tweets)
8 > view(hatespeeech.df)
9 > write.csv(hatespeech.df,”E:/pra_tesis/laporan/hatespeech.csv”)
Gambar 5.1 Crawling mengambil data di Rstudio

Baris 1 menjelaskan penggunaan Library twitteR. Baris 2 menjelaskan


penggunaan Library ROAuth. Baris 3 menjelaskan langkah untuk memasukkan kode
api key, kode api key secret, token key, token key secret pada akun twitter yang
digunakan. Baris 4 menjelaskan langkah memasukkan kata kunci dan jumlah data yang
ingin dihasilkan pada twitter. Langkah 5 menjelaskan perintah untuk melihat isi
variabel tweet dalam bentuk data frame. Langkah berikutnya yaitu proses menyimpan
hasil crawling dalam bentuk format csv. Baris 6 menjelaskan langkah untuk
menampilkan hasil data yang diambil di twitter. Baris 7 menjelaskan langkah
menyimpan data yang diambil dalam format .csv

5.4 Implementasi Preprocessing


Tujuan dari Preprocessing adalah mendapatkan data hate speech agar proses
perhitungan akurasi menjadi lebih akurat. Tahap tahap dalam presprocessing adalah
casefolding, normalisasi fitur, stopword removal dan konversi slangwords. Proses
preprocessing ditunjukkan pada gambar 5.3.
1 file = pd.read_csv
2 ('E:/pra_tesis/Koding_LSTM/2019gantipresiden1.csv')

3 def konversi_slangword(hatespeech):
4 kamus_slangword =
5 eval(open("E:/pra_tesis/Koding_LSTM/slangwordsku.txt").read())
6 pattern = re.compile(r'\b( ' + '|'.join
7 (kamus_slangword.keys())+r')\b')
8 content = [ ]
9 for kata in hatespeech:
10 filteredSlang = pattern.sub(lambda x:
11 kamus_slangword[x.group()],kata)
12 content.append(filteredSlang.lower())
13 hatespeech = content
14 return hatespeech

15 def casefolding (text):


16 text = text.lower()
17 return text

18 def normalisasi (textt):


19 textt = re.sub('[/!\@$,?:;"-._]','', textt)
20 return textt

21 def stopword (teks):


22 factory = StopWordRemoverFactory()
23 stoplist = factory.get_stop_words()
24 stopword = factory.create_stop_word_remover()
25 teks1= stopword.remove(teks)
26 return teks1

27 text = [file]
28 for text1 in text:
29 label = text1['kategori']
30 text1 = text1['text']
31 text1 = text1.apply(casefolding)
32 text1 = text1.apply(normalisasi)
33 text1 = text1.apply(stopword)
34 text1 = text1.apply("".join)
35 text1 = text1.apply(konversi_slangword)
36 text1 = text1.apply("".join)
37 print(text1)

38 hatespeech_data = {'text':text1, 'kategori': label}


39 df = pd.DataFrame (hatespeech _data, columns = ['text',
40 'kategori'])
41 print(df.info())
df.to_csv('data_hatespeech1_bersih.csv', sep=',', encoding='utf-8')
Gambar 5.3 Koding Preprocessing
5.4.1 Casefolding
Proses casefolding merupakan proses merubah huruf besar menjadi huruf
kecil. Pada gambar 5.3 baris 15 sampai baris 17 menunjukkan implementasi dari
Casefolding.

5.4.2 Normalisasi Fitur


Proses normalisasi fitur merupakan proses menghilangkan tanda baca (titik (.),
tanda seru (!), koma (,), tanda tanya (?), dan sebagainya). Pada gambar 5.3 baris 18
sampai baris 20 menunjukkan implementasi dari normalisasi fitur.

5.4.3 Stopword Removal


Proses stopword removal merupakan proses menghilangkan kata-kata yang
tidak memiliki arti yang berkesinambungan dalam sebuah kalimat (dan, yang, ke, dari,
dan sebagainya). Pada gambar 5.3 baris 21 sampai baris 26 menunjukkan
implementasi dari normalisasi fitur.

5.4.4 Konversi Slangwords


Proses konversi slangwords merupakan proses merubah kata-kata yang tidak
baku menjadi kata yang baku (contoh: kata aq menjadi kata aku, kata gak menjadi
kata tidak, dan sebagainya). Pada gambar 5.3 baris 3 sampai baris 14 menunjukkan
implementasi dari normalisasi fitur.

5.4.5 Konversi Kalimat


Implementasi konversi kalimat kedalam bentuk numerik dimulai dengan
membuat kamus kata untuk memberikan id pada setiap kata yang terdapat didalam data
hatespeech. Pembuatan kamus memanfaatkan library keras. Langkah pertama
menginisialisasi tokenizer dengan parameter num_words=NUM_WORDS yaitu
jumlah kamus kata dibatasi berdasarkan kata yang memiliki frekuensi kemunculan
teratas sebanyak NUM_WORDS. Kemudian fit_on_texts secara otomatis melakukan
pencarian id kata dari data hatespeech yang telah melalui proses preprocessing. Kamus
kata akan disimpan dalam variable word_index yang berisi id kata untuk setiap kata
dalam data hatespeech yang diurutkan berdasarkan jumlah kemunculan kata. Gambar
5.4 baris 1 sampai dengan baris 3 menjelaskan proses pembuatan kamus kata.

1 tokenizer = Tokenizer(num_words=NUM_WORDS)
2 tokenizer.fit_on_texts(texts)
3 word_index = tokenizer.word_index
4 sequences_train = tokenizer.texts_to_sequences(train_data.text)
5 sequences_test = tokenizer.texts_to_sequences(test_data.text)
6 X_train = pad_sequences(sequences_train)
7 X_test = pad_sequences(sequences_test,maxlen=X_train.shape[1])
8 y_train = to_categorical(np.asarray(labels[train_data.index]))
9 y_test = to_categorical(np.asarray(labels[test_data.index]))

Gambar 5.4 Koding Konversi Kalimat

Tahap selanjutnya adalah mengubah kalimat hatespeech menjadi susunan


angka berdasarkan kamus kata yang sudah dibuat. Gambar 5.4 baris 4 dan 5 dijelaskan
bahwa texts_to_sequences digunakan untuk mengkonversi teks kalimat menjadi
susunan bilangan bulat berdasarkan kamus kata dalam word_index. Setelah berhasil
dikonversi akan dilakukan padding yaitu untuk menyamakan panjang kalimat input.
Pada Gambar 5.4 baris 7 menunjukkan pad_sequences digunakan untuk menyamakan
panjang kalimat sesuai dengan jumlah yang terdapat pada parameter maxlen. Demikian
juga label dikonversi ke format one-hot vector yang dapat dipahami model LSTM.
Gambar 5.4 baris 8 dan 9 dijelaskan to_categorical akan mengubah tiga label menjadi
one-hot vector.
5.5 Implementasi Word2vec
5.5.1 Training Wikipedia indonesia
Word2vec merupakan dua lapisan jaringan syaraf tiruan yang mempelajari
pemetaan setiap kata kedalam dimensi vektor. Inputnya adalah korpus kata dan
outputnya adalah satu set vektor. Korpus diambil dari data Wikipedia Indonesia yang
diubah menjadi format file txt. Kemudian file tersebut akan di training menggunakan
word2vec dengan cara memanfaatkan library gensim
(https://pypi.python.org/pypi/gensim). Output yang dihasilkan adalah model
word2vec. Gambar 5.5 baris 1 fungsi def model(fileinput, output) menunjukkan
pembuatan model word2vec yaitu sg=1. Parameter lain yaitu dimensi vektor ukuran
300, windows size 10, dan min_count 5. Baris 13 menjelaskan bahwa file input model
diambil dari direktori ‘E:/pra_tesis/Koding_LSTM/idwiki.txt’. Baris 14
menjelaskan bahwa file output akan disimpan pada direktori
‘E:/pra_tesis/Koding_LSTM/wiki.id.text.model.model200skipgram.txt’.
Baris 15 menjelaskan pemanggilan fungsi model (fileinput, fileoutput) untuk
menghasilkan model word2vec.
1 def model (fileinput, output):
2 model = Word2Vec(LineSentence(fileinput)), size=200,
3 window=10, min_count=1, sg=1,
4 workers=multiprocessing.cpu_count())
5 model.init_sims(replace=True)
6 model.wv.save_word2vec_format(output)
7 if_name_== '_main_':
8 program = os.path.basename(sys.argv[0])
9 logger = logging.getLogger (program)
10 logging.basicConfig(format='%(asctime)s: %(levelname)s:
%(message)s')
11 logging.root.setLevel (level=logging.INFO)
12 logging.info("running %s" % ' '.join(sys.argv))

13 fileinput ='E:/pra_tesis/Koding_LSTM/idwiki.txt'
14 fileoutput ='E:/pra_tesis/Koding_LSTM/wiki.id.text.model.
model200skipgram.txt'
15 model(fileinput, fileoutput)
Gambar 5.5 Koding Pembuatan word2vec

5.5.2 Konversi Vektor


Proses konversi kamus kata kedalam bentuk vektor yang didapat dari model
word2vec dapat dilihat pada Gambar 5.6. Pada baris 1 sampai baris 7 menjelaskan
proses dari konversi vektor. Baris 11 menjelaskan masukan dari input dan output 1
serta output 2. Baris 16 menjelaskan proses penyimpanan data pada output 1. Baris
17 sampai 19 menjelaskan hasil dari output 2 dan format hasil penyimpananya.
1 if __name__ == '__main__':
2 program = os.path.basename(sys.argv[0])
3 logger = logging.getLogger(program)
4 logging.basicConfig(format='%(asctime)s: %(levelname)
5 s: %(message)s')
6 logging.root.setLevel(level=logging.INFO)
7 logger.info("running %s" % ' '.join(sys.argv))

8 if len(sys.argv) < 4:
9 print("Useing: python train_word2vec_model.py input_text "
10 "output_gensim_model output_word_vector")
11 inp, outp1 , outp2 = sys.argv[1:4]
12 model = Word2Vec(LineSentence(inp), size=300, window=10,
13 min_count=1, sg =1,
14 workers=multiprocessing.cpu_count())
15 model.init_sims(replace=True)
16 model.save(outp1)
17 if outp2:
18 model.wv.save_word2vec_format(outp1 +
19 'id.wiki.text.model.model200skipgram.txt')
Gambar 5.6 Koding Konversi vektor

5.6 Implementasi Long Short-Term Memory


Kode program pada sistem ini dibuat menggunakan Library Keras dan Library
tensorflow, sebuah library berbasis bahasa pemrograman python yang memiliki
kemampuan pada proses komputasi secara efisien. Proses komputasi ini efisien karena
berjalan secara lancar untuk proses komputasi GPU. Arsitektur LSTM dapat dilihat
pada Gambar 5.7.
1 model = Sequential()
2 model.add(Embedding(input_dim= len(word_index)+1,
output_dim= EMBEDDING_DIM, input_length= sequence_length,
3 weights=[embedding_matrix], trainable=False))
4 model.add(LSTM(lstm_out))
5 model.add(Dropout(0.5))
6 model.add(Dense(2,activation='softmax'))
model.compile(loss = 'binary_crossentropy',
7 optimizer='adam', metrics = ['accuracy'])
history = model.fit(X_train, y_train, batch_size=64,
8 epochs=25, validation_data=(X_test, y_test), shuffle = True)
Gambar 5.7 Kode Program LSTM
5.6.1 Implementasi Input Layer
Input dari model LSTM diperoleh dari hasil crawling pada kalimat
hatespeech. Setiap input harus memiliki ukuran yang sama. Dalam penelitian ini
panjang maksimal kata adalah sebanyak 30 kata. Baris 1 pada gambar 5.7
menjelaskan model yang digunakan pada Long Short-Term Memory. Baris 2 adalah
kode program untuk proses menentukan lapisan input dengan parameter panjang
input sebanyak sequence_lenght. Baris 3 sampai baris 6 menjelaskan proses pada
Long Short-Term Memory.

5.6.2 Implementasi Embedding Layer


Keras menyediakan kode pustaka untuk melakukan embedding dengan
bmenggunakan Keras.layers.Embedding yang dapat dilihat pada Gambar 5.9 baris
1 sampai dengan baris 5. Input dari lapisan Embedding memiliki 5 dimensi.
len(word_index)+1 (memiliki dimensi kamus kata + 1, tambahan 1 untuk Out of
Vocabulary) merupakan dimensi dari vektor one-hot dari kata dalam data input.
embedding_dim mendefinisikan input_shape dari lapisan berikutnya. Ukuran pada
parameter ini menyesuaikan dengan ukuran vektor yang dihasilkan oleh word2vec.
Weights merupakan bobot dari setiap kata yang dihasilkan dari vektor word2vec.
input_length yaitu jumlah kata pada suatu kalimat yang dimasukkan ke jaringan.
trainable=False merupakan bobot setiap kata yang tidak akan diupdate.

1 embedding_layer = Embedding(len(word_index)+1,
2 EMBEDDING_DIM,
3 weights=[embedding_matrix],
4 input_length=MAX_SEQUENCE_LENGTH,
5 trainable=False)
Gambar 5.9 Koding Embedding Layer
5.6.3 Implementasi LSTM Layer
LSTM layer dibangun menggunakan pustaka python Keras dengan
memanfaatkan library Keras.layers.LSTM seperti pada Gambar 5.7 dan Gambar 5.8.

5.6.4 Implementasi Output Layer


Implementasi Output layer juga memanfaatkan library Keras.layers.Dense
seperti pada Gambar 5.7 baris 2. Pada layer ini terdapat parameter yaitu fungsi aktivasi.
Fungsi aktivasi yang digunakan adalah Softmax untuk mengelompokkan sentimen
kedalam dua kelas yaitu hatespeech dan netral.

5.7 Implementasi Naïve Bayes


Metode Naïve Bayes diimplementasikan pada Gambar 5.10. Implementasi
metode naïve bayes memanfaatkan library from sklearn.naive_bayes import
MultinomialNB.
Baris 1 dan 2 menjelaskan proses pembagian data dengan perbandingan rasio
data. Baris 5 sampai 11 menjelaskan perhitungan rata-rata data. Baris 12 sampai 16
merupakan proses dari perhitungan dataset. Baris 17 sampai 20 menjelaskan
perhitungan fungsi probabilitas dari naïve bayes gaussian. Baris 21 sampai 30
menjelaskan proses perhitungan prediksi. Baris 31 sampai 36 menjelaskan proses
mendapatkan prediksi dari naïve bayes. Baris 37 sampai 44 menjelaskan proses
mendapatkan akurasi dari naïve bayes gaussian.

1 def splitDataset(dataset, splitRatio):


2 trainSize = int(len(dataset) * splitRatio)
3 trainSet = []
4 copy = list(dataset)
5 def mean(numbers):
6 return sum(numbers)/float(len(numbers))
7 def stdev(numbers):
8 avg = mean(numbers)
9 variance = sum([pow(x-avg,2) for x in
10 numbers])/float(len(numbers)-1)
11 return math.sqrt(variance)
12 def summarize(dataset):
13 summaries = [(mean(attribute), stdev(attribute)) for
14 attribute in zip(*dataset)]
15 del summaries[-1]
16 return summaries
17 def calculateProbability(x, mean, stdev):
18 exponent = math.exp(-(math.pow(x-
19 mean,2)/(2*math.pow(stdev,2))))
20 return (1/(math.sqrt(2*math.pi)*stdev))*exponent
21 def predict(summaries, inputVector):
22 probabilities = calculateClassProbabilities(summaries,
23 inputVector)
24 bestLabel, bestProb = None, -1
25 for classValue, probability in probabilities.items():
26 if bestLabel is None or probability >
27 bestProb:
28 bestProb = probability
29 bestLabel = classValue
30 return bestLabel
31 def getPredictions(summaries, testSet):
32 predictions = []
33 for i in range(len(testSet)):
34 result = predict(summaries, testSet[i])
35 predictions.append(result)
36 return predictions
37 def getAccuracy(testSet, predictions):
38 correct = 0
39 for x in range(len(testSet)):
40 if testSet[x][-1] == predictions[x]:
41 correct += 1
42 return (correct/float(len(testSet)))*100.0
43 accuracy = getAccuracy(testSet, predictions)
44 print('Accuracy: {0}%'.format(accuracy))
Gambar 5.10 Koding Naïve Bayes
BAB VI
HASIL DAN PEMBAHASAN

Tahap ini adalah tahap pengujian sistem yang digunakan untuk mengetahui
performa sistem yang dibangun. Pengujian hate speech digunakan untuk mengukur
akurasi dari hate speech. Berdasarkan hasil pengujian yang dilakukan maka dapat
diketahui akurasi yang terbaik. Metode LSTM dibandingkan dengan metode Naïve
Bayes dengan memanfaatkan library sklearn pada bahasa pemrograman python.

6.1 Data
Pada penelitian ini data hate speech yang digunakan adalah 2000 data yang
diambil dari media sosial twitter. Data tersebut dibagi menjadi dua sentimen, yaitu
sentimen hate speech dan sentimen netral. Kemudian data tersebut dibagi menjadi
dua, yaitu data training sejumlah 1600 data dan data testing sejumlah 400 data.
Distribusi data hate speech untuk setiap sentimen ditunjukkan pada tabel 6.1.
Tabel 6.1 Distribusi data sentimen
Sentimen Jumlah Data
Hate speech 920
Netral 1080

6.2 Eksperimen pengujian LSTM


Eksperimen dilakukan untuk mencari model terbaik dalam mengenali
sentimen pada hate speech. Pengujian dilakukan untuk mencari parameter yang
menghasilkan akurasi terbaik dari arsitektur LSTM yang dibuat. Parameter beserta
nilai yang diujikan dapat dilihat pada Tabel 6.2. Selain itu juga akan diuji dua
arsitektur word2vec yaitu arsitektur CBOW (Continuous bag-of-word) dan arsitektur
skip-gram.
Tabel 6.2 Parameter yang diuji
Epoch Fungsi Aktivasi
25 Tanh
30 Sigmoid
35 Relu

6.3 Pengujian LSTM


6.3.1 Pengujian Word2vec
Pengujian ini diawali dengan pengujian word2vec yaitu arsitektur skipgram
dan Continuous bag-of-word (CBOW). Pengujian ini menggunakan metode LSTM
dengan parameter lain yang dipilih acak. Arsitektur terbaik dari model word2vec akan
digunakan pada pengujian selanjutnya.

Tabel 6.3 Pengujian Word2vec pada LSTM


Arsitektur Word2vec Waktu (menit) Akurasi (%)
Skipgram 20.13 72.05
CBOW 22.25 66.45

Pada Tabel 6.3 dijelaskan bahwa arsitektur skipgram memiliki akurasi lebih
baik daripada arsitektur CBOW. Hal ini dikarenakan arsitektur skipgram dapat
menghasilkan word embedding yang lebih baik sehingga dapat meningkatkan akurasi.

6.3.2 Pengujian Jumlah Epoch


Pengujian berikutnya adalah epoch yaitu dengan menentukan jumlah epoch
yang akan diuji. Dalam penelitian ini jumlah epoch yang diujikan yaitu 25, 30 dan 35.
Pada Tabel 6.4 dijelaskan bahwa akurasi pada epoch 25 merupakan akurasi terbaik
dengan 85.31%, tetapi saat epoch diubah menjadi 30 hasil akurasi mengalami
penurunan sebesar 84.33%. Sedangkan pada epoch 35 juga mengalami penurunan
dengan akurasi 83.06%.

Tabel 6.4 Pengujian jumlah epoch


Jumlah Epoch Waktu (menit) Akurasi (%)
25 5.45 85.31
30 6.32 84.33
35 8.04 83.06

6.3.3 Pengujian Fungsi Aktivasi


Pengujian berikutnya adalah pengujian fungsi aktivasi. Pada penelitian ini
fungsi aktivasi yang akan diujikan tanh, sigmoid, dan relu. Untuk parameter lain
diambil dari nilai parameter yang menghasikan akurasi terbaik pada pengujian
sebelumnya yaitu epoch 25. Hasil pengujian fungsi aktivasi dapat dilihat pada Tabel
6.5.
Tabel 6.5 Pengujian fungsi aktivasi
Fungsi Aktivasi Waktu (menit) Akurasi (%)
Sigmoid 9.09 84.39
Tanh 11.55 65.65
Relu 14.25 73.33

Dari pengujian yang dilakukan menunjukkan bahwa fungsi aktivasi sigmoid


menghasilkan nilai akurasi terbaik yaitu 84.39%. Dibandingkan dengan fungsi
aktivasi tanh dengan akurasi 73.33% dan fungsi aktivasi relu yang nilai akurasinya
65.65%.
6.3.6 Hasil Pengujian LSTM
Setelah dilakukan pengujian terhadap beberapa parameter yang telah
ditentukan yaitu arsitektur word2vec, jumlah epoch, dan fungsi aktivasi, maka hasil
keseluruhan pengujian dapat dilihat pada Tabel 6.6

Tabel 6.6 Hasil pengujian LSTM


Parameter Nilai Akurasi
Arsitektur Word2vec Skipgram
Epoch 25 84.39%
Fungsi Aktivasi Sigmoid

6.4 Eksperimen dan Hasil Pengujian Naïve Bayes


Pengujian dengan metode naïve bayes menggunakan data yang sama dengan
data yang digunakan pada metode Long Short-Term Memory, yaitu data latih
sejumlah 1600 data dan data uji sejumlah 400 data. Data tersebut juga telah melalui
proses preprocessing yang sama. Hasil pengujian metode naïve bayes dapat dilihat
pada tabel 6.7.

Tabel 6.7 Hasil pengujian naïve bayes


Metode Waktu Akurasi
Naïve Bayes 5.20 detik 55.18 %

6.5 Perbandingan Hasil Sentimen


Perbandingan hasil akurasi dari pengujian klasifikasi menggunakan metode
long short-term memory dan metode naïve bayes diperlihatkan pada Tabel 6.8. Hasil
akurasi klasifikasi menunjukkan metode long short-term memory menghasilkan
akurasi yang lebih baik daripada metode naïve bayes.

Tabel 6.8 Perbandingan hasil akurasi klasifikasi


Metode Waktu Akurasi (%)
LSTM 9.09 menit 84.39 %
Naïve Bayes 8.20 detik 55. 18 %
BAB VII
KESIMPULAN DAN SARAN

7.1 Kesimpulan
Berdasarkan penelitian yang dilakukan, maka dapat diperoleh kesimpulan
sebagai berikut:
1. Metode Long Short-Term Memory memiliki hasil akurasi 84.39% lebih baik
dibandingkan dengan metode naïve bayes yang memiliki hasil akurasi
55.18%.
2. Akurasi terbaik diperoleh dengan nilai masing-masing parameter yaitu jumlah
epoch 25 dan fungsi aktivasi sigmoid dengan nilai akurasi 84.39%.
3. Fitur Word2vec sangat berpengaruh pada Metode LSTM karena Fitur Word2vec
terbukti sangat akurat dalam memproses data dan dapat meningkatkan akurasi
pada Metode LSTM.

7.2 Saran
Dalam penelitian ini masih terdapat beberapa kekurangan yang dapat disempurnakan.
Pada penelitian berikutnya dapat menggunakan beberapa saran berikut ini:
1. Penelitian ini masih menggunakan data dalam jumlah terbatas, penelitian
berikutnya dapat menggunakan data yang lebih besar pada kasus yang berbeda.
2. Penelitian berikutnya dapat menggunakan perhitungan parameter jumlah
neuron dan L2 regularization untuk memproses data.
3. Penelitian berikutnya dapat mengkombinasikan metode Long Short-Term
Memory dengan metode Convulutional Neural Network untuk klasifikasi
sentimen.
DAFTAR PUSTAKA

Bleich, E. 2011, The Rise of Hate Speech and Hate Crime Laws in Liberal
Democracies, Journal of Ethnic and Migration Studies., 37: 6, 917 — 934 Hate
speech Factsheet, European Court of Human Right 2017.

Buntoro, G. 2016, Anailisis Sentimen Hate speech di Twitter Dengan Metode Naive
Bayes Clasiffier dan Support Vector Machine, Jurnal Dinamika Informatika
Volume 5., Nomor 2., September 2016.

Hochreiter, S. & Urgen Schmidhuber, J., 1997, Long Short-Term Memory, Neural
Computation, 9, 8, 1735–1780.

Li, D. & Qian, J., 2016, Text Sentiment Analysis Based on Long Short-Term Memory,
2016 First IEEE International Conference on Computer Communication and the
Internet, 471–475.

Olah, C., 2015, Understanding LSTM Networks, http://colah.github.io/posts/2015-


08-Understanding-LSTMs/, diakses 15 Maret 2018.

Rahmawati, N. 2017, Impikasi Perubahan Undang-Undang Informasi dan Transaksi


Elektronik terhadap Tindak Pidana Ujaran Kebencian (Hate speech), Fakultas
Hukum, Universitas Sumatera Utara, Medan.

Ramadhani, A.M. & Goo, H.S., 2017, Twitter sentiment analysis using deep learning
methods, In, E. Onieva et al., eds. 2017 7th International Annual Engineering
Seminar (InAES), Lecture Notes in Computer Science, IEEE, Cham, pp. 1–4.,
http://link.springer.com/10.1007/978-3-319-19644-2,.

Seurot, F. 2017, Factsheet of Hate speech, European Court of Human Right, Europe.

Silva, L. 2016, Analyzing the Targets of Hate in Online Social Media, University
Federal of Minas Gerais, Brazil.

Network for The Elimination of Racial Discrimination Japan. 2015, The Issue of Hate
Speech : in relation to the Issue No. 10/07/2017 of the List of Issues adopted by
the Human Rights Committee, Japan.
Thomas, D. 2017, Automated Hate Speech Detection and the Problem of Offensive
Language, Department of Sociology, Cornell University, Ithaca, NY, USA.

Varma, V. 2017, Deep Learning for Hate Speech Detection in Tweets, 26th
International World Wide Web Conference, perth, Australia.

Woodward, M. 2012, Hate Speech and Islamic Defenders Front, Center For Strategic
Communication, Arizona State University.
Zhang, Z. 2016, Detecting Hate Speech on Twitter Using a Convolution-GRU Based
Deep Neural Network, Nottingham Trent University, UK.

Anda mungkin juga menyukai