• Tidak ada hasil yang ditemukan

Analisis Sentimen Berbasis Aspek Pada Pertandingan Sepak Bola Arab vs Indonesia

N/A
N/A
Daffa Abdulloh

Academic year: 2025

Membagikan "Analisis Sentimen Berbasis Aspek Pada Pertandingan Sepak Bola Arab vs Indonesia"

Copied!
58
0
0

Teks penuh

(1)

LAPORAN PROYEK SAINS DATA

ANALISIS SENTIMEN BERBASIS ASPEK TERHADAP PERTANDINGAN ARAB VS INDONESIA DI KUALIFIKASI

PIALA DUNIA 2026 PUTARAN 3 ZONA ASIA GRUP C

Disusun Untuk Mata Kuliah Proyek Sains Data Semester Ganjil Tahun Ajaran 2024/2025

DISUSUN OLEH:

Irham Ahmad Musyadad* 10121107 Qaisha Fadhil Ahmad 10121114 M. Daffa Abdulloh 10121120 M. Abdul Rohman Sidik 10121122

Taufiqur Rohman 10121123

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

(2)

DAFTAR ISI

DAFTAR ISI...i

DAFTAR GAMBAR...ii

DAFTAR TABEL... iii

BAB I PENDAHULUAN... 1

1.1 Latar Belakang Masalah... 1

1.2 Rumusan Masalah... 2

1.3 Batasan Masalah...2

1.4 Tujuan Penelitan...3

1.5 Manfaat Penelitian...3

1.6 Metodologi Penelitian...3

1.6.1 Metode Pengumpulan Data...4

1.6.2 Metode Tahapan Analisis...4

1.6.3 Implementasi...5

1.6.4 Pengujian... 5

1.6.5 Penarikan Kesimpulan...6

BAB II LANDASAN TEORI...7

2.1 Analisis Sentimen Berbasis Aspek...7

2.2 Youtube...7

2.3 Web Scraping...7

2.4 Pembobotan TF-IDF...8

2.5 Piala Dunia...8

2.6 Kualifikasi Piala Dunia Zona Asia...8

2.7 Text Preprocessing... 9

2.7.1 Case Folding...9

2.7.2 Cleaning... 9

2.7.3 Tokenizing...9

2.7.4 Normalization... 9

2.7.5 Stemming... 10

2.7.6 Convert Negation...10

2.7.7 Stopword Removal...10

2.8 Confusion Matrix...10

(3)

2.9 Random Forest...11

BAB III PEMBAHASAN... 12

3.1 Analisis Proses...12

3.1.1 Analisis Preprocessing Data...12

3.1.2 Pembobotan TF-IDF... 15

3.2 Pemilihan Algoritma...16

3.3 Tahapan Akuisisi Data...16

3.3.1 Sumber Data... 16

3.3.1.1 Deskripsi Sumber Data:...16

3.3.1.2 Alasan Pemilihan Sumber Data:...16

3.3.1.2.1 Relevansi...16

3.3.1.2.2 Volume Data...16

3.3.1.2.3 Variasi Sentimen...16

3.3.2 Proses Pengumpulan Data...16

3.3.2.1 Metode Pengumpulan Data...16

3.3.2.2 Kendala dalam Pengumpulan Data...17

3.3.2.2.1 Kualitas Data...17

3.3.2.2.2 Kebijakan YouTube...17

3.3.3 Deskripsi Dataset...17

3.3.3.1 Ukuran Dataset...17

3.3.3.2 Jumlah Variabel...17

3.3.3.3 Jumlah Entri...17

3.4 Tahapan Pemrosesan Data...18

3.4.1 Pembersihan Data...18

3.4.2 Transformasi Data...18

3.4.2.1 Normalisasi... 18

3.4.2.2 Tokenization...19

3.4.2.3 Stopword Removal...19

3.4.2.4 Stemming...20

3.5 Tahapan Pemilihan Model...20

3.5.1 Pemilihan Model...20

3.5.3 Proses Pelatihan Model...21

(4)

3.5.4 Evaluasi Model...21

3.6 Tahapan Visualisasi Data...24

BAB IV KESIMPULAN DAN SARAN...35

4.1 Kesimpulan...35

4.2 Saran... 35

DAFTAR PUSTAKA...36

LAMPIRAN...38

(5)

DAFTAR GAMBAR

Gambar 1. 1 Metode Penelitian...3 Gambar 3. 1 Indonesia Menyerang

Gambar 3. 2 Indonesia Bertahan Gambar 3. 3 Arab Menyerang Gambar 3. 4 Arab Bertahan

Gambar 3. 5 Kondisi Lapangan Home Gambar 3. 6 Kondisi Lapangan Away

Gambar 3. 7 Visualisasi Indonesia Menyerang Home Gambar 3. 8 Visualisasi Inndonesia Menyerang Away Gambar 3. 9 Viusalisasi Indonesia Bertahan Home Gambar 3. 10 Visualisasi Indonesia Bertahan Away Gambar 3. 11 Visualisasi Arab Saudi Menyerang Home Gambar 3. 12 Visualisasi Arab Saudi Menyerang Away Gambar 3. 13 Visualisasi Arab Saudi Bertahan Home Gambar 3. 14 Visualisasi Arab Saudi Bertahan Away Gambar 3. 15 Visualisasi Kondisi Lapangan Home Gambar 3. 16 Visualisasi Kondisi Lapangan Away

(6)

DAFTAR TABEL

Tabel 2. 1 Confusion Matrix... 10 Tabel 3. 1 Cleaning

Tabel 3. 2 Case Folding Tabel 3. 3 Tokenization Tabel 3. 4 Normalisasi Tabel 3. 5 Convert Negation Tabel 3. 6 Stopword Removal Tabel 3. 7 Stemming

Tabel 3. 8 Perhitungan TF-IDF Tabel 3. 9 Contoh Pembersihan Tabel 3. 10 Contoh Normalisai Tabel 3. 11 Contoh Tokenization Tabel 3. 12 Contoh Stopword Removal Tabel 3. 13 Contoh Stemming

(7)

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Sentimen publik terhadap pertandingan sepak bola sering kali menjadi topik yang menarik untuk dianalisis, terutama dalam perhelatan besar seperti Piala Dunia.

Dalam era digital, platform media sosial seperti Twitter dan YouTube menjadi sumber utama untuk mengamati opini dan sentimen masyarakat. Menurut penelitian oleh B. Liu, analisis sentimen dapat memberikan wawasan berharga mengenai pandangan pendukung terhadap tim nasional, strategi pelatih, dan performa pemain di lapangan [1].

Namun, analisis sentimen terhadap tim nasional di tingkat kualifikasi Piala Dunia masih jarang dilakukan, khususnya untuk zona Asia. Dalam konteks Kualifikasi Piala Dunia 2026, sentimen terhadap tim nasional pada Grup C Zona Asia menjadi topik yang menarik untuk dieksplorasi, mengingat keberagaman latar belakang negara-negara dalam grup tersebut. Data dari FIFA menunjukkan bahwa popularitas sepak bola di Asia terus meningkat, dengan jumlah penonton yang signifikan baik di stadion maupun melalui platform digital [2].

Pertandingan antara Arab Saudi dan Indonesia dalam Kualifikasi Piala Dunia 2026 menjadi fokus utama dalam proyek ini. Arab Saudi, sebagai salah satu kekuatan sepak bola di Asia, memiliki basis penggemar yang besar dan dukungan yang kuat dari masyarakatnya. Di sisi lain, Indonesia, dengan populasi yang besar dan antusiasme tinggi terhadap sepak bola, juga memiliki penggemar yang setia.

Menurut laporan dari Nielsen Sports, Indonesia memiliki salah satu basis penggemar sepak bola terbesar di Asia Tenggara, yang menunjukkan potensi besar untuk analisis sentimen [3].

Berdasarkan penjelasan di atas, rumusan masalah penelitian ini adalah bagaimana melakukan analisis sentimen terhadap masing-masing negara pada Kualifikasi Piala Dunia 2026 Putaran 3 Zona Asia Grup C menggunakan algoritma Random Forest untuk mengidentifikasi dan mengklasifikasikan sentimen publik terhadap tim nasional Arab Saudi dan Indonesia. Pemahaman terhadap opini dan dukungan publik dapat memberikan gambaran tentang dinamika dukungan dan kritik terhadap performa tim-tim nasional tersebut.

(8)

Dengan menggunakan teknik analisis sentimen berbasis aspek dan algoritma Random Forest, proyek ini bertujuan untuk mengeksplorasi bagaimana penggemar dari kedua negara mengekspresikan pendapat mereka mengenai pertandingan ini, baik dari segi strategi, performa pemain, maupun hasil akhir. Hasil dari analisis ini diharapkan dapat memberikan wawasan yang lebih dalam mengenai persepsi publik terhadap sepak bola di kawasan Asia, serta kontribusi terhadap pengembangan strategi tim nasional di masa mendatang.m

1.2 Rumusan Masalah

