Naïve Bayes untuk Klasifikasi Cyberbullying

Eka Prakarsa Mandyartha, S.T, M.Kom

Sosial Media


0 orang menyukai ini
Suka

Summary

Dengan maraknya media sosial ditambah dengan pandemi Covid-19, cyberbullying telah mencapai titik tertinggi sepanjang masa. Kita dapat memerangi ini dengan membuat model yang secara otomatis menandai tweet yang berpotensi berbahaya serta memecah pola kebencian. Pada kesempatan ini, kita mencoba mempelajari bagaimana melakukan text processing untuk mengidentifikasi jenis-jenis cyberbullying – age, ethnicity, gender, religion, atau not cyberbullying – dari data tweet media sosial tweeter. Dataset yang digunakan diperoleh dari Kaggle. Kita memanfaatkan library-library pada python terutama yang terkait dengan data frame, natural language processing (NLP), text processor, serta tools untuk predictive data analysis. Tahapannya dimulai dari data preparation, preprocessing atau segmentasi data, ekstraksi fitur teks ke dalam angka, dan klasifikasi menggunakan algoritma Naive Bayes. Klasifikasi diawali oleh pelatihan data (training data), kemudian algoritma klasifikasi dievaluasi melalui pengujian data (testing data) menggunakan metriks pengukuran performa yaitu precision, recall, f1-score dan akurasi. 

Description

Pada tanggal 15 April 2020, UNICEF mengeluarkan peringatan sebagai tanggapan atas peningkatan risiko cyberbullying selama pandemi COVID-19 karena penutupan sekolah yang meluas, peningkatan screen time, dan penurunan interaksi sosial tatap muka. Statistik cyberbullying benar-benar mengkhawatirkan: 36,5% siswa sekolah menengah pertama dan menengah atas telah merasakan cyberbullying dan 87% telah mengamati cyberbullying, dengan efek mulai dari penurunan kinerja akademik hingga depresi hingga pikiran untuk bunuh diri. 

Pada kesempatan ini, kita melakukan data analisis terhadap data tweet yang diperoleh dari Kaggle untuk klasifikasi cyberbullying*. Dataset ini berisi lebih dari 47000 tweet yang diberi label sesuai dengan kelas cyberbullying: Age; Ethnicity; Gender; Religion; Other type of cyberbullying; Not cyberbullying. Data telah diseimbangkan untuk menampung ~8000 dari setiap kelas. *https://www.kaggle.com/datasets/andrewmvd/cyberbullying-classification

Tahapan klasifikasi cyberbullying menggunakan algoritma Naive Bayes dengan Python dan Google Colabs secara umum sebagai berikut:

Background pattern

Description automatically generated

Graphical user interface, text, application, email

Description automatically generatedA picture containing graphical user interface

Description automatically generated

Lebih detil, tahapannya sebagai berikut:

Source code ditulis dan dijalankan (compile and run) menggunakan Google Colabs. Taruh dataset (input) dan source code di dalam folder MyDrive > Colab Notebooks > cyberbullying

A picture containing text

Description automatically generated

Install Library python yang akan digunakan

Graphical user interface, text, application

Description automatically generated

Import Library

Text

Description automatically generated

Khusus ketika kita menggunakan google colabs, bila file dataset/input diletakkan pada google drive, maka kita harus melakukan mounting drive dengan perintah drive.mount(‘content/drive’). Kemudian taruh dataset pada path yang diinginkan, misalnya “drive/MyDrive/Colab Notebooks/cyberbullying/input/cyberbullying_tweets.csv”.

Graphical user interface, text, application

Description automatically generated

Load dataset menggunakan library pandas.

Karena tidak terjadi kondisi imbalance data antara jenis cyberbulling yang berbeda, maka kelas "other_cyberbulling" akan dihapus karena dapat membingungkan model dengan kelas cyberbullying lainnya. 

Graphical user interface, text, application

Description automatically generated

Melakukan Dataset Preparing dengan menamakan ulang (rename) atribut dataset ”tweet-text” dengan ”text”, kemudian atribut ”cyberbullying_type” dengan ”sentiment”. Selanjutnya mengkonversi kategori ”sentiment” ke dalam bentuk angka. 

Text

Description automatically generated with medium confidence

