KJN : Gan, bisa ga sih kita ngolah data media sosial tapi ga usah pake ribet ... Saya kan sibuk Gan, setiap hari harus update Instagram, ke Mall, jalan², bengong sambil dengerin musik, & nonton Sinetron. Mana sempet kalau harus belajar yang terlalu rumit gitu, pusing kepala Barbie.
TS: ya ... ada sih ... mari kita bahas contoh aplikasi sederhana yang bisa dibuat dengan modul Pattern dan Textblob. (featuring Sastrawi, networkx, pyLDAvis, & NLTK).
Bagi praktisi atau mereka yang sedang jenuh belajar teori & ingin hands-on dengan aplikasi nyata dan ndak terlalu memperdulikan (dulu) masalah teori/scalability, maka post ini untuk kamu.. ya kamu ... :) ... Di post ini saya (berusaha) tidak menyentuh teori dan menunjukkan mudahnya melakukan Social Media Analytic (SMA) dasar dengan Python.
Syarat:
- Ngorbanin kuota nonton drama korea di youtube sedikit untuk jalanin program ini
(butuh koneksi internet saat run programnya). - Install modul yang dibutuhkan (diterangkan kemudian).
- Download tiga file berikut: TSutantoSMA.py, instalModul.py, dan Easy_Sma.ipynb dengan cara membuka link ini, kemudian klik kanan pada masing-masing file tersebut dan memilih menu "Save (content) as".
TS: Bisa, tapi 1.a, 1.b, dan 1.c ... gimana? ...
KJN: ya udah deh gapapa 'Gan .. ane rela berkorban ... Ane mah gitu orangnya, baik pisan ... sok atuh 'Gan lanjutkeun ...
TS: ... #MencobaBersabar ... #tarikNafas3x
Instalasi Modul
Sayangnya saat tulisan ini dibuat sepertinya ada masalah dengan source modul pattern. Sehingga terpaksa instalasi modulnya agak ndak straight forward. Ok, here's what we need to do (asumsi dilakukan di windows):- Install git : https://git-scm.com/downloads
Cara install-nya mudah, ibarat kata Profesor Xavier: "pokoknya next-next aja sampe ada tombol finish" đ - Install modul pattern dengan cara membuka terminal (command prompt)
Disarankan buka command prompt-nya sebagai administrator. Catatan: jangan lakukan ini:
"pip install pattern" atau "pip install pattern3". - Install modul² lain yang dibutuhkan: Mudahnya gunakan file ini : instalModul.py.
File tersebut akan secara automatis menginstall/update modul-modul yang dibutuhkan (Notes: the code is given 'as is' & without warranty, you are responsible for your own action). Untuk menjalankan-nya (misal instalModul.py ada di C:\Temp):[Kalau masih belum jelas, examine this screenshot] - "Kalau" ada error ketika install modul "WordCloud", maka lakukan hal ini:
a. Unduh wordcloud-1.3.3-cp36-cp36m-win_amd64.whl dari Link ini.
b. Misal file tersebut berada di "C:\Temp", jalankan perintah ini untuk menginstal modul wordcloud:
KJN: 'Gan, entar dulu 'Gan ... Agan "Encu" ya? ...
TS: hah Encu?! .... Apaan tuh? ...
KJN: iye Encu, itu pendukung si Anu bin Fulan, Agan Tercyduk nih ....
TS: ... eh 'Tong ... SMA ga kenal pro-kontra atau hitam/putih, justru kita mau lihat apa kata si data...
KJN: kirain gitu 'Gan ...
TS: #JantungMulaiTersiksa ... Kalau ente ga suka ganti aja variabel "topic" dengan keyword lain yang ente suka, misal '"Ice Cream" rasa Micin'
KJN: ya ga usah sewot gitu lah 'Gan ... Woles aja ...
TS: #TarikNapesDalemDalem7x ...
Mulai dari post ini saya mau coba kombinasikan Tulisan dan Video, karena
Kembali ke laptop Blog (Tulisan):
- Sentiment Analysis diatas tidak menggunakan proper Indonesian NLP, autocorrect, stemming, dll (kecuali saat Topic Modelling), tapi (SA) menggunakan automatic machine translation method seperti di paper ini.
- retweet tidak saya filter (biarkan menjadi duplikasi). You can modify this, I left a hint in the code.
- Kata kunci (variabel topic) akan mempengaruhi berapa banyak tweet akan di dapatkan. Notes that walau N di set besar, tapi jika tweet 7 hari kebelakang hanya sedikit terhadap topic yang diberikan, maka tweet yang didapatkan akan tetap sedikit. Sebaliknya, jika topic yang dipilih sedang trend saat ini, maka kemungkinan besar akan ada cukup banyak tweet yang dapat di analisa. Jika tidak, maka sedikit atau bahkan tidak ada sama sekali tweet yang akan berhasil di crawl.
- Jumlah tweet juga akan terbatas oleh aturan twitter ini yang juga pernah dibahas disini. Jika telah melewati batas quota akan muncul pesan "SearchEngineLimitError". Jika ingin mengolah data tweet di masa lampau (>7hari), silahkan baca post ini.
- Scalability dan Efisiensi/Performa tidak dihiraukan (murni implementasi dasar) agar code-nya mudah dipahami. Silahkan improve untuk latihan.... Atau kita bisa discuss sambil ngopi-ngopi kalau ketemu đ.
TS: Katanya ga mau teori ... Cara ini dasar sekali (Machine-Translated-Lexicon-Based) dan tidak terlalu akurat, but will do (i.e. lumayan untuk belajar). Kalau lagi bener dan ingin baca teorinya silahkan baca ini : [Link1] [Link2].
KJN : Pak ada yang lebih mudah dari cara di video diatas & berhadiah Tongkat Selpih ga?
TS: minum Panadol rasa Jambu Monyet terus jalan pulang sambil ngemil Mi'cin ...
#KJN = #KidsJamanNow
~~~~~~ FIN ~~~~~~
How to improve:
- Clean & Relevant Data: Make sure datanya bersih dari tweet yang tidak terkait dengan topic & dalam timeframe yang tepat (Bukan sekedar 7 hari ke belakang). This can be done by carefully determining the topic keywords (use double quotation "" for phrases & look at hashtag trends) and-or manually filter the data.
- Gunakan NLP Indonesia (preprocessing: Tokenization, Stopwords, stemming, Lexicon Set, dll). Jalankan fungsi detect language (misal dengan langdetect/langid), karena orang Indonesia banyak yang seperti saya yang suka campur² bahasa Inggris & bahasa Indonesia đ #maaf
- Gunakan word embedding seperti Word2Vec + Known Strong Polarized words atau dengan kata lain gunakan penggabungan antara Domain Knowledge + Machine Learning. Use this knowledge/results in the crawling and in the Lexicon Set/SMA Models.
- Ensemble beberapa SA models (Misal Lexicon + satu atau lebih supervised approaches). Notes that supervised approach butuh training data, artinya beberapa data (tweet/social media posts) secara manual harus diberi label.
- Padukan Centrality Analysis dan Community Analysis ke Sentiment Analysis-nya : Hybrid Network and Content Based Analysis. Do this if someone pays you (well) to do it ... :) ... cause it's a lot of work ... :D ... but the analysis is going to be deep and pretty ...
- Detect buzzer/bots and put some weights on their tweets (or simply exclude). You can also examine verified vs unverified users analysis (need API access). Hhhmmm... tahun ini ingin bikin project tentang ini ... #kode đ
- Improve scalability & efficiency. Code yang digunakan di post ini belum di optimasi sama sekali, there's lots of room for improvements.
- Others ... (Please let me know in the comment section if you have some thoughts/experience that you want to share with us: Insya Allah pahala 'Gan đ)
Cheers,
</TES>®
Code Encodings dan Module (Versions) yang dipakai di Blog Post ini:
Gallery Outputs:


No comments:
Write comments