Berdasarkan penjelasan uraian latar belakang, maka rumusan masalah penelitian ini adalah bagaimana melakukan analisis sentimen terhadap masing- masing negara pada Kualifikasi Piala Dunia 2026 Putaran 3 Zona Asia Grup C menggunakan algoritma Random Forest untuk mengidentifikasi dan mengklasifikasikan sentimen publik terhadap tim nasional Arab Saudi dan Indonesia.

1.3 Batasan Masalah

Berdasarkan penelitian yang dilakukan supaya lebih terarah dan sesuai dengan yang dimaksudkan, batasan masalah pada penelitian ini adalah sebagai berikut:

1. Proses pengambilan data menggunakan bahasa negara masing masing lalu diterjemahkan ke Bahasa Indonesia

2. Kriteria data yang diambil yang berhubungan dengan tim nasional Arab vs Indonesia pada Kualifikasi Piala Dunia 2026 Putaran 3 Zona Asia Grup C.

3. Url video kandang :

a. Pertandingan Penuh : https://www.youtube.com/watch?

v=g6n3F_4vHFs

b. Cuplikan : https://www.youtube.com/watch?

v=ZnLlg2J9kMY 4. Url vidio tandang :

a. Pertandingan penuh : https://www.youtube.com/watch?v=TbPJNb5- sgs

b. Cuplikan : https://www.youtube.com/watch?v=z-

(9)

uB64inVRk

5. Pengambilan terakhir diambil pada tanggal 25 November 2024. 

6. Pelabelan dilakukan secara manual.

7. Pembobotan kata menggunakan TF-IDF.

1.4 Tujuan Penelitan

Tujuan penelitian ini adalah melakukan analisis sentimen pada komentar youtube terhadap pendukung tim nasional pada masing masing negara pada Kualifikasi Piala Dunia 2026 Putaran 3 Zona Asia dengan algoritma Random Forest.

1.5 Manfaat Penelitian

Pada penelitian ini diharapkan dapat mengetahui kecenderungan sentimen pendukung terhadap tim nasional pada masing masing negara pada Kualifikasi Piala Dunia 2026 Putaran 3 Zona Asia.

1.6 Metodologi Penelitian

Metode penelitian ini adalah bagian bagian penting dalam sebuah penelitian yang menjelaskan secara rinci tentang pendekatan, teknik, dan prosedur yang digunakan untuk mengumpulkan, menganalisis, dan menginterpretasikan data.

Bagian ini biasanya mencakup berbagai elemen yang memungkinkan penelitian dilaksanakan secara sistematis dan terukur. Berikut adalah elemen yang terdapat dalam metodologi penelitian:

(10)

Gambar 1. 1 Metode Penelitian 1.6.1 Metode Pengumpulan Data

Metode pengumpulan data yang digunakan dalam penelitian ini adalah sebagai berikut:

1. Studi Literatur

Studi literatur adalah untuk mencari teori – teori yang relevan terhadap penelitian sejenis yang pernah dilakukan sebelumnya yang berkaitan dengan penemuan sebelumnya, karena bertujuan untuk mendapatkan solusi dari permasalahan yang sedang dihadapi.

2. Pengumpulan Dataset

YouTube adalah sumber data yang digunakan dalam analisis sentimen ini, berdasarkan komentar pengguna youtube terhadap performa tim masing- masing negara yang bertanding pada Kualifikasi Piala Dunia 2026 Putaran 3 Zona Asia Grup C.

Setelah mendapatkan data berdasarkan komentar pengguna youtube terhadap performa tim masing-masing negara yang bertanding pada Kualifikasi Piala Dunia 2026 Putaran 3 Zona Asia Grup C langkah selanjutnya, mengambil data komentar denga cara mencrawling data komentar tersebut.

(11)

1.6.2 Metode Tahapan Analisis

Berikut merupakan tahapan analisis pada penelitian ini adalah sebagai berikut:

1. Analisis Text Pre-processing, kalimat dari opini yang terkumpul akan diproses sehingga data yang didapat menjadi lebih terstruktur dan mudah untuk diolah. Tahapan pre-processing yang dilakukan terdiri dari Case Folding, Cleaning, Tokenizing, Normalization, Stemming, Convert Negation, Stopword Removal.

2. Analisis Metode, analisis klasifikasi menggunakan metode Random Forest. Random Forest merupakan salah satu teknik ensemble yang mengkombinasikan sejumlah pohon keputusan, di mana setiap pohon dilatih dengan data latih yang berbeda dan fitur acak. Proses ini membantu meningkatkan akurasi dalam mengklasifikasikan data dengan menghadirkan prediksi yang lebih stabil. Algoritma Random Forest mampu menangani sejumlah besar data dengan berbagai fitur, dan hasil akhir diperoleh melalui pengambilan keputusan di node akhir pohon, yang memungkinkan klasifikasi yang akurat.

1.6.3 Implementasi

Pada tahapan implementasi, pertama-tama melakukan pengambilan data dari sumber yang relevan. Setelah itu, data yang diperoleh diproses melalui beberapa tahapan preprocessing, yang dimulai dengan cleaning untuk menghapus karakter-karakter yang tidak diperlukan, seperti tanda baca atau angka. Kemudian, dilakukan case folding untuk mengubah seluruh teks menjadi huruf kecil, agar analisis kata menjadi konsisten. Proses berikutnya adalah tokenizing, yaitu memecah teks menjadi kata-kata atau token, dilanjutkan dengan normalization untuk menyederhanakan bentuk kata, dan convert negation untuk menangani kata-kata yang mengandung negasi.

Selanjutnya, dilakukan stopword removal untuk menghapus kata-kata yang tidak memiliki makna penting, seperti "dan" atau "yang", serta stemming untuk mengubah kata-kata ke bentuk dasarnya. Setelah data selesai diproses, dilakukan pemisahan data menjadi dua bagian: data pelatihan (training set) dan data pengujian (test set), yang bertujuan untuk melatih model dan menguji

(12)

menggunakan metode TF-IDF (Term Frequency-Inverse Document Frequency) untuk merepresentasikan kata-kata berdasarkan frekuensinya.

Untuk mengatasi ketidakseimbangan data, saya menerapkan teknik SMOTE (Synthetic Minority Over-sampling Technique), yang menghasilkan sampel sintetis untuk kelas minoritas guna meningkatkan keseimbangan data. Setelah itu, saya menggunakan algoritma Random Forest untuk melakukan klasifikasi pada data. Sebagai langkah terakhir, saya melakukan visualisasi hasil analisis, pertama dengan menggambarkan distribusi aspek besar negara yang ada dalam dataset, dan kedua, memvisualisasikan teks menggunakan Wordcloud untuk menampilkan kata-kata yang paling sering muncul dalam data.

1.6.4 Pengujian

Pada tahapan ini akan dilakukan pengujian dan evaluasi performansi dari analisis sentimen berbasis aspek dengan menerapakan metode Random Forest Classifier terhadap pertandingan Arab Saudi vs Indonesia di kualifikasi piala dunia 2026 round 3.

1.6.5 Penarikan Kesimpulan

Pada tahapan ini akan dilakukan penarikan kesimpulan berdasarkan hasil dari tahapan pengujian dalam klasifikasi mengggunakan metode pada analisis sentimen berbasis aspek terhadap pertandingan arab saudi vs indonesia di kualifikasi piala dunia 2026 round 3.

(13)

BAB II

LANDASAN TEORI

2.1 Analisis Sentimen Berbasis Aspek

Analisis Sentimen adalah proses yang digunakan untuk mengidentifikasi atau menganalisis opini seseorang mengenai suatu objek atau produk tertentu, yang dapat dikategorikan sebagai positif, negatif atau netral. Berbeda dengan informasi faktual, opini dan sentimen memiliki sifat subjektif. Oleh karena itu, penting untuk memeriksa sekumpulan opini dari berbagai pihak, karena pandangan tersebut bersifat subjektif dan berasal dari lebih satu individu. Hal ini memerlukan sebuah ringkasan untuk mewakili pendapat yang ada [9].

2.2 Youtube

Youtube merupakan platform media sosial yang menyajikan video dengan durasi tertentu, yang dibuat oleh para pembuat konten dengan berbagai genre.

Tingginya minat masyarakat dalam menggunakan youtube telah membuat platform ini semakin dimanfaatkan oleh berbagai kalangan. Di Indonesia, Youtube menempati posisi sebagai salah satu media sosial terpopuler, dengan jumlah pengguna mencapai 170 juta, atau sekitar 93,8 persen dari total populasi 181,9 juta pengguna internet berusia 16 – 64 tahun, menurut laporan dari

solopos.com. Selain itu, Youtube juga menyediakan fitur umpan balik seperti like, dislike, dan komentar terhadap video yang ditayangkan, memungkinkan penonton untuk berinteraksi dan menyampaikan pendapat mereka mengenai konten

tersebut. Tanggapan dari penonton dapat berupa komentar yang konstruktif dan memotivasi bagi kreator, namun juga bisa muncul komentar negatif yang

mengandung unsur SARA (Suku, Ras, Agama dan Antar golongan) terhadap para pembuat konten [10].

2.3 Web Scraping

