Twitter Sentiment Analysis Bahasa Indonesia dengan TextBlob

diaplikasikan untuk menganalisis sentimen masyarakat terhadap debat capres-cawapres 2019

Albertus Heronius
7 min readJan 23, 2019

Tahun 2019 merupakan tahun politik bagi Indonesia, karena pada tahun ini merupakan tahun dilaksanakannya Pemilihan Umum (Pemilu) Presiden dan Wakil Presiden. Sebelum pesta politik itu berlangsung, diadakan debat capres-cawapres. Debat ini merupakan salah satu kesempatan bagi pasangan calon (paslon) Presiden dan Wakil Presiden saling mengutarakan visi misi mereka dan mengkritik paslon lain yang menjadi rival-nya.

Pendahuluan

Kedua pasangan Capres dan Cawapres dalam Debat Perdana (Liputan6.com/Faizal Fanani, 2019)

Ternyata tidak hanya para paslon yang saling berdebat, netizen juga ikut memeriahkan pesta politik yang diadakan setiap 5 tahun sekali ini di sosial media. Salah satu sosial media tersebut adalah Twitter, dengan munculnya #DebatCapres2019 dan #DebatPilpres2019 menandakan masyarakat turut memeriahkan pesta ini. Opini yang di-posting di Twitter, atau sering disebut sebagai tweet merupakan salah satu “harta karun” data yang dapat diambil dan dianalisa. Kita dapat menggunakan tweet tersebut untuk menentukan sentimen publik mengenai debat presiden yang berlangsung. Sentimen publik secara singkat adalah reaksi/emosi dari text yang ada, baik itu positif, negatif, dan juga netral. Hasil analisa sentimen publik yang ada tersebut kemudian dapat kita gunakan sebagai tolak ukur rata-rata reaksi dari masyarakat.

Tidak hanya para paslon yang saling berdebat, netizen juga ikut memeriahkan pesta politik yang diadakan setiap 5 tahun sekali ini di sosial media. Salah satu sosial media tersebut adalah Twitter, dengan munculnya #DebatCapres2019 dan #DebatPilpres2019 menandakan masyarakat turut memeriahkan pesta ini. Opini yang di-posting di Twitter, atau sering disebut sebagai tweet merupakan salah satu “harta karun” data yang dapat diambil dan dianalisis. Kita dapat menggunakan tweet tersebut untuk menentukan sentiment publik mengenai debat yang berlangsung. Sentiment publik secara singkat adalah reaksi/emosi dari text yang ada, baik itu positif, negatif, dan juga netral. Hasil analisis sentiment publik yang ada tersebut kemudian dapat kita gunakan sebagai tolok ukur rata-rata reaksi dari masyarakat.

Cara Kerja

Sentiment analysis dapat di-implementasikan dengan metode machine learning. Data dalam bentuk text, contohnya tweet yang masuk/di-input akan dipisah-pisah terlebih dahulu. Proses tersebut disebut juga sebagai tokenisasi. Tokenisasi dilakukan untuk mempermudah proses analisa dari sebuah kalimat text. Setelah itu, sentimen dari input dapat ditentukan dengan cara mengklasifikasikan kata-kata yang sudah dipisah sebelumnya dengan sentiment lexicon, sehingga memunculkan polarity dan subjectivity dari tweet yang ada.

Proses Merancang Program

Ada 3 tahapan dalam membuat sentiment analysis; mendaftar Twitter untuk API, meng-install library yang dibutuhkan, dan membuat code program dalam bahasa pemograman Python.

Tahap 1: Mendaftar untuk mendapatkan API Twitter.

Karena kita akan menganalisa tweet, cara paling mudah adalah langsung mengakses data dari tweet yang ada secara langsung. Hal tersebut dapat dilakukan bila kita memiliki API dari aplikasi yang kita inginkan, dalam konteks ini yaitu Twitter. Oleh karena itu, kita membutuhkan API dari Twitter yang dapat diibaratkan sebagai gerbang untuk mendapatkan tweet. Hal ini cukup mudah untuk dilakukan, pertama-tama kita harus apply terlebih dahulu bila belum memiliki account Twitter developer ke website developer Twitter.

Daftar Account Developer Twitter

Setelah semua data yang dibutuhkan telah diisi, kita create new app di bagian create new app untuk membuat app baru. Setelah app telah terbentuk, kita dapat generate key dan access token baru untuk program kita di kolom keys and tokens.

Access Token dan Consumer keys

Tahap 2: Meng-install library atau dependencies yang dibutuhkan

Ada 2 library penting untuk membuat aplikasi ini, yang pertama yaitu Tweepy dan TextBlob. Keduanya dapat langsung kita install pada command prompt, dengan cara sebagai berikut:

pip install -U textblob

Install TextBlob via Windows Command

Setelah menginstall TextBlob, kita harus meng-install juga Tweepy, yang digunakan untuk mengakses API Twitter dengan cara:

pip install tweepy --user

Install Tweepy via Windows Command

Pastikan semua library sudah di-install dengan sukses.

Tahap 3: Membuat code program

Untuk mempermudah dalam build code, saya menggunakan source code dari Siraj Raval yaitu twitter_sentiment_challenge, dengan code yang diberikan, kita sudah bisa menjalankan sentiment analysis, tetapi analisa yang ada masih untuk setiap tweet. Oleh karena itu sedikit pengubahan pada code yang ada akan dilakukan agar dapat diaplikasikan untuk topik “Debat Capres 2019”.

