Analisis Sentimen pada Most Media Populer Indonesia
Apa itu Analisis Sentimen?
Analisis sentimen digunakan untuk mengetahui sentimen penulis dalam penulisan berita tentang calon presiden. Analisis sentimen dapat menentukan apakah penulis memiliki pandangan positif, negatif, atau netral terhadap objek berita.
Analisis sentimen termasuk dalam text mining yang dapat menganalisis pendapat dan mengevaluasi sikap, penilaian, dan emosi penulis dalam suatu teks berita.
Analisis sentimen dapat menjadi alat yang kuat bagi pengguna untuk mengambil informasi yang dibutuhkan, serta menggabungkan sentimen kolektif dari penulisan berita.
Pada prosesnya, analisis sentimen menggunakan beberapa komponen yakni newspaperk3 dan beautifulSoup dalam Web Scraping, serta TextBlob dalam analisis teks.
Setelah dianalisis menggunakan TextBlob, terdapat parameter utama analisis sentimen yakni "polaritas" yang menjadi pengukur berbagai aspek dari perasaan dan emosi yang terdapat pada teks.
Polaritas dapat mengukur apakah teks mengungkapkan pandangan kebahagiaan, kekecewaan, atau netral terhadap suatu objek berita. Polaritas mengacu pada orientasi umum dari sentimen dalam teks, yakni apakah sentimen tersebut positif, negatif, atau netral.
Skor polaritas setiap teks dapat beragam tergantung pada kebutuhan pengguna. Dalam menganalisis berita, kami telah melihat beberapa sampel berita hasil analisis sentimen dan mengkajinya lebih lanjut apakah telah sesuai dengan skor polaritas yang diberikan.
Dalam analisis sentimen berita yang kami lakukan, sentimen positif memiliki skor polaritas yang berkisar pada 1 sampai 0.33, sentimen negatif memiliki skor polaritas -1 sampai -0.33, dan sentimen netral memiliki skor polaritas -0.32 sampai 0.32.
RSS Feeds dan Google News dalam Pengambilan Data
Langkah awal untuk melakukan analisis sentimen diawali dengan pengambilan data pada website. Pengambilan data dilakukan dengan bantuan RSS (Really Simple Syndication) dan Google News agar dapat menarik data berita terkini dengan mudah.
Pada praktiknya, kami melakukan penelusuran Google News dan dapat menerima hasilnya dalam bentuk RSS feed dengan membuka URL dan mengganti 'news.google.com/' dengan 'news.google.com/rss /'.
Kami memformulasikan URL RSS feed pada Google News untuk berita utama yang didasarkan pada topik, lokasi geografis, dan bahasa. Pengambilan data dengan bantuan RSS feed dan Google News dapat mempermudah dalam mendapatkan data yang lebih lengkap.
Sayangnya, data yang bisa didapatkan oleh setiap domain maksimal hanya 100 URL saja. Namun, kami dapat menyiasatinya dengan mengatur waktu pengambilan berita.
RSS feed memiliki keunggulan berupa tautan artikel diatur sedemikian rupa sehingga sangat mudah ditemukan dan diekstraksi dibandingkan dengan situs web biasa.
Keunggulan lainnya, semua RSS feed memiliki format standar yang sama. Oleh karena itu, kode yang sama sering kali dapat digunakan jika Anda ingin mengekstrak tautan artikel lebih dari satu RSS feed.
Pada prosesnya, kami menginisiasi tanggal awal dan akhir berita yang ingin diambil sebagai solusi keterbatasan RSS yang hanya bisa mengambil 100 URL saja setiap domain.
Disamping itu, jika kami ingin mengambil berita terkait calon Presiden “Ganjar Pranowo”, maka kami akan tetapkan terlebih dahulu RSS feed dengan URL yang mengandung keyword “Ganjar Pranowo”.
Web Scraping dengan Newslater3k dan BeautifulSoup
Web scraping merupakan proses pengambilan data atau informasi dari halaman web secara terstruktur dan otomatis. Teknik ini digunakan untuk mengumpulkan data dari berbagai sumber online, seperti situs web, forum, blog, atau platform media sosial.
Web scraping melibatkan ekstraksi teks, gambar, tautan, tabel, dan elemen lainnya dari halaman web. Web Scraping yang dilakukan menggunakan library Python yang terdiri dari Newslater3k dan BeautifulSoup.
Newspaper3k digunakan untuk melakukan web scraping pada artikel-artikel berita. Library ini menggunakan library requests dan memiliki BeautifulSoup sebagai dependensi sambil melakukan parsing menggunakan lxml.
Newspaper3k tidak hanya mengambil data berupa teks artikel, namun juga dapat mengambil varian data lain seperti tanggal publikasi, penulis, URL, gambar, dan video. Alasan lainnya mengapa kami menggunakan Newspaper3k yakni dapat mengetahui isi artikel tanpa harus membacanya.
Newspaper3k juga dapat melakukan fungsi yang lebih canggih seperti menemukan RSS feed dan melakukan pengambilan URL artikel dari sumber berita utama dari library requests.
Pada prosesnya, Kami mengimpor objek Artikel dari library Newspaper3k lalu mengekstrak informasinya. Selanjutnya, kami memasukkan fungsi nlp() agar dapat memproses kata kunci dari artikel menggunakan Natural Language Processing (NLP) dan juga merangkum artikel tersebut.
Dalam hal ini, kami juga memasukkan kode scraping dalam blok try/except untuk mengantisipasi keberadaan URL artikel yang buruk atau yang dapat menghentikan program.
Pengecualian tersebut berupa kesalahan 'ArticleException' saat menjalankan Newspaper3k yang masuk dalam blok 'except'. Kami juga telah menyertakannya dalam impor di bagian atas.
Analisis Sentimen dengan TextBlob dan NLTK
Setelah melakukan web scraping menggunakan Newspaper3k dan BeautifulSoup, Kami menggunakan library TextBlob dan NLTK untuk memproses dan menganalisis teks pada artikel berita yang telah diambil.
Analisis sentimen dengan Textblob adalah bagian dari Proses NLP (Natural Language Processing) yang digunakan untuk memahami, memanipulasi, dan menganalisis bahasa manusia oleh komputer.
Proses NLP melibatkan kombinasi teknik linguistik, statistik, dan pembelajaran mesin untuk mencapai pemahaman dan analisis yang akurat terhadap teks dan bahasa manusia
Awalnya, proses NLP dilakukan secara terpisah, yakni diawali dengan Tokenisasi, Pembersihan Teks, Stopword Removal Stopwords, Stemming dan Lemmatization, Pengenalan Entitas, Analisis Part-of-Speech (POS), dll.
Namun, library TextBlob telah menyediakan berbagai fitur pengolahan teks, seperti deteksi bahasa, pemisahan kata (tokenization), pemodelan frasa, analisis sentimen, penganalisisan part-of-speech (POS), dan fitur lainnya dalam satu library sehingga pengguna dapat mudah melakukannya secara otomatis.
Oleh sebab itu, TextBlob dapat digunakan untuk menganalisis sentimen suatu teks, menghitung frekuensi kata, melakukan penganalisisan part-of-speech untuk mengidentifikasi kata-kata dalam kalimat, serta melakukan pemeriksaan ejaan.
Textblob melakukan analisis sentimen dengan menghitung rata-rata skor untuk berbagai jenis kata dalam teks, kemudian memberikan teks tersebut skor polaritas.
Proses Analisis Sentimen pada Artikel Berita di Sequence Stats
Terdapat beberapa langkah yang harus kami lakukan untuk bisa mendapatkan hasil akhir analisis sentimen beserta kategorisasi sentimen positif, negatif, dan netral. Hal ini dilakukan melalui langkah-langkah berikut:
- Menginstall library newspaper3k, BeautifulSoup, dan TextBlob jika belum tersedia pada Python yang digunakan.
- Mengimport library yang sudah diinstall seperti requests, Article dan ArticleException dari newspaper3k, TextBlob, BeautifulSoup, dan NLTK. NLTK akan terinstal secara otomatis jika telah berhasil menginstal Textblob.
- Mengunduh paket 'punkt' agar kita bisa melakukan tokenisasi pada TextBlob.
- Menetapkan waktu pengambilan artikel berita yang akan diproses menggunakan RSS feed. Kami menggunakan library dateutil.rrule untuk mengatur waktu yang sesuai.
- Kami menggunakan zip() untuk memasangkan tanggal awal dan akhir yang sesuai menjadi tupel, dan menempatkan pasangan-pasangan tersebut ke dalam daftar besar dengan format 'datetime’.
- Membuat daftar situs berita yang akan diambil, kami dapat menentukan beberapa website berita dalam satu proses analisis sentimen.
- Menggunakan pengulangan (looping) pada setiap situs berita dan pasangan tanggal yang ditetapkan.
- Membentuk URL Google News dengan RSS beserta kata kunci pencarian sesuai dengan nama calon Presiden yang akan dianalisis. Dalam URL yang dibentuk, kami menetapkan rentang tanggal (date1 dan date2) serta situs berita yang telah dicatat sebelumnya.
- Mengirim permintaan HTTP ke URL dan mengambil hasil dari RSS feed Google News.
- Mengurai RSS feed menggunakan BeautifulSoup untuk mendapatkan semua elemen 'item' yang mewakili artikel.
- Kami menginisiasi pengulangan melalui artikel-artikel untuk mendapatkan URL setiap artikel dan menyimpannya dalam daftar artikel.
- Untuk setiap tautan artikel, kode akan melakukan hal berikut:
- Menggunakan pustaka Newspaper3k untuk mengunduh, membedah, dan menganalisis teks artikel.
- Memeriksa apakah keyword calon Presiden yang telah dimasukan di awal terdapat dalam teks artikel.
- Menjalankan analisis sentimen pada teks artikel menggunakan TextBlob.
- Hasil dari analisis sentimen menggunakan TextBlob berupa polaritas dan subjektivitas akan disimpan dalam bentuk tupel yang kemudian ditambahkan ke dalam daftar data.
13. Sentimen positif berasal dari skor polaritas antara 0.33 sampai 1, sentimen negatif berasal dari skor polaritas antara -1 sampai -0.33, dan sentimen netral berasal dari skor -0.32 sampai 0.32.
14. Hasil akhir dari analisis sentimen, kategori sentimen disimpan dalam file csv.
Proses ini bertujuan untuk mengumpulkan artikel berita dari situs berita yang telah ditetapkan, melakukan analisis sentimen terhadap konten artikel yang relevan dengan keyword “Calon Presiden”, dan menyimpan hasilnya dalam sebuah file CSV yang mencakup berbagai informasi terkait sentimen.
Sumber Artikel
- Newspaper3k, https://pypi.org/project/newspaper3k/
- TextBlob: Simplified Text Processing, https://textblob.readthedocs.io/en/dev/
- Scraping websites with Newspaper3k in Python, https://www.geeksforgeeks.org/scraping-websites-with-newspaper3k-in-python/