Web scraping merupakan metode otomatis untuk mengumpulkan dokumen semi-terstruktur dari internet, terutama dari halaman web yang menggunakan markup seperti HTML. Teknik ini bertujuan untuk mengekstrak informasi spesifik dari halaman tersebut. Dengan menggunakan pendekatan ini, data dapat diperoleh dari situs web tanpa perlu dilakukan secara manual. Web scraping memungkinkan pengambilan data secara terarah, sehingga mempermudah pencarian informasi

(14)

tertentu dengan lebih efisien[4].

2.4 Pembobotan TF-IDF

Dalam penelitian ini, penulis menggunakan metode Term Frequency-Inverse Document Frequency (TF-IDF), yang merupakan teknik dalam pengolahan teks dan pemodelan bahasa alami. Metode ini bertujuan untuk menilai pentingnya suatu kata (term) dalam dokumen, terutama dalam konteks koleksi dokumen yang lebih luas. TF-IDF mempertimbangkan dua faktor utama, yaitu Term Frequency (TF) dan Inverse Document Frequency (IDF). TF mengukur frekuensi kemunculan suatu kata dalam dokumen, yang biasanya dihitung dengan membagi jumlah kemunculan kata dengan total kata dalam dokumen. Dalam beberapa kasus, TF dapat dimodifikasi dengan skema penimbangan yang lebih kompleks. Sementara itu, IDF mengukur pentingnya suatu kata dalam koleksi dokumen, di mana kata yang jarang muncul di seluruh koleksi cenderung memiliki nilai IDF yang lebih tinggi. IDF dihitung dengan membagi total jumlah dokumen dengan jumlah dokumen yang mengandung kata tersebut, dan hasilnya kemudian diambil logaritma untuk memperhalus skala. Data dalam penelitian ini dikumpulkan melalui pencarian dan analisis teks daring, seperti blog, forum, dan media sosial, yang diposting oleh individu yang mengalami depresi. Teks yang terkumpul kemudian dianalisis menggunakan metode TF-IDF untuk mengukur frekuensi kata kunci dalam dokumen [11].

2.5 Piala Dunia

Piala Dunia FIFA adalah turnamen sepak bola internasional yang diadakan setiap empat tahun oleh Federation Internationale de Football Association (FIFA) dan merupakan acara yang paling dinantikan oleh masyarakat di seluruh dunia.

Pertama kali diselenggarakan pada tahun 1930, turnamen ini telah berkembang menjadi acara olahraga terbesar di dunia, menarik perhatian miliaran penggemar.

Keikutsertaan negara-negara dalam turnamen ini tidak hanya mencerminkan kekuatan sepak bola, tetapi juga menjadi simbol kebanggaan nasional [12].

2.6 Kualifikasi Piala Dunia Zona Asia

Sistem Kualifikasi Piala Dunia FIFA terbagi menjadi beberapa zona geografis, salah satunya adalah zona asia yang dikelola oleh Asian Football Confederation (AFC). Dalam putaran ketiga kualifikasi piala dunia 2026, tim nasional dari berbagai negara asia dibagi kedalam berbagai grup untuk bersaing

(15)

mendapatkan tempat di turnamen utama. Tim Nasional Arab Saudi dan Indonesia tergabung dalam Grup C, menjadikan pertandingan ini sebagai sorotan besar di kalangan penggemar sepak bola [13].

2.7 Text Preprocessing

Text Prepocessing adalah mengubah data mentah yang sebelumnya telah dikumpulkan agar dapat diolah lebih lanjut untuk penggunaan model.

Preprocessing melibatkan Folding, Cleaning, Tokenizing, Normalization, Stemming, Convert Negation, Stopword Removal.

2.7.1 Case Folding

Case folding adalah langkah mengubah seluruh huruf dalam dokumen menjadi huruf kecil. Hanya huruf “a” hingga “z” yang akan dipertahankan, sementara karakter non-huruf akan dianggap sebagai pembatas. Proses ini bertujuan untuk menghindari duplikasi data, sehingga kata dengan perbedaan kapitalisasi, tetapi memiliki makna yang sama, tidak akan dianggap sebagai entitas yang berbeda[5].

2.7.2 Cleaning

Cleaning adalah proses menghapus elemen-elemen yang tidak relevan dan mengganggu dalam ulasan, seperti tanda baca, emoji, tautan, serta angka.

Proses ini bertujuan untuk mengurangi gangguan (noise) dan menghindari masalah kualitas data, seperti data yang tidak lengkap, duplikat, outlier, atau data yang tidak valid[6].

2.7.3 Tokenizing

Tokenization adalah proses memecah suatu kalimat dalam dokumen menjadi sejumlah kata. Setiap kata yang dihasilkan dari pemecahan kalimat tersebut akan diolah lebih lanjut[5].

2.7.4 Normalization

Spelling normalization, atau yang sering disebut normalisasi kata, adalah proses yang bertujuan untuk memperbaiki kata-kata dalam teks dokumen yang mungkin salah eja, menggunakan singkatan, atau tidak sesuai dengan aturan bahasa Indonesia. Proses ini bertujuan untuk mengurangi variasi dalam ejaan kata-kata yang memiliki makna serupa, sehingga membantu menyatukan dan merapikan representasi kata-kata tersebut[6].

(16)

2.7.5 Stemming

Stemming adalah proses yang bertujuan untuk mengubah kata-kata dalam data ulasan ke bentuk dasarnya menggunakan library Sastrawi. Proses ini dilakukan dengan menghilangkan imbuhan atau afiks yang terdapat pada kata, seperti me-, ber-, di-, -kan, dan -an[6].

2.7.6 Convert Negation

Convert Negation adalah proses mengubah kalimat yang memiliki makna kontradiktif dari kata tersebut. Dalam salah satu proses Feature Extraction, Convert Negation dilakukan dengan menambahkan imbuhan

“NOT_” di awal kata untuk menunjukkan bahwa kalimat tersebut mengandung negasi[7].

2.7.7 Stopword Removal

Stopword removal adalah proses menghilangkan kata-kata yang tidak relevan atau tidak memberikan pengaruh dalam sebuah teks. Stopword merujuk pada kata-kata yang sering muncul tetapi tidak berkontribusi pada sentimen, sehingga dianggap sebagai gangguan (noise) dan dihapus dalam analisis.

Korpus stopword yang digunakan berasal dari kamus bawaan library NLTK, yang kemudian ditambahkan dengan beberapa stopword tambahan[6].

2.8 Confusion Matrix

Confusion matrix adalah tabel yang berisi informasi tentang jumlah data uji yang benar atau jumlah data tes yang salah[8].

Confusion Matrix Kelas Prediksi

Positif Negatif Netral

Kelas Sebenarnya

Positif TPP PFNeg PFNet

Negatif NegFP TNegNeg NegFNet

Netral NetFP NetFNeg TnetNet

Tabel 2. 1 Confusion Matrix

Tingkat akurasi menjelaskan perbandingan jumlah dari prediksi benar

Accuracy= TPP+TNegNeg+TNetNet

TPP+PFNeg+PFNet+NegFP+TNegNeg+NegFNet+NetFP+NetFNeg+TNetNet Keterangan :

1. TPP (True Possitive Positive), merupakan jumlah dokumen yang

(17)

dikategorikan dengan benar sebagai bagian dari kelas positif.

2. TNegNeg (True Negative Negative), merupakan jumlah dokumen yang dikategorikan dengan benar sebagai bagian dari kelas negatif.

3. TNetNet (True Netral Netral), merupakan jumlah kelas yang dikategorikan dengan benar sebagai bagian dari kelas netral.

4. PFNeg (Positive False Negatif), merupakan jumlah dokumen kelas positif yang salah diklasifikasikan sebagai dokumen kelas negatif.

5. NegFP (Negatif False Positive), merupakan jumlah dokumen negatif yang salah diklasifikasikan sebagai dokumen kelas positif.

6. PFNet (Positive False Netral), merupakan jumlah dokumen positif yang salah diklasifiasikan sebagai dokumen kelas netral.

7. NetFP (Netral False Positive), merupakan jumlah dokumen netral yang salah diklasifikasikan sebagai dokumen kelas positif.

8. NetFNeg (Netral False Negatif), merupakan jumlah dokumen kelas netral yang salah diklasifikasikan sebagai dokumen kelas negatif.

9. NegFNet (Negatif False Netral), merupakan jumlah dokumen kelas negatif yang salah diklasifikasikan sebagai dokumen kelas netral.

2.9 Random Forest

Random Forest adalah algoritma pembelajaran supervised yang terdiri dari sekumpulan pohon keputusan yang dibangun menggunakan metode bagging.

Metode bagging menggabungkan beberapa model pembelajaran untuk meningkatkan performa keseluruhan. Dalam konteks Random Forest, algoritma ini mengklasifikasikan data dengan membangun berbagai pohon keputusan yang dilatih dengan data latih dan fitur acak yang independen. Hasil akhirnya ditentukan melalui proses penentuan node akar yang berakhir pada beberapa node daun, sehingga mampu mengklasifikasikan sejumlah besar data secara akurat[14].

(18)

BAB III PEMBAHASAN

3.1 Analisis Proses