Ingat dengan tahap 1 dimana kita generate key dan token? Di saat inilah key dan token tersebut akan kita gunakan. Access token dan key kita input ke setiap bagian pada consumer_key, consumer_secret, access_token, dan access_token_secret. Setelah itu, kita sudah dapat mengambil tweet dari database Twitter, karena API Twitter sudah kita dapatkan melalui access token dan key tersebut.

Access Key dan Token untuk Twitter API

Terdapat public_tweets, yang merupakan variabel yang kita gunakan untuk mengambil data yang kita inginkan dari Twitter. Variabel ‘CANDIDATE_NAME’ dapat kita ubah sesuai keinginan kita, contohnya menjadi ‘Jokowi’ atau ‘Prabowo’, dan kata selanjutnya itu merupakan tambahan, karena topik yang ada itu Debat Capres 2019, kita menambahkan kata kunci “DebatCapres2019” untuk memperkecil scope pencarian. Di sini ditambahkan juga count = 100, artinya kita mengambil Top 100 tweet yang ada, kita dapat mengganti count ini sesuai keinginan.

Menyesuaikan Variabel Tweet yang Ingin Dicari

Variabel all_polarity diinisialisasi value awal 0. all_priority digunakan untuk mengetahui jumlah semua polarity yang ada, kemudian akan diambil rata-rata atau mean dari polarity setiap tweet untuk mendapatkan average polarity dari sebuah kandidat. Terdapat looping untuk public_tweet, yang berisikan; print(tweet.text) untuk menunjukkan data mana saja yang muncul dan digunakan, lalu ada inisialisasi variabel analysis yaitu adalah text tweet kita. Ada function translate yaitu untuk mengubah tweet dari Bahasa Indonesia (id) menjadi Bahasa Inggris (en). Hal ini dilakukan karena library TextBlob hanya dapat mengenali Bahasa Inggris dan masih belum terdapat Adaptor TextBlob untuk Bahasa Indonesia.

Looping Sentiment Analysis

Terdapat .sentiment yang digunakan untuk mengklasifikasi atau memprediksi tweet. Klasifikasi sentimen ada 2 bagian, yaitu polarity dan subjectivity. Dengan function print, kita dapat melihat kedua hasil tersebut. Polarity digunakan untuk melihat seberapa positif atau negatif sebuah teks, dan subjectivity untuk melihat value dari tweet itu adalah opini atau faktual. Semakin tinggi subjectivity berarti tweet tersebut dapat dikatakan sebagai opini, sedangkan semakin tinggi polarity, itu menandakan feel/emotion yang semakin positif juga dari sebuah tweet.

Klasifikasi Sentimen dari Semua Tweet

Setelah semua tweet sudah diklasifikasi, polarity dari semua tweet akan ditampilkan dalam bentuk rata-rata, dan label ‘Positif’ atau ‘Negatif’ sesuai dengan mean dari polarity semua tweet. Seperti yang sudah dikatakan sebelumnya, all_polarity merupakan variabel yang menunjukkan jumlah semua polarity tweet, lalu variabel tersebut dibagi 100 karena 100 adalah jumlah tweet (count) yang kita retrieve. Threshold atau batas tinggi rendahnya polarity untuk kategori tweet bisa diatur pada bagian if. Dalam contoh, saya menggunakan “> 0”, sehingga bila true maka rata-rata public sentiment mengenai topik tersebut akan masuk ke dalam kategori positif. Begitu juga sebaliknya. Output yang akan dihasilkan adalah rata-rata atau mean dari polarity yang ada dan juga label kategori dari polarity tersebut.

Hasil Output Analisis Sentimen

Dengan mencoba memasukkan salah satu nama kandidat dan dengan diikut kata kunci “DebatCapres2019” dengan contoh count = 100, kita bisa mengecek apakah program dapat berjalan atau tidak. Dari hasil di atas, didapatkan bahwa rata-rata polarity yaitu 0.058, yang artinya polarity > 0, sehingga hasil output dari hasil rata-rata polarity sudah benar, yaitu positive.

Akhir kata

Program sentiment analysis merupakan salah satu cara untuk melihat bagaimana respons dari masyarakat. Ada beberapa hal yang masih menjadi kekurangan dari program ini. Pertama, belum dapat memfilter tweet yang ada, karena tweet yang diambil hanyalah tweet yang kata kuncinya itu sama dengan yang kita code. Bisa saja tweet yang diambil itu merupakan tweet spam yang bisa merusak hasil polarity akhir. Kedua, program ini belum bisa mengklasifikasi sentimen dari Bahasa Indonesia dengan semestinya, karena tidak adanya adaptor TextBlob untuk Bahasa Indonesia. Sehingga, translator untuk mengubah Bahasa Indonesia menjadi Bahasa Inggris harus digunakan, yang kemungkinan masih menghasilkan terjemahan dan hasil yang kurang tepat.

Seperti yang sudah dikatakan sebelumnya, sentiment analysis ini masih sangatlah dasar. Walaupun masih banyak kekurangan, program yang tidak sampai 40 lines ini sudah dapat memprediksi rata-rata polarity dari sekumpulan tweet dengan topik yang sama dan sesuai keinginan kita. Oh iya, Anda bisa mencari saya via Twitter (@2tuz), bila Anda ingin menanyakan sesuatu mengenai program ini. Untuk full code program ini bisa dilihat di GitHub saya.

Demikian artikel program sentiment analysis untuk mengetahui respon sentimen masyarakat mengenai debat capres-cawapres 2019, terima kasih telah membaca. Saya harap artikel ini dapat menginspirasi dan membantu Anda dalam memulai dan mengembahkan program Anda.

--

--