Analisis sentimen teks bahasa Indonesia dengan Support Vector Machine (SVM): Perbandingan Leksikon dan Metode Ekstraksi Fitur
Analisis Sentimen Teks Bahasa Indonesia: Evaluasi Leksikon & Metode Ekstraksi Fitur
Implementasi analisis sentimen untuk mengevaluasi performa leksikon dan metode ekstraksi fitur pada teks berbahasa Indonesia dengan Python di JupyterLab.
###### Sentiment analysis implementation to evaluate lexicon and extraction feature methods performance using Python inJupyterLab. Primarily made for dealing with text in social media using Indonesian language (bahasa Indonesia). \*Note: jupyter notebooks with English documentation can be found inipynb-enfolder.
Set
- Dataset: cuitan Twitter berbahasa Indonesia mengenai sentimen penanganan covid-19 dari Prastyo et al. untuk data aspek umum;
- Slang & Stop Words: Kamus Alay (Colloquial Indonesian Lexicon) dan ID-Stopwords;
- Leksikon: InSet dan sentiwordsid (dari sentistrength_id);
- Ekstraksi Fitur:
term presence,bag of words,TF-IDF; - Sintesis Data:
SVM-SMOTE; - Classifier:
SVMdengan linear kernel.
tl;dr
Repositori ini dibuat untuk mengevaluasi performa leksikon dan metode ekstraksi fitur pada analisis sentimen teks berbahasa Indonesia mengenai penanganan Covid-19 dengan Support Vector Machine (SVM). Pendekatan analisis sentimen dilakukan dengan pemelajaran semisupervisi—menggabungkan pendekatan berbasis leksikon dan pendekatan berbasis pemelajaran mesin. Setiap jupyter notebook (ipynb) disertai dengan petunjuk. Algoritma dibuat dengan memanfaatkan modulRegEx bawaan Python dan library NLTK, Scikit-learn, juga imbalanced-learn. Validasi dilakukan dengan k-Fold cv setelah sebelumnya data disintesis (oversampling) dengan borderline SMOTE SVM atau SVM-SMOTE.
Algoritma yang termasuk
- [x] Pembersihan kata/prapengolahan teks
- [x] Penggantian kata tidak baku
- [x] Penghapusan stop words
- [x] Pelabelan leksikon: InSet, sentiwordsid (dari sentistrengthid)
- [x] Ekstraksi fitur: term presence, BoW, TF-IDF
- [x] Sintesis data: SVM-SMOTE
- [x] Klasifikasi: SVM
- [x] Plotting
Prasyarat
- pandas >= 0.25.0
- numpy >= 1.16.6
- nltk
- scikit-learn
- imbalanced-learn
- jupyterlab
Instalasi
Prasyaratinstal package satu per satu
pip3 install --user --upgrade [nama package] atau
Clone Repositori
git clone https://github.com/onpilot/sentimen-bahasa.git
cd sentimen-bahasa
pip3 install -r requirements.txt
jupyter-lab
FAQ
Saya punya instalasi Python versi lama untuk projek lain. Apa perlu di-uninstall dulu?
Ya. Atau gunakan aplikasi yang bisa memanajemen instalasi Python, seperti Conda atau Scoop.
Error: Microsoft Visual C++ 14.0 or greater is required!Pengguna Windows perlu compiler Visual C++ 14.0 Build Tools atau versi di atasnya untuk package scikit-learn.
Publikasi
Publikasi mengenai projek ini bisa dilihat di: http://jurnal.umus.ac.id/index.php/intech/article/view/556Jika kamu memanfaatkan repositori ini dalam publikasi akademis, kami sangat mengapresiasi sitasi ke paper berikut:
@article{j.ilm.intech:v03:02-556, author = {Wildan Fariq Abdillah, Agyztia Premana, Raden Mohamad Herdian Bhakti}, title = {Analisis Sentimen Penanganan Covid-19 dengan Support Vector Machine: Evaluasi Leksikon dan Metode Ekstraksi Fitur}, journal = {Jurnal Ilmiah Intech: Information Technology Journal of UMUS}, year = {2021}, volume = {03}, issue = {02}, pages = {160-170}, issn = {2685-4902 (online)}, doi = {10.46772/intech.v3i02.556}, url = {http://jurnal.umus.ac.id/index.php/intech/article/download/556/373} }
to-dos
- [x] jupyter notebooks (ipynb) + petunjuk bahasa Indonesia
- [x] jupyter notebooks (ipynb) + English guide
- [ ] plotting refinement or addition
- [ ] implement sentistrength_id as whole, including question word, negation handling, etc.
- [ ] spell check: checkerid, stif-indonesia, Peter Norvig's, spellchecker, SymSpell.
- [ ]
stemmer/lemmatizer: PySastrawi, nlp-id - [ ] python code coverage
Bacaan Lanjut
- https://github.com/louisowen6/NLPbahasaresources
- https://github.com/makcedward/nlp
- https://github.com/keon/awesome-nlp