3.1.1 Analisis Preprocessing Data 1. Cleaning

Kalimat Masukan Hasil Cleaning Lagi dan Lagi banyak kesempatan

terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini.

lagi dan lagi banyak kesempatan terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

Tabel 3. 1 Cleaning

2. Case Folding

Kalimat Masukan Hasil Case Folding lagi dan lagi banyak kesempatan

terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

lagi dan lagi banyak kesempatan terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

Tabel 3. 2 Case Folding

(19)

3. Tokenization

Kalimat Masukan Hasil Tokenization lagi dan lagi banyak kesempatan

terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

['lagi', 'dan', 'lagi', 'banyak', 'kesempatan', 'terbuang', 'selalu', 'aja', 'sering', 'salah', 'passing', 'egy', 'struick', 'passing', 'nya', 'perlu', 'di', 'perbaiki', 'padahal', 'ragnar', 'sudah', 'beberapa', 'kali', 'berdiri', 'bebas', 'nampak', 'kali', 'di', 'akhir', 'pertandingan', 'rasa', 'kurang', 'puas', 'terlihat', 'dari', 'ragnar', 'wak', 'haji', 'sangat', 'menyala', 'dalam', 'pertandingan', 'ini']

Tabel 3. 3 Tokenization

4. Normalisasi

Kalimat Masukan Hasil Normalisasi ['lagi', 'dan', 'lagi', 'banyak',

'kesempatan', 'terbuang', 'selalu', 'aja', 'sering', 'salah', 'passing', 'egy', 'struick', 'passing', 'nya', 'perlu', 'di', 'perbaiki', 'padahal', 'ragnar', 'sudah', 'beberapa', 'kali', 'berdiri', 'bebas', 'nampak', 'kali', 'di', 'akhir', 'pertandingan', 'rasa', 'kurang', 'puas', 'terlihat', 'dari', 'ragnar', 'wak', 'haji', 'sangat', 'menyala', 'dalam', 'pertandingan', 'ini']

lagi dan lagi banyak kesempatan terbuang selalu saja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas menampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

Tabel 3. 4 Normalisasi

(20)

Kalimat Masukan Hasil Convert Negation lagi dan lagi banyak kesempatan

terbuang selalu saja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas menampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

lagi dan lagi banyak kesempatan terbuang selalu saja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas menampak kali di akhir pertandingan rasa kurang_puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini Tabel 3. 5 Convert Negation

6. Stopword Removal

Kalimat Masukan Hasil Stopword Removal lagi dan lagi banyak kesempatan

terbuang selalu saja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas menampak kali di akhir pertandingan rasa kurang_puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

kesempatan terbuang salah passing egy struick passing perbaiki ragnar berdiri bebas menampak pertandingan kurang_puas ragnar wak haji menyala pertandingan

Tabel 3. 6 Stopword Removal 7. Stemming

Kalimat Masukan Hasil Stemming kesempatan terbuang salah passing

egy struick passing perbaiki ragnar berdiri bebas menampak pertandingan kurang_puas ragnar wak haji menyala pertandingan

sempat buang salah passing egy struick passing baik ragnar diri bebas tampak tanding kurang puas ragnar wak haji nyala tanding

Tabel 3. 7 Stemming

(21)

3.1.2 Pembobotan TF-IDF

Menggunakan contoh kalimat dengan perhitungan pembobotan Term Frequency- Invers Document.

TFID Fa=T Fa×log

(

D FN a

)

T Fa : banyaknya kemunculan setiap kata pada suatu dokumen a N : jumlah seluruh dokumen

D Fa : jumlah dokumen keseluruhan yang memuat kata a

Diberikan 2 contoh kalimat, perhitungan bobot dengan TF-IDF dapat dilihat pada Tabel 3.8

1. suka lihat marselino bagus mainnya cetak gol.

2. penyerang arab depan gawang pasti gagal cetak gol

R1 R2 TF1 TF2 IDF TFIDF

1

TFIDF 2

suka 1 0 0,14 0 0,30 0,04 0

lihat 1 0 0,14 0 0,30 0,04 0

marselino 1 0 0,14 0 0,30 0,04 0

bagus 1 0 0,14 0 0,30 0,04 0

main 1 0 0,14 0 0,30 0,04 0

penyerang 0 1 0 0,125 0,30 0 0,04

arab 0 1 0 0,125 0,30 0 0,04

depan 0 1 0 0,125 0,30 0 0,04

gawang 0 1 0 0,125 0,30 0 0,04

pasti 0 1 0 0,125 0,30 0 0,04

gagal 0 1 0 0,125 0,30 0 0,04

cetak 1 1 0,14 0,125 0 0 0

gol 1 1 0,14 0,125 0 0 0

Tabel 3. 8 Perhitungan TF-IDF

(22)

3.2 Pemilihan Algoritma

Dalam penelitian ini, algoritma yang digunakan adalah Random Forest.

Random Forest dipilih karena kemampuannya dalam menangani dataset berukuran besar dan memberikan hasil yang stabil. Sebagai metode ensemble, algoritma ini memanfaatkan kombinasi banyak pohon keputusan untuk menghasilkan prediksi yang lebih akurat dan mengurangi resiko overfitting.

3.3 Tahapan Akuisisi Data 3.3.1 Sumber Data

3.3.1.1 Deskripsi Sumber Data:

Sumber data utama untuk proyek ini berasal dari komentar di platform YouTube. Komentar ini mencerminkan opini dan sentimen publik terhadap pertandingan antara Arab Saudi dan Indonesia dalam Kualifikasi Piala Dunia 2026. Data ini diambil dari video yang relevan dengan pertandingan, yang dapat mencakup tayangan penuh dan cuplikan pertandingan.

3.3.1.2 Alasan Pemilihan Sumber Data:

3.3.1.2.1 Relevansi

YouTube adalah platform yang banyak digunakan oleh penggemar sepak bola untuk berbagi pendapat dan reaksi terhadap pertandingan, sehingga komentar di video dapat memberikan wawasan yang berharga tentang sentimen publik.

3.3.1.2.2 Volume Data

YouTube memiliki volume komentar yang besar, memungkinkan analisis yang lebih komprehensif dan representatif terhadap opini masyarakat.

3.3.1.2.3 Variasi Sentimen

Komentar di YouTube mencakup berbagai perspektif, dari dukungan hingga kritik, yang penting untuk analisis sentimen yang mendalam.

3.3.2 Proses Pengumpulan Data

3.3.2.1 Metode Pengumpulan Data

Library Python youtube_comment_downloader: Data dikumpulkan menggunakan library Python youtube_comment_downloader, yang

(23)

dirancang khusus untuk mengunduh komentar dari video YouTube dengan mudah. Library ini memungkinkan pengguna untuk mengunduh komentar dengan hanya beberapa baris kode, sehingga mempermudah proses pengumpulan data.

Contoh penggunaan:

from youtube_comment_downloader import YoutubeCommentDownloader  

downloader = YoutubeCommentDownloader()

comments = downloader.get_comments(video_id='VIDEO_ID')

Dengan menggunakan library ini, pengguna dapat dengan cepat mengumpulkan komentar dari video yang relevan tanpa harus berurusan dengan API atau teknik scraping yang lebih kompleks.

3.3.2.2 Kendala dalam Pengumpulan Data 3.3.2.2.1 Kualitas Data

Data yang diambil mungkin mengandung noise, seperti spam atau komentar yang tidak relevan, yang perlu disaring selama proses preprocessing.

3.3.2.2.2 Kebijakan YouTube

Meskipun library ini memudahkan pengunduhan komentar, pengguna tetap harus mematuhi kebijakan dan ketentuan layanan YouTube terkait pengambilan data.

3.3.3 Deskripsi Dataset 3.3.3.1 Ukuran Dataset

Dataset diharapkan mencakup ribuan entri, dengan target untuk mengumpulkan setidaknya 3.000 komentar dari YouTube untuk di analisis, realialisasinya sebanyak 3.863 komentar didapatkan dari beberapa video youtube.

3.3.3.2 Jumlah Variabel

Variabel yang mungkin ada dalam dataset termasuk: ID komentar, teks komentar, tanggal dan waktu, jumlah like, dan sentimen yang teridentifikasi (positif, negatif, netral).

3.3.3.3 Jumlah Entri

Target untuk mengumpulkan setidaknya 5.000 entri dari komentar YouTube untuk analisis yang lebih mendalam.

(24)

3.4 Tahapan Pemrosesan Data 3.4.1 Pembersihan Data

Dalam tahap ini, data yang hilang (missing values) akan diidentifikasi dan ditangani. Jika terdapat komentar yang tidak memiliki teks atau informasi penting lainnya, komentar tersebut akan dihapus dari dataset untuk menjaga kualitas data.

Selain itu, duplikasi komentar juga akan diperiksa. Komentar yang sama yang muncul lebih dari sekali akan dihapus untuk memastikan bahwa analisis tidak bias dan tidak terpengaruh oleh pengulangan data.

Contoh Pembersihan:

Kalimat Masukan Hasil Cleaning

Lagi dan Lagi banyak kesempatan terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini.

