Building Indonesian News Data set and Classifier

AC
Data Folks Indonesia
4 min readJun 29, 2019
image: aylien.com

Berita yang kita baca sehari hari, berita yang tersebar dimana-mana baik yang gratis dan berbayar tak disangka merupakan data yang dapat kita gunakan untuk membuat model machine learning. Seringkali kita melihat berita yang tidak relevan dengan kategorinya, berita yang membahas perusahaan teknologi dari segi pendanaan bisa saja masuk kategori ekonomi, atau sama sama membahas perusahaan teknologi tapi dari segi inovasinya yang baru dirilis sehingga masuk kategori tekno, kadang dari sini kurang terlihat jelas “boundaries” berita mana masuk kategori mana.

Artikel ini membahas membuat model document classifier, step step dan metode yang digunakan. Sama seperti artikel sebelumnya yang membahas sentimen analisis tapi kali ini bermain dengan multi-class dan berbagai tambahan lainnya.

Indonesian News Dataset ini dibuat dengan cara mengumpulkan link link berita atau biasa dengan crawling lalu di scraping menggunakan beautifulsoup. Data yang didapatkan menurut penulis cukup untuk digunakan pemodelan berita Indonesia sederhana. Dataset ini terdiri dari 6127 dokumen dan 2627dokumen untuk masing-masing train set dan test set. Dataset ini sengaja dibuat tidak seimbang.

train set dan test set label distribution

Dengan label yang tidak seimbang ini, harapannya model mampu membedakan artikel otomotif walaupun dengan data yang sedikit tanpa menggunakan oversampling atau undersampling, sekaligus menguji apakah algoritma yang dipakai tahan terhadap data imbalance.

Pemodelan ini terdiri dari 5 langkah, yaitu preparation, cleansing, feature extraction, model, dan evaluasi.

Data Preparation

Data yang sudah tersedia berformat .res dan sudah dibagi menjadi train dan test set sehingga tidak perlu lagi mensplitnya jadi dua.

Cleansing

Dalam proses cleansing, dokument di tokenize menggunakan word_tokenize NLTK, lalu semua teks di lower case. Selain itu juga memfilter kata yang panjangnya kurang dari 3 dihilangkan dan kata yang bukan alnum di hilangkan. Sebagai tambahan, eksperimen ini juga menguji penggunaan stopwords, apakah memberikan score dan waktu training yang lebih cepat atau tidak.

Feature Extraction

Feature extraction yang digunakan adalah CountVectorizer dari scikit-learn dengan settingan default. Konsep dasar dari CountVectorizer ini adalah menghitung semua kata yang ada di corpus dan menjadikannya representasi dari dokumen tersebut

gambaran sederhana dari cara kerja CountVectorizer

Modeling

Jika sudah mentransformasi teks kedalam array, selanjutnya memasukan data tersebut ke algoritma. Algoritma untuk supervised learning ada berbagai macam mulai dari Naive Bayes, Decision Tree, Support Vector Machine, dll. Namun kali ini penulis hanya menggunakan Multinomial Naive Bayes dengan settingan default.

Evaluation

Setelah kita mendapatkan hasil prediksi dari model, maka selanjutnya kita mengevaluasi apakah hasil yang diprediksi sudah bagus apa belum. Metrics yang digunakan f1-score, precision, recall, dan jug melihat confusion metrics agar lebih jelas persebaran label prediksinya. Pemodelan yang dilakukan mendapatkan score sebagai berikut

perbandingan score f1 score, precision, dan recall
perbandingan stopwords dan non stopwords di confusion matrix

Penutup

Akhirnya… artikel kedua tentang text mining ini selesai. Semoga artikel yang singkat nan sederhana ini memberikan gambaran untuk pembaca yang sedang mengerjakan projek news classification. Bagi kalian yang bertanya tanya untuk mendapatkan datasetnya… Ooooo… tidak semudah itu Esmeralda. Penulis saat ini sedang membuat jakarta research group, group yang bertujuan untuk mewadahi orang orang yang menyukai riset dalam bidang machine learning dan deep learning.

Mungkin jika semua dataset sudah siap, penulis akan mengupload ke repo indonesian-sentiment, dan jangan lupa untuk subscribe channel group telegram t.me/datafolks untuk mendapatkan update update terbaru seputar data science dan event-event khususnya di Jakarta.

UPDATE: Dataset bisa dicek disini

sekian,

Jika menurutmu tulisan ini bermanfaat mohon untuk clap nya ya :D

--

--