Preprocessing atau Segmentasi Data Teks. Pada tahap ini dilakukan Clean emoji from text, Tokenize sentences, Change to lower case, Correct spelling, Remove numbers, Remove punctuation, Remove stopwords, Normalize (Lemmatize or Lemmatization)

Graphical user interface, text, application

Description automatically generated

Text, letter

Description automatically generated

A picture containing text

Description automatically generated

Text, letter

Description automatically generated

Text

Description automatically generated

Graphical user interface, text, application

Description automatically generated

Graphical user interface, text, application

Description automatically generated

Graphical user interface, text, application

Description automatically generated

Hasil dari Preprocessing / Segmentasi data teks:

Graphical user interface, text, application

Description automatically generated

Melakukan drop / menghapus duplikasi tweet

Memeriksa Panjang Tweet

Tweet yang kurang dari 4 kata dan lebih dari 100 kata dihapus karena dapat menjadi outlier.

Graphical user interface, text, application, email

Description automatically generated

Chart, bar chart

Description automatically generated

Graphical user interface, text

Description automatically generated with medium confidence

Text

Description automatically generated

Data Visualization dalam bentuk WordCloud

Text

Description automatically generated

Text

Description automatically generated with medium confidence Text

Description automatically generated Text

Description automatically generated Text

Description automatically generated with medium confidenceA picture containing text

Description automatically generated

Ekstraksi fitur teks: Mengubah teks menjadi angka menggunakan fungsi fit_transform() pada CountVectorizer, kemudian menghitung bobot setiap kata yang umum digunakan untuk mengetahui seberapa sering suatu kata muncul di dalam kalimat/dokumen. Algoritma yang digunakan untuk menghitung bobot tersebut adalah TF-IDF (Term Frequency – Inverse Document Frequency).

Graphical user interface, text, application

Description automatically generated

Hasilnya: dimana (index kalimat/dokumen, indeks kata) bobot.

Table

Description automatically generated

Membagi data training dan testing. Untuk membaginya digunakan fungsi train_test_split() pada library sklearn. Pengaturan pembagian data training dan testing yaitu sebagai berikut: data training 80%, data testing 20%. (test_size = 0.20).

Graphical user interface, text, application

Description automatically generated

SMOTE. Setelah dilakukan pengecekan terhadap training set,terdapat ketidakseimbangan data (imbalance data) dan dapat menyebabkan bias dalam melatih model. Oversampling menggunakan SMOTE akan digunakan untuk menyeimbangkan dataset training.

Graphical user interface, text, application, email

Description automatically generated

Sekarang data training telah seimbang (balance) dan siap untuk dimasukkan ke dalam model Machine Learning.

Model Training: Naïve Bayes. Kita lakukan training menggunakan algoritma Naive Bayes dengan memanfaatkan fungsi MultinomialNB() pada library sklearn.

Graphical user interface, text, application, email

Description automatically generated

Model Evaluation: Classification Report. Untuk mengetahui performa dari algoritma klasifikasi Naive Bayes, kita lakukan prediksi terhadap data testing melalui fungsi predict(). Performa dapat diikur melalui metriks precision, recall, f1-score dan support. Kita bisa memanfaatkan fungsi classification_report() dalam library sklearn untuk menghitung performa tersebut.

Table

Description automatically generated with medium confidence

Model Evaluation: Confusion Matrix

Graphical user interface, application

Description automatically generated

Model Evaluation: Cross Validation. Metode lain untuk melakukan evaluasi model klasifikasi adalah dengan K-Fold Cross Validation. Cross validation bertujuan untuk membagi data training dengan data testing. Kemudian dalam hal ini kita mengukur performanya menggunakan metrics rata-rata Akurasi (scoring=’accuracy’) beserta dengan standar deviasi akurasinya untuk memastikan bahwa akurasi yang dicapai adalah standar dalam setiap Fold-nya (ditunjukkan oleh nilai standar deviasi yang kecil yaitu 2.e^-2). Kita menggunakan k=10 (cv=10) untuk jumlah fold-nya. Untuk mengimplementasikan k-fold cross validation bisa memanfaatkan cross_val_score() pada library sklearn.

Informasi Course Terkait
  Kategori: Data Science / Big Data
  Course: Master Class On Job Training: Data Science Intensive Program Batch 33