lagi dan lagi banyak kesempatan terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini Tabel 3. 9 Contoh Pembersihan

3.4.2 Transformasi Data 3.4.2.1 Normalisasi

Normalisasi dilakukan untuk memastikan konsistensi dalam penulisan. Ini termasuk mengubah semua huruf menjadi huruf kecil (case folding) dan menghapus karakter yang tidak perlu.

Contoh Normalisasi :

Kalimat Masukan Hasil Case Folding lagi dan lagi banyak kesempatan

terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas

lagi dan lagi banyak kesempatan terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas

(25)

nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

Tabel 3. 10 Contoh Normalisai 3.4.2.2 Tokenization

Proses ini memecah kalimat menjadi kata-kata atau token.

Tokenisasi penting untuk analisis lebih lanjut, seperti penghitungan frekuensi kata.

Contoh Tokenization:

Kalimat Masukan Hasil Tokenization lagi dan lagi banyak kesempatan

terbuang selalu aja sering salah passing egy struick passing nya perlu di perbaiki padahal ragnar sudah beberapa kali berdiri bebas nampak kali di akhir pertandingan rasa kurang puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

['lagi', 'dan', 'lagi', 'banyak', 'kesempatan', 'terbuang', 'selalu', 'aja', 'sering', 'salah', 'passing', 'egy', 'struick', 'passing', 'nya', 'perlu', 'di', 'perbaiki', 'padahal', 'ragnar', 'sudah', 'beberapa', 'kali', 'berdiri', 'bebas', 'nampak', 'kali', 'di', 'akhir', 'pertandingan', 'rasa', 'kurang', 'puas', 'terlihat', 'dari', 'ragnar', 'wak', 'haji', 'sangat', 'menyala', 'dalam', 'pertandingan', 'ini']

Tabel 3. 11 Contoh Tokenization 3.4.2.3 Stopword Removal

Stopword, yaitu kata-kata umum yang tidak memberikan makna signifikan (seperti "dan", "atau", "adalah"), akan dihapus dari dataset.

Contoh Stopword Removal

Kalimat Masukan Hasil Stopword Removal lagi dan lagi banyak kesempatan

terbuang selalu saja sering salah passing egy struick passing nya

kesempatan terbuang salah passing egy struick passing perbaiki ragnar berdiri bebas menampak

(26)

sudah beberapa kali berdiri bebas menampak kali di akhir pertandingan rasa kurang_puas terlihat dari ragnar wak haji sangat menyala dalam pertandingan ini

wak haji menyala pertandingan

Tabel 3. 12 Contoh Stopword Removal 3.4.2.4 Stemming

Proses ini mengubah kata ke bentuk dasarnya. Misalnya, kata

"menyala" menjadi "nyala".

Contoh Stemming:

Kalimat Masukan Hasil Stemming kesempatan terbuang salah passing

egy struick passing perbaiki ragnar berdiri bebas menampak pertandingan kurang_puas ragnar wak haji menyala pertandingan

sempat buang salah passing egy struick passing baik ragnar diri bebas tampak tanding kurang puas ragnar wak haji nyala tanding

Tabel 3. 13 Contoh Stemming 3.5 Tahapan Pemilihan Model

3.5.1 Pemilihan Model

a) Random Forest adalah algoritma ensemble learning yang bekerja dengan cara menggabungkan hasil prediksi dari beberapa pohon keputusan (decision trees) untuk menghasilkan prediksi yang lebih akurat dan stabil.

b) Setiap pohon dalam random forest dilatih pada subset data yang berbeda (dengan teknik bootstrapping, yaitu sampling dengan penggantian) dan pada subset fitur yang berbeda. Ini disebut bagging (Bootstrap Aggregating).

c) Prediksi akhir dari Random Forest dihasilkan dengan cara majority voting untuk masalah klasifikasi (kelas yang paling banyak dipilih oleh pohon-pohon keputusan).

Keunggulan Random Forest:

(27)

1. Dapat menangani data dengan jumlah fitur yang besar dan beragam.

2. Mengurangi risiko overfitting dibandingkan dengan pohon keputusan tunggal.

3. Tidak membutuhkan banyak pemrosesan data atau pencarian hyperparameter yang rumit.

3.5.2 Melatih Model:

a) Model RandomForestClassifier dilatih menggunakan data pelatihan (X_train_vectorized, y_train), yang sudah diproses menjadi representasi numerik (TF-IDF).

b) Parameter n_estimators=100 menunjukkan bahwa model akan menggunakan 100 pohon keputusan.

c) Random_state=11 memastikan hasil yang konsisten setiap kali kode dijalankan dengan mengatur randomisasi.

3.5.3 Proses Pelatihan Model

a. Data dibagi menjadi dua bagian utama: train set dan test set.

b. Data dibagi dengan proporsi 80:20, di mana 80% data digunakan untuk melatih model dan 20% sisanya digunakan untuk pengujian.

c. Ini dilakukan untuk memastikan model dapat diuji dengan data yang tidak terlihat sebelumnya, memberikan gambaran lebih baik tentang kinerjanya di dunia nyata.

3.5.4 Evaluasi Model

Menggunakan akurasi sebagai metrik evaluasi, maka proses evaluasi model akan fokus pada seberapa banyak prediksi model yang benar dibandingkan dengan total jumlah prediksi yang dilakukan.

Indonesia Menyerang

(28)

Gambar 3. 1 Indonesia Menyerang Indonesia Bertahan

Gambar 3. 2 Indonesia Bertahan

Arab Menyerang

(29)

Gambar 3. 3 Arab Menyerang Arab Bertahan

Gambar 3. 4 Arab Bertahan

Kondisi Lapangan Home

(30)

Gambar 3. 5 Kondisi Lapangan Home Kondisi Lapangan Away

Gambar 3. 6 Kondisi Lapangan Away 3.6 Tahapan Visualisasi Data

Dalam penelitian ini, visualisasi data dilakukan untuk menyajikan hasil analisis sentimen dengan cara yang informatif dan mudah dipahami oleh pengguna.

Alat dan pustaka yang digunakan adalah matplotlib. Matplotlib adalah pustaka visualisasi data berbasis python untuk membuat grafik statis seperti histogram, pie chart, dan bar chart.

Pada bagian ini, berbagai visualisasi data yang dihasilkan akan ditampilkan untuk mendukung analisis dan pemahaman mengenai hasil penelitian. Visualisasi ini mencakup distribusi sentimen untuk setiap aspek, dan wordcloud dari setiap aspek.

1. Distribusi Sentimen Tim Indonesia Aspek Menyerang Home

(31)

Gambar 3. 7 Visualisasi Indonesia Menyerang Home

Mayoritas komentar netral (983) menunjukkan penonton tidak terlalu condong ke sentimen positif atau negatif. Sentimen positif (405) mengapresiasi performa menyerang, khususnya kontribusi pemain kunci.

Komentar negatif (39) mengkritik efektivitas serangan dan keputusan taktis.

Secara keseluruhan, performa menyerang tim Indonesia di laga home lebih banyak diapresiasi, meski kritik negatif perlu diperhatikan untuk perbaikan, terutama dalam efektivitas serangan dan penyelesaian akhir..

(32)

Gambar 3. 8 Visualisasi Inndonesia Menyerang Away

Pada laga away, komentar netral (1.346) mendominasi, menunjukkan banyak penonton yang tidak mengungkapkan sentimen emosional yang kuat. Sentimen positif (288) lebih rendah dibandingkan laga home (405), mengindikasikan kurangnya apresiasi terhadap performa menyerang tim.

Sentimen negatif (118) juga lebih tinggi dibanding laga home (39), mencerminkan kritik terhadap kelemahan serangan tim. Secara keseluruhan, performa menyerang tim Indonesia di laga away kurang mendapat apresiasi dan lebih banyak dikritik, yang memerlukan evaluasi untuk meningkatkan efektivitas serangan.

3. Distribusi Sentimen Tim Indonesia Aspek Bertahan Home

(33)

Gambar 3. 9 Viusalisasi Indonesia Bertahan Home

Pada laga home, mayoritas komentar netral (1.103) menunjukkan bahwa penonton cenderung tidak mengungkapkan sentimen emosional yang kuat terkait aspek pertahanan tim. Sentimen positif (318) mengapresiasi kekuatan pertahanan tim, mencerminkan bahwa banyak yang menghargai kedisiplinan dan soliditas lini belakang. Sementara itu, komentar negatif (6) sangat sedikit, yang mengindikasikan bahwa hampir tidak ada kritik signifikan terhadap aspek pertahanan tim. Secara keseluruhan, performa pertahanan tim Indonesia pada laga home mendapat apresiasi positif, dengan sedikit kritik, menunjukkan bahwa tim tampil solid dan efektif dalam menjaga gawang.

(34)

Gambar 3. 10 Visualisasi Indonesia Bertahan Away

Pada laga away, sentimen positif (980) mendominasi, mencerminkan apresiasi yang tinggi terhadap performa tim, khususnya dalam aspek bertahan yang solid dan strategi yang diterapkan. Sentimen netral (739) juga cukup banyak, menunjukkan bahwa sebagian penonton lebih fokus pada analisis tanpa menunjukkan kecenderungan emosional yang jelas.

