Bridging data teks berita ekonomi dengan R |
Pada era digital yang serba cepat seperti sekarang, jumlah informasi yang tersedia di internet telah meledak secara signifikan. Setiap detik, miliaran teks, artikel, dan konten lainnya diproduksi dan beredar di seluruh dunia. Dalam menghadapi jumlah yang luar biasa ini, tantangan utama yang dihadapi oleh pengguna internet adalah bagaimana menyederhanakan dan mengelompokkan informasi yang ada. Inilah mengapa kategorisasi teks menjadi aspek penting dalam pengelolaan informasi modern.
Kategorisasi teks melibatkan proses mengelompokkan teks berdasarkan topik, subjek, atau tema tertentu. Tujuannya adalah untuk membantu pengguna dalam menemukan informasi yang relevan dengan cepat dan efisien. Dalam konteks ini, terdapat beberapa pendekatan dan teknik yang digunakan untuk mencapai kategorisasi teks yang efektif.
Salah satu metode yang umum digunakan adalah analisis teks dengan menggunakan algoritma pembelajaran mesin. Algoritma ini mengidentifikasi pola dan karakteristik tertentu dalam teks dan kemudian mengelompokkannya berdasarkan kesamaan topik. Dalam pembelajaran mesin, algoritma tersebut menganalisis data teks yang ada, mempelajari pola dan konteks yang terkait dengan setiap topik, dan pada akhirnya dapat mengkategorikan teks baru yang belum pernah dilihat sebelumnya.
Selain itu, kategorisasi teks juga dapat melibatkan pendekatan berbasis aturan. Dalam metode ini, peraturan atau kriteria yang ditentukan sebelumnya digunakan untuk mengklasifikasikan teks ke dalam kategori yang relevan. Pendekatan ini sering kali melibatkan penggunaan daftar kata kunci atau frasa yang terkait dengan topik tertentu. Ketika teks baru ditemukan, algoritma mencocokkan kata-kata atau frasa yang ada dalam teks dengan daftar kata kunci yang telah ditentukan sebelumnya dan mengategorikan teks sesuai dengan kecocokan yang ditemukan.
Namun, kategorisasi teks bukanlah tugas yang mudah. Terdapat berbagai tantangan yang perlu diatasi, seperti variasi gaya penulisan, ambiguasi, dan perubahan tren topik dari waktu ke waktu. Selain itu, bahasa manusia yang kompleks dan konteks yang dapat berubah-ubah juga menambah kompleksitas dalam kategorisasi teks. Oleh karena itu, kombinasi antara pendekatan berbasis aturan dan analisis pembelajaran mesin sering digunakan untuk mengoptimalkan hasil kategorisasi teks.
Manfaat dari kategorisasi teks yang efektif sangat luas. Pengguna internet dapat dengan mudah menemukan informasi yang relevan dengan minat atau kebutuhan mereka tanpa harus menyisir jumlah besar teks yang tidak relevan. Dalam konteks bisnis, kategorisasi teks dapat membantu dalam pengelolaan dan pencarian data perusahaan yang efisien. Selain itu, aplikasi kategorisasi teks juga terlihat dalam media sosial
Selain untuk bisnis, kategorisasi teks juga bermanfaat dalam proses bisnis statistik berupa penyediaan fenomena pendukung statistik. Fenomena pendukung statistik ini biasanya berbentuk informasi data teks yang diperoleh dari indept study di lapangan atau dari berita di media daring. Kendati demikian, penerapan kategorisasi teks fenomena pendukung statistik ini tidak mudah karena perlu dilakukan secara manual dan hal ini cukup memakan banyak waktu.
Salah satu bentuk fenomena pendukung statistik adalah berita daring yang pada kesempatan kali ini akan dikategorisasi secara otomatis untuk kemudian dibandingkan hasilnya dengan kategorisasi secara manual. Adapun sumber data fenomena praktik pada unggahan ini dari situs kontan.co.id berupa sejumlah judul berita di dalamnya.
Tahapan kategorisasi fenomena dari judul berita kontan dimulai dengan web scraping yang bisa dipelajari pada tautan berikut [1], [2] atau [3]. Setelah datanya disimpan dalam bentuk excel, tahapan berikutnya adalah proses kategorisasi secara otomatis menggunakan paket R. Pada tahapan akhir, evaluasi hasil diperoleh dengan menghitung jumlah berita yang mampu dikategorikan secara benar terhadap kategori manual. Berikut langkah-langkah penerapannya dengan R:
#Aktivasi package
library(tidyverse)
library(dplyr)
#Mengimport Data Labelisasi katakunci
library(readxl)
katelapus <- read_excel("katelapus.xlsx")
head(katelapus)
## # A tibble: 6 x 2
## katakunci kategori
## <chr> <chr>
## 1 pabrik industri
## 2 kedit bank, jasa keuangan
## 3 penumpang kereta transportasi darat
## 4 penumpang pesawat transportasi udara
## 5 kapal transportasi laut
## 6 nissan industri kendaraan
#Data yang akan dilabelisasi
kontan <- read_excel("beritakontanid.xlsx")
head(kontan)
## # A tibble: 6 x 2
## judul kategori_manual
## <chr> <chr>
## 1 proyek jambaran tiung biru resmi salurkan gas untuk jawa timur & jawa tengah konstruksi
## 2 ojk keluarkan izin usaha pergadaian untuk danau emas gadai jawa timur keuangan
## 3 astra life buka suara terkait keluhan 24 nasabah di jawa timur keuangan
## 4 kunjungan kerja ke jawa timur, jokowi akan resmikan bendungan semantok konstruksi
## 5 duta petani milenial jawa timur berkonsolidasi membentuk badan usaha milik petani pertanian
## 6 upaya kementan dalam bangun ekosistem usaha pertanian di jawa timur industri
#Case Folding dan hapus duplikasi
kontan$judul <- tolower(kontan$judul)
kontan <- kontan[!duplicated(kontan$judul),]
head(kontan)
## # A tibble: 6 x 2
## judul kategori_manual
## <chr> <chr>
## 1 proyek jambaran tiung biru resmi salurkan gas untuk jawa timur & jawa tengah konstruksi
## 2 ojk keluarkan izin usaha pergadaian untuk danau emas gadai jawa timur keuangan
## 3 astra life buka suara terkait keluhan 24 nasabah di jawa timur keuangan
## 4 kunjungan kerja ke jawa timur, jokowi akan resmikan bendungan semantok konstruksi
## 5 duta petani milenial jawa timur berkonsolidasi membentuk badan usaha milik petani pertanian
## 6 upaya kementan dalam bangun ekosistem usaha pertanian di jawa timur industri
#Labelisasi sesuai katelapus
kontan %>%
mutate(katakunci = judul) %>%
separate_rows(katakunci, sep = ' ') %>% mutate(katakunci = tolower(katakunci)) %>% left_join(katelapus) %>%
filter(!is.na(kategori)) %>%
select(-katakunci) -> kontan2
## Joining, by = "katakunci"
#Mendapatkan kategori teks berdasarkan labelisasi kata paling sering muncul
kontan2 %>%
group_by(judul) %>%
summarise(kategori_hasil = names(sort(table(kategori), decreasing = TRUE))[1], kategori = toString(kategori),
.groups = "drop") %>%
select(judul, kategori, kategori_hasil) -> oke
#Menghapus duplikasi bila ada
oke <- oke[!duplicated(oke$judul),]
#Menggabungkan antara data awal dengan data yang berhasil dilabelisasi
gabung <- inner_join(kontan, oke, by = "judul")
head(gabung)
## # A tibble: 6 x 4
## judul kategori_manual kategori kategori_hasil
## <chr> <chr> <chr> <chr>
## 1 proyek jambaran tiung biru resmi salurkan gas untuk jawa t~ konstruksi konstruksi konstruksi
## 2 ojk keluarkan izin usaha pergadaian untuk danau emas gadai~ keuangan industri industri
## 3 astra life buka suara terkait keluhan 24 nasabah di jawa t~ keuangan keuangan keuangan
## 4 kunjungan kerja ke jawa timur, jokowi akan resmikan bendun~ konstruksi konstruksi konstruksi
## 5 duta petani milenial jawa timur berkonsolidasi membentuk b~ pertanian pertanian, industri, p~ pertanian
## 6 upaya kementan dalam bangun ekosistem usaha pertanian di j~ industri konstruksi, industri industri
#Membuat kolom baru "validasi" dengan nilai default 0
gabung$validasi <- 0
#Mengubah nilai kolom validasi menjadi 1 jika kolom kategori_manual sama dengan kolom kategori_hasil
gabung$validasi[gabung$kategori_manual == gabung$kategori_hasil] <- 1
head(gabung)
## # A tibble: 6 x 5
## judul kategori_manual kategori kategori_hasil validasi
## <chr> <chr> <chr> <chr> <dbl>
## 1 proyek jambaran tiung biru resmi salurkan gas untuk~ konstruksi konstruksi konstruksi 1
## 2 ojk keluarkan izin usaha pergadaian untuk danau ema~ keuangan industri industri 0
## 3 astra life buka suara terkait keluhan 24 nasabah di~ keuangan keuangan keuangan 1
## 4 kunjungan kerja ke jawa timur, jokowi akan resmikan~ konstruksi konstruksi konstruksi 1
## 5 duta petani milenial jawa timur berkonsolidasi memb~ pertanian pertanian, industri,~ pertanian 1
## 6 upaya kementan dalam bangun ekosistem usaha pertani~ industri konstruksi, industri industri 1
#Menghitung Akurasi Bridging Teks
cat("Akurasi dari Model Bridging Teks ini adalah sebesar", (sum(gabung$validasi == 1)/length(gabung$validasi)*100),"persen")
## Akurasi dari Model Bridging Teks ini adalah sebesar 85 persen
Dari hasil evaluasi terlihat bahwa akurasi dari hasil kategorisasi otomatis terhadap kategori manual mencapai 85 persen. Ini menunjukkan bahwa proses kategorisasi berita fenomena dapat dikatakan sangat baik. Meski demikian, proyek ini pada dasarnya masih terus berlanjut atau bersifat exercise.
Demikian sedikit sharing kita kali ini, semoga sedikit ini dapat memberi insight yang bermanfaat bagi para pembaca setia blog sederhana ini. Selamat memahami dan mempraktikkan!