Sedangkan sentimen negatif (33) relatif sedikit, meskipun ada beberapa kritik terhadap aspek tertentu seperti kesalahan teknis atau kekurangan dalam fase bertahan. Secara keseluruhan, tim Indonesia tampil cukup baik dalam bertahan saat laga away, dengan apresiasi positif yang lebih dominan dan sedikit kritik.

5. Distribusi Sentimen Tim Arab Saudi Aspek Menyerang Home

(35)

Gambar 3. 11 Visualisasi Arab Saudi Menyerang Home

Pada laga home, sentimen negatif (61) mendominasi, menunjukkan bahwa banyak komentar mengkritik performa menyerang tim nasional Arab, terutama terkait dengan kurangnya efektivitas dan kesulitan dalam menciptakan peluang. Sentimen netral (53) menunjukkan bahwa sebagian penonton tetap memberikan pandangan yang lebih objektif tanpa kecenderungan emosional yang jelas. Sementara itu, sentimen positif (8) sangat sedikit, menandakan bahwa apresiasi terhadap serangan tim hampir tidak ada. Secara keseluruhan, performa menyerang tim nasional Arab di laga home mendapat banyak kritik dan sedikit apresiasi.

6. Distribusi Sentimen Tim Arab Saudi Aspek Menyerang Away

(36)

Gambar 3. 12 Visualisasi Arab Saudi Menyerang Away

Pada laga away, sentimen netral (65) mendominasi, menunjukkan bahwa banyak komentar yang tidak menunjukkan kecenderungan emosional yang jelas mengenai performa menyerang timnasional Arab.

Sentimen negatif (34) mencerminkan adanya kritik terhadap aspek menyerang, mungkin terkait dengan kurangnya peluang berbahaya atau kesulitan dalam menembus pertahanan lawan. Sementara itu, sentimen positif (22) cukup sedikit, menandakan bahwa apresiasi terhadap performa menyerang tim juga terbatas. Secara keseluruhan, timnasional Arab pada laga away tidak banyak mendapat pujian, dengan kritik lebih mendominasi dibandingkan apresiasi.

7. Distribusi Sentimen Tim Arab Saudi Aspek Bertahan Home

(37)

Gambar 3. 13 Visualisasi Arab Saudi Bertahan Home

Pada laga home, sentimen netral (99) mendominasi, menunjukkan bahwa banyak komentar yang bersifat deskriptif atau tidak menunjukkan kecenderungan emosional yang kuat terhadap aspek pertahanan timnasional Arab. Sentimen negatif (18) mencerminkan adanya kritik terhadap aspek bertahan tim, mungkin terkait dengan kebocoran peluang atau kesalahan dalam organisasi pertahanan. Sementara itu, sentimen positif (5) sangat sedikit, mengindikasikan bahwa apresiasi terhadap pertahanan tim cukup terbatas. Secara keseluruhan, performa bertahan timnasional Arab di laga home lebih banyak mendapat perhatian netral dan kritik dibandingkan pujian.

8. Distribusi Sentimen Tim Arab Saudi Aspek Bertahan Away

(38)

Gambar 3. 14 Visualisasi Arab Saudi Bertahan Away

Pada laga away, sentimen netral (84) mendominasi, menunjukkan bahwa sebagian besar komentar tidak mengungkapkan sentimen emosional yang jelas terkait performa bertahan timnasional Arab. Sentimen negatif (29) mengindikasikan adanya kritik terhadap pertahanan tim, mungkin terkait dengan kesalahan atau kelemahan dalam menghadapi serangan lawan. Sementara itu, sentimen positif (8) sangat sedikit, menandakan bahwa apresiasi terhadap pertahanan tim juga terbatas. Secara keseluruhan, timnasional Arab pada laga away mendapat lebih banyak perhatian netral dan kritik daripada pujian dalam hal bertahan.

9. Distribusi Sentimen Kondisi Lapangan Home

(39)

Gambar 3. 15 Visualisasi Kondisi Lapangan Home

Mayoritas komentar terkait Kondisi Lapangan Home bersifat netral (1.441), menunjukkan minimnya perhatian khusus terhadap aspek ini.

Komentar positif (78) mengindikasikan apresiasi terhadap kualitas lapangan, sementara komentar negatif (30) mengarah pada kritik tertentu.

Secara keseluruhan, kondisi lapangan home lebih banyak diterima tanpa protes signifikan.

(40)

Gambar 3. 16 Visualisasi Kondisi Lapangan Away

Mayoritas komentar terkait Kondisi Lapangan Away bersifat netral (1.806), menunjukkan bahwa aspek ini tidak menjadi sorotan utama.

Komentar negatif (63) mengindikasikan adanya keluhan terhadap kondisi lapangan, sementara komentar positif (4) sangat minim. Secara keseluruhan, kondisi lapangan away cenderung lebih dikritik dibanding diapresiasi.

(41)

BAB IV

KESIMPULAN DAN SARAN

4.1 Kesimpulan

Berdasarkan hasil penelitian yang dilakukan, dapat disimpulkan bahwa algoritma Random Forest berhasil menunjukkan performa yang baik dalam mengklasifikasikan tiga aspek utama, yaitu Aspek Menyerang, Aspek Bertahan, dan Aspek Kondisi Lapangan pada total 1.287 data.

Untuk tim Indonesia, algoritma ini mencapai tingkat akurasi yang memadai dengan 76% pada Aspek Menyerang dan 82% pada Aspek Bertahan, menunjukkan kemampuan yang kuat dalam mengenali pola dan karakteristik yang relevan untuk kedua aspek tersebut.

Untuk tim Arab Saudi, meskipun akurasi sedikit lebih rendah, algoritma ini tetap menunjukkan performa yang baik dengan 72% pada Aspek Menyerang dan 69% pada Aspek Bertahan, yang mengindikasikan bahwa model mampu mengenali pola dalam aspek-aspek ini meskipun tantangannya lebih besar.

Untuk Aspek Kondisi Lapangan, model menunjukkan performa yang sangat baik dengan akurasi 95% pada laga home dan 91% pada laga away, menunjukkan kemampuan algoritma untuk dengan tepat mengklasifikasikan kondisi lapangan berdasarkan data yang tersedia.

Secara keseluruhan, algoritma Random Forest menunjukkan kinerja yang konsisten dan efektif dalam menganalisis aspek-aspek permainan sepak bola baik untuk tim Indonesia maupun Arab Saudi, dengan akurasi yang sangat baik dalam mengklasifikasikan Aspek Kondisi Lapangan dan akurasi yang dapat diandalkan pada aspek lainnya.

4.2 Saran

1. Menggunakan algoritma alternatif untuk membandingkan hasil dan menentukan metode yang paling efektif untuk klasifikasi.

2. Menggunakan dataset dengan jumlah yang lebih besar untuk meningkatkan tingkat akurasi.

(42)

DAFTAR PUSTAKA

[1] B. Liu, "Sentiment Analysis and Opinion Mining," Synthesis Lectures on Human-Centered Informatics, vol. 5, no. 1, pp. 1-167, 2012.

[2] FIFA, "FIFA Women's Football Strategy 2020-2026," 2021. [Online].

Available: https://www.fifa.com. [Accessed: Oct. 2023].

[3] Nielsen Sports, "The Future of Football in Southeast Asia," 2020. [Online].

Available: https://www.nielsen.com. [Accessed: Oct. 2023].

[4] M. F. Y. Herjanto and C. Carudin, “Analisis Sentimen Ulasan Pengguna Aplikasi Sirekap Pada Play Store Menggunakan Algoritma Random Forest Classifer,” J. Inform. dan Tek. Elektro Terap., vol. 12, no. 2, pp. 1204–1210, 2024, doi: 10.23960/jitet.v12i2.4192.

[5] M. R. Fajriansyah and Siswanto, “Analisis Sentimen Pengguna Twitter Terhadap Partai Politik Pendukung Calon Gubernur Di Jakarta Menggunakan Algoritma C4 . 5 Decision Tree Learning,” Skanika, vol. 1, no. 2, pp. 697–703, 2018, [Online]. Available:

https://jom.fti.budiluhur.ac.id/index.php/SKANIKA/article/view/278

[6] Cindy Caterine Yolanda, Syafriandi Syafriandi, Yenni Kurniawati, and Dina Fitria, “Sentiment Analysis of DANA Application Reviews on Google Play Store Using Naïve Bayes Classifier Algorithm Based on Information Gain,”

UNP J. Stat. Data Sci., vol. 2, no. 1, pp. 48–55, 2024, doi:

10.24036/ujsds/vol2-iss1/147.

[7] T. B. Rohman, D. Dwi Purwanto, and J. Santoso, “Sentiment Analysis Terhadap Review Rumah Makan di Surabaya Memanfaatkan Algoritma Random Forest,” Fak. Sist. Inf., vol. 60284, 2018.

[8] R. L. Nurdiansyah and K. E. Dewi, “Pengaruh Information Gain Dan Normalisasi Kata Pada Analisis Sentimen Berbasis Aspek,” KOMPUTA J.

Ilm. Komput. dan Inform., vol. 12, no. 2, 2023.

[9] W. Parasati, F. A. Bachtiar, and N. Y. Setiawan, "Analisis Sentimen Berbasis Aspek pada Ulasan Pelanggan Restoran Bakso President Malang dengan Metode Naïve Bayes Classifier," J. Teknol. Inf. dan Ilmu Komputer, vol.

2020, pp. 1-10, 2020. Available:

http://j-ptiik.ub.ac.id/index.php/j-ptiik/article/view/7134.

(43)

[10] H. A. R. Harpizon, R. Kurniawan, and others, "Analisis Sentimen Komentar Di YouTube Tentang Ceramah Ustadz Abdul Somad Menggunakan Algoritma Naïve Bayes," Repository UIN Suska, 2022. Available:

https://repository.uin-suska.ac.id/59746/.

[11] L. Annisa and A. D. Kalifia, "Analisis Teknik TF-IDF Dalam Identifikasi Faktor-Faktor Penyebab Depresi Pada Individu," Gudang Jurnal Multidisiplin Ilmu, vol. 2024, pp. 1-12, 2024. Available:

https://gudangjurnal.com/index.php/gjmi/article/view/249.

[12] M. A. Maulana, "Politik, Olahraga, dan Islam Studi Kasus Pembatalan RI Menjadi Tuan Rumah Piala Dunia U-20 2023," Islamic Education, vol. 2023,

pp. 1-10, 2023. Available:

http://maryamsejahtera.com/index.php/Education/article/view/192.

[13] R. A. Rakhman, "Pengaruh Iklan Squeeze Frame pada Pertandingan Kualifikasi Piala Dunia Timnas Indonesia Terhadap Respon Afektif Penonton," Jurnal Komunikasi, Sosial dan Ilmu Politik, vol. 2025, pp. 1-15,

2025. Available:

https://jurnal.researchideas.org/index.php/retorika/article/view/197.

[14] A. A. Firdaus, A. I. Hadiana, and others, "Klasifikasi Sentimen pada Aplikasi Shopee Menggunakan Fitur Bag of Word dan Algoritma Random Forest,"

Research: Journal of..., vol. 2024, pp. 1-12, 2024. Available:

https://www.jurnal.ranahresearch.com/index.php/R2J/article/view/994.

(44)

LAMPIRAN

1. Meng Import Dataset import pandas as pd

pd.options.mode.chained_assignment = None  # Nonaktifkan warning  

gabungan_sentimen = pd.read_csv('gabungan_sentimen.csv') gabungan_sentimen =

gabungan_sentimen.drop(columns=['stopwords_removal','is_menyerang','is_kondi si_lapangan','is_bertahan'])

 

gabungan_sentimen  

2. Preprocessing Teks import re

from nltk.tokenize import word_tokenize from nltk.corpus import stopwords

from Sastrawi.Stemmer.StemmerFactory import StemmerFactory  

# URL raw GitHub

url = "https://raw.githubusercontent.com/panggi/pujangga/master/resource/

formalization/formalizationDict.txt"

 

# Membaca file dari URL

df_slang_word = pd.read_csv(url, sep="\t", header=None, names=["Informal",

"Formal"])  

# Konversi DataFrame ke dictionary untuk lookup

slang_dict = dict(zip(df_slang_word["Informal"], df_slang_word["Formal"]))  

# Mengubah teks menjadi lowercase def case_folding(text):

    text = text.lower()     return text

 

# membersihkan teks def cleaning(text):

    # Ganti koma dengan koma yang diikuti spasi     text = re.sub(r',', ', ', text)

    # Ganti titik dengan titik yang diikuti spasi     text = re.sub(r'\.', '. ', text)

    # Hapus angka

    text = re.sub(r'\d+', '', text)

    # Hapus tanda baca dan simbol (kecuali huruf dan spasi)     text = re.sub(r'[^\w\s]', '', text)

    # Hapus karakter tambahan (opsional, jika ada spasi berlebihan)

(45)

    text = re.sub(r'\s+', ' ', text).strip()     return text

 

# mentokenisasi teks def tokenizing(text):

    # Tokenisasi teks

    tokens = word_tokenize(text)     return tokens

 

# mengganti slang words def slang_words(tokens):

    return [slang_dict.get(token, token) for token in tokens]

 

# mengubah kata menjadi kata dasar def stemming(tokens):

    # Membuat stemmer Sastrawi     factory = StemmerFactory()

    stemmer = factory.create_stemmer()

    # Stemming setiap token menggunakan Sastrawi     stems = [stemmer.stem(token) for token in tokens]

    return stems  

# menggabungkan kata negasi dengan kata selanjutnya def convert_negation(tokens):

    # Mengubah kata negasi menjadi bentuk aslinya

    negation_words = ['tidak', 'bukan', 'tak', 'jangan', 'belum', 'tiada', 'takut', 'kurang']

    for i in range(len(tokens)):

        if tokens[i] in negation_words and i < len(tokens) - 1:

      tokens[i + 1] = f"{tokens[i]}_{tokens[i + 1]}"

    return tokens  

# menghapus stopwords

def stopwords_removal(tokens):

    # Menghapus stopwords

    stop_words = set(stopwords.words('indonesian'))  

    # Menambahkan stopwords secara manual

    additional_stopwords = ["dong", "nih", "sih", "aja", "deh" ,"hihi","nya"]

    stop_words.update(additional_stopwords)  

    filtered_tokens = [token for token in tokens if token not in stop_words]

    return filtered_tokens  

3. Penerapan Preprocessing ke Dataset gabungan_sentimen['case_folding'] =

(46)

 

gabungan_sentimen['cleaning'] =

gabungan_sentimen['case_folding'].apply(cleaning)  

gabungan_sentimen['tokenizing'] =

gabungan_sentimen['cleaning'].apply(tokenizing)  

gabungan_sentimen['slang_words'] =

gabungan_sentimen['tokenizing'].apply(slang_words)  

gabungan_sentimen['stemming'] =

gabungan_sentimen['slang_words'].apply(stemming)  

gabungan_sentimen['convert_negation'] =

gabungan_sentimen['stemming'].apply(convert_negation)  

gabungan_sentimen['stopwords_removal'] =

gabungan_sentimen['convert_negation'].apply(stopwords_removal)  

gabungan_sentimen

4. Prediksi Sentimen untuk Indonesia (HOME dan AWAY)

id = gabungan_sentimen[['stopwords_removal','pertandingan', 'negara']]

id = id[id['negara'] == 'id']

id = id.drop(columns=['negara']).reset_index(drop=True)  

id  

a. Prediksi Menyerang HOME

id_menyerang_home = id[id['pertandingan'] == 'HOME']

 

id_menyerang_home  

import pickle  

# Memuat model dari file pickle

with open('model/random_forest_model_id_menyerang.pkl', 'rb') as file:

    loaded_model_id_menyerang = pickle.load(file)  

# Memuat vectorizer dari file pickle

with open('model/tfidf_vectorizer_model_id_menyerang.pkl', 'rb') as file:

    loaded_vectorizer_id_menyerang = pickle.load(file)  

(47)

print("Model dan vectorizer berhasil dimuat dari file.")  

test_text_vectorized =

loaded_vectorizer_id_menyerang.transform(id_menyerang_home['stopwords_rem oval'].apply(lambda x: ' '.join(x)))

 

predictions = loaded_model_id_menyerang.predict(test_text_vectorized)  

id_menyerang_home.loc[:, 'menyerang'] = predictions

id_menyerang_home['menyerang'].value_counts()

import matplotlib.pyplot as plt import seaborn as sns

 

# Data

counts = id_menyerang_home['menyerang'].value_counts()

label_mapping = {-1: "Negatif", 0: "Netral", 1: "Positif"}  # Mapping label counts.index = counts.index.map(label_mapping)  # Ubah label

 

# Plot

plt.figure(figsize=(10,6))

ax = sns.barplot(x=counts.index, y=counts.values, palette=['gray', 'green', 'red'])  

# Tambahkan nilai di atas batang

for i, value in enumerate(counts.values):

    ax.text(i, value + 40, str(value), ha='center', va='bottom', fontsize=12, fontweight='bold', color='black')

 

# Label

plt.xlabel("Kategori Sentimen") plt.ylabel("Jumlah")

plt.title("Distribusi Sentimen Indonesia Menyerang Home") plt.xticks(rotation=0)

 

# Tampilkan plt.show()

b. Prediksi Menyerang AWAY

id_menyerang_away = id[id['pertandingan'] == 'AWAY']

 

id_menyerang_away import pickle

 

(48)

# Memuat model dari file pickle

with open('model/random_forest_model_id_menyerang.pkl', 'rb') as file:

    loaded_model_id_menyerang = pickle.load(file)  

# Memuat vectorizer dari file pickle

with open('model/tfidf_vectorizer_model_id_menyerang.pkl', 'rb') as file:

    loaded_vectorizer_id_menyerang = pickle.load(file)  

print("Model dan vectorizer berhasil dimuat dari file.")  

test_text_vectorized =

loaded_vectorizer_id_menyerang.transform(id_menyerang_away['stopwords_rem oval'].apply(lambda x: ' '.join(x)))

 

predictions = loaded_model_id_menyerang.predict(test_text_vectorized)  

id_menyerang_away.loc[:, 'menyerang'] = predictions

id_menyerang_away['menyerang'].value_counts()  

import matplotlib.pyplot as plt import seaborn as sns

 

# Data

counts = id_menyerang_away['menyerang'].value_counts()

label_mapping = {-1: "Negatif", 0: "Netral", 1: "Positif"}  # Mapping label counts.index = counts.index.map(label_mapping)  # Ubah label

 

# Plot

plt.figure(figsize=(10,6))

ax = sns.barplot(x=counts.index, y=counts.values, palette=['gray', 'green', 'red'])  

# Tambahkan nilai di atas batang

for i, value in enumerate(counts.values):

    ax.text(i, value + 45, str(value), ha='center', va='bottom', fontsize=12, fontweight='bold', color='black')

 

# Label

plt.xlabel("Kategori Sentimen") plt.ylabel("Jumlah")

plt.title("Distribusi Sentimen Indonesia Menyerang Away") plt.xticks(rotation=0)

 

# Tampilkan plt.show()

(49)

 

c. Prediksi Bertahan HOME

id_bertahan_home = id[id['pertandingan'] == 'HOME']

 

id_bertahan_home

import pickle  

# Memuat model dari file pickle

with open('model/random_forest_model_id_bertahan.pkl', 'rb') as file:

    loaded_model_id_bertahan = pickle.load(file)  

# Memuat vectorizer dari file pickle

with open('model/tfidf_vectorizer_model_id_bertahan.pkl', 'rb') as file:

    loaded_vectorizer_id_bertahan = pickle.load(file)  

print("Model dan vectorizer berhasil dimuat dari file.")  

test_text_vectorized =

loaded_vectorizer_id_bertahan.transform(id_bertahan_home['stopwords_removal' ].apply(lambda x: ' '.join(x)))

 

predictions = loaded_model_id_bertahan.predict(test_text_vectorized)  

id_bertahan_home.loc[:, 'bertahan'] = predictions

id_bertahan_home['bertahan'].value_counts()

import matplotlib.pyplot as plt import seaborn as sns

 

# Data

counts = id_bertahan_home['bertahan'].value_counts()

label_mapping = {-1: "Negatif", 0: "Netral", 1: "Positif"}  # Mapping label counts.index = counts.index.map(label_mapping)  # Ubah label

 

# Plot

plt.figure(figsize=(10,6))

ax = sns.barplot(x=counts.index, y=counts.values, palette=['gray', 'green', 'red'])  

# Tambahkan nilai di atas batang

for i, value in enumerate(counts.values):

(50)

    ax.text(i, value + 40, str(value), ha='center', va='bottom', fontsize=12, fontweight='bold', color='black')

 

# Label

plt.xlabel("Kategori Sentimen") plt.ylabel("Jumlah")

plt.title("Distribusi Sentimen Indonesia Bertahan Home") plt.xticks(rotation=0)

 

# Tampilkan plt.show()

d. Prediksi Bertahan AWAY

id_bertahan_away = id[id['pertandingan'] == 'AWAY']

 

id_bertahan_away

import pickle  

# Memuat model dari file pickle

with open('model/random_forest_model_id_bertahan.pkl', 'rb') as file:

    loaded_model_id_bertahan = pickle.load(file)  

# Memuat vectorizer dari file pickle

with open('model/tfidf_vectorizer_model_id_bertahan.pkl', 'rb') as file:

    loaded_vectorizer_id_bertahan = pickle.load(file)  

print("Model dan vectorizer berhasil dimuat dari file.")  

test_text_vectorized =

loaded_vectorizer_id_bertahan.transform(id_bertahan_away['stopwords_removal' ].apply(lambda x: ' '.join(x)))

 

predictions = loaded_model_id_bertahan.predict(test_text_vectorized)  

id_bertahan_away.loc[:, 'bertahan'] = predictions

id_bertahan_away['bertahan'].value_counts()

import matplotlib.pyplot as plt import seaborn as sns

 

# Data

counts = id_bertahan_away['bertahan'].value_counts()

(51)

label_mapping = {-1: "Negatif", 0: "Netral", 1: "Positif"}  # Mapping label counts.index = counts.index.map(label_mapping)  # Ubah label

 

# Plot

plt.figure(figsize=(10,6))

ax = sns.barplot(x=counts.index, y=counts.values, palette=['green', 'gray', 'red'])  

# Tambahkan nilai di atas batang

for i, value in enumerate(counts.values):

    ax.text(i, value + 40, str(value), ha='center', va='bottom', fontsize=12, fontweight='bold', color='black')

 

# Label

plt.xlabel("Kategori Sentimen") plt.ylabel("Jumlah")

plt.title("Distribusi Sentimen Indonesia Bertahan Away") plt.xticks(rotation=0)

 

# Tampilkan plt.show()  

5. Prediksi Sentimen untuk Arab (HOME dan AWAY)

ar = gabungan_sentimen[['stopwords_removal','pertandingan', 'negara']]

ar = ar[ar['negara'] == 'ar']

ar = ar.drop(columns=['negara']).reset_index(drop=True)  

ar

a. Prediksi Menyerang HOME

ar_menyerang_home = ar[ar['pertandingan'] == 'HOME']

 

ar_menyerang_home

import pickle  

# Memuat model dari file pickle

with open('model/random_forest_model_ar_menyerang.pkl', 'rb') as file:

    loaded_model_ar_menyerang = pickle.load(file)  

# Memuat vectorizer dari file pickle

with open('model/tfidf_vectorizer_model_ar_menyerang.pkl', 'rb') as file:

    loaded_vectorizer_ar_menyerang = pickle.load(file)

(52)

print("Model dan vectorizer berhasil dimuat dari file.")  

test_text_vectorized =

loaded_vectorizer_ar_menyerang.transform(ar_menyerang_home['stopwords_rem oval'].apply(lambda x: ' '.join(x)))

 

predictions = loaded_model_ar_menyerang.predict(test_text_vectorized)  

ar_menyerang_home.loc[:, 'menyerang'] = predictions

ar_menyerang_home['menyerang'].value_counts()

import matplotlib.pyplot as plt import seaborn as sns

 

# Data

counts = ar_menyerang_home['menyerang'].value_counts()

label_mapping = {-1: "Negatif", 0: "Netral", 1: "Positif"}  # Mapping label counts.index = counts.index.map(label_mapping)  # Ubah label

 

# Plot

plt.figure(figsize=(10,6))

ax = sns.barplot(x=counts.index, y=counts.values, palette=['red', 'gray', 'green'])  

# Tambahkan nilai di atas batang

for i, value in enumerate(counts.values):

    ax.text(i, value, str(value), ha='center', va='bottom', fontsize=12, fontweight='bold', color='black')

 

# Label

plt.xlabel("Kategori Sentimen") plt.ylabel("Jumlah")

plt.title("Distribusi Sentimen Arab Saudi Menyerang Home") plt.xticks(rotation=0)

 

# Tampilkan plt.show()

b. Prediksi Menyerang AWAY

ar_menyerang_away = ar[ar['pertandingan'] == 'AWAY']

 

ar_menyerang_away

import pickle

(53)

 

# Memuat model dari file pickle

with open('model/random_forest_model_ar_menyerang.pkl', 'rb') as file:

    loaded_model_ar_menyerang = pickle.load(file)  

# Memuat vectorizer dari file pickle

with open('model/tfidf_vectorizer_model_ar_menyerang.pkl', 'rb') as file:

    loaded_vectorizer_ar_menyerang = pickle.load(file)  

print("Model dan vectorizer berhasil dimuat dari file.")  

test_text_vectorized =

loaded_vectorizer_ar_menyerang.transform(ar_menyerang_away['stopwords_rem oval'].apply(lambda x: ' '.join(x)))

 

predictions = loaded_model_ar_menyerang.predict(test_text_vectorized)  

ar_menyerang_away.loc[:, 'menyerang'] = predictions  

ar_menyerang_away['menyerang'].value_counts()

import matplotlib.pyplot as plt import seaborn as sns

 

# Data

counts = ar_menyerang_away['menyerang'].value_counts()

label_mapping = {-1: "Negatif", 0: "Netral", 1: "Positif"}  # Mapping label counts.index = counts.index.map(label_mapping)  # Ubah label

 

# Plot

plt.figure(figsize=(10,6))

ax = sns.barplot(x=counts.index, y=counts.values, palette=['gray', 'red', 'green'])  

# Tambahkan nilai di atas batang

for i, value in enumerate(counts.values):

    ax.text(i, value, str(value), ha='center', va='bottom', fontsize=12, fontweight='bold', color='black')

 

# Label

plt.xlabel("Kategori Sentimen") plt.ylabel("Jumlah")

plt.title("Distribusi Sentimen Arab Saudi Menyerang Away") plt.xticks(rotation=0)

 

# Tampilkan

Referensi

Garis besar

Dokumen terkait