Bagaimana Mengubah Data Tidak Terstruktur menjadi Data Terstruktur dengan REGEX R?

How to make structured data from unstructured data (text) using REGEX R?

Dalam dunia Data Science, kehadiran Big Data menjadi tantangan besar. Bagaimana sebuah data yang berukuran besar, berkecepatan update yang tinggi, memerlukan piranti penyimpan besar, bervariasi, dan mengandung kompleksitas di dalamnya mampu untuk diolah secara benar agar menghasilkan insight sekaligus nilai tambah (value added) bagi perencanaan pembangunan berbasis data.

Sebagaimana bahasan-bahasan sebelumnya mengenai pemanfaatan salah satu elemen Natural Language Processing (NLP), yaitu gsub(), sub(), grep(), setidaknya kita telah mempunyai bekal minimal untuk dapat menangani aspek kompleksitas dan variasi dari Big Data. Bagi sahabat yang hendak mempelajari bahasana mengenai 3 fungsi yang telah disebutkan dapat berkunjung pada tautan berikut [1], [2], [3], [4].

Pada bagian ini, kita akan mencoba mempraktikkan kombinasi dari berbagai jenis Regular Expression (REGEX) R. Adapun tujuan dari praktik kali ini adalah untuk mentransformasi atau mengkonversi data tidak terstruktur (unstructured data) menjadi data terstruktur (structured data). Kita cukup memakai fungsi gsub() namun dengan berbagai bentuk kombinasi REGEX untuk memperoleh informasi dari data teks.

Kita ambil sebuah data teks yang berasal dari Twitter. Data ini sebenarnya merupakan data update situs Pusat Informasi Harga Pangan Strategis Nasional (PIHPS Nasional). Sebuah situs besutan Bank Indonesia sebagai upaya pemerintah menyediakan data-data terkini mengenai perkembangan harga sejumlah komoditas strategis baik menurut wilayah maupun waktu. Data update PIHPS ini kemudian disebarkan oleh sebuah robot di Twitter sehingga hanya berbentuk teks. Bagaimana keseruannya? Yuk check this out!!!....

teks <- "30/01/2023: Harga Minyak Goreng Kemasan Bermerk 1 (kg) di :

⛺ Pasar Tradisional : Rp21.700,-
🏪 Pasar Modern : Rp22.850,-
🎪 Pedagang Besar : Rp19.500,-
👨🏻‍🌾 Produsen : Rp16.149,-"

teks
## [1] "30/01/2023: Harga Minyak Goreng Kemasan Bermerk 1 (kg) di :\n\n<U+26FA> Pasar Tradisional : Rp21.700,-\n<U+0001F3EA> Pasar Modern : Rp22.850,-\n<U+0001F3AA> Pedagang Besar : Rp19.500,-\n<U+0001F468><U+0001F3FB><U+200D><U+0001F33E> Produsen : Rp16.149,-"
#Mendapatkan tanggal
gsub(":.*", "",teks) -> tgl
tgl
## [1] "30/01/2023"
#Mendapatkan komoditas
gsub(".*Harga | 1 .*", "", teks) -> komoditas
komoditas
## [1] "Minyak Goreng Kemasan Bermerk"
#Mendapatkan satuan
gsub(".*1 [(]|[)].*","", teks) -> satuan
satuan
## [1] "kg"
#Mendapatkan Harga Pasar Tradisional
gsub(".*di :| : R.* |\n\n\u26fa Pasar Tradisional : Rp|,-.*", "", teks) -> HPT
HPT
## [1] "16.149"
#Mendapatkan Harga Pasar Moderen
gsub(".*di :| : R.*|.*,-\n\U0001f3ea Pasar Modern : Rp|,-.*", "", teks) -> HPM
HPM
## [1] "22.850"
#Mendapatkan Harga Pedagang Besar
gsub(".*di :| : R.*|.*,-\n\U0001f3aa Pedagang Besar : Rp|,-.*", "", teks) -> HPB
HPB
## [1] "19.500"
#Mendapatkan Harga Produsen
gsub(".* : Rp|,-.*", "", teks) -> HP
HP
## [1] "16.149"
#Merekap dalam sebuah dataframe
dataharga <- data.frame(cbind(Tanggal = tgl,Komoditas = komoditas, Satuan = satuan,  
                              PT = HPT, PM = HPM, PB = HPB, P = HP))
dataharga
data frame hasil olah dengan regex R

Dari teks tersebut, terlihat yang awalnya merupakan data tidak terstruktur, kini berubah menjadi data terstruktur dan rapih. Insight-nya pun juga lebih mudah dibaca dan dipahami. Bahwa pada tanggal 30 Januari 2023, harga komoditas minyak goreng kemasan bermerek paling murah di tingkat produsen hanya seharga Rp. 16.149,- per kgnya, lalu sampai di konsumen yang terpantau pada pasar modern mencapai Rp. 22.850,-. Terdapat selisih harga sebesar Rp. 6.701,- per kilogramnya yang tersedia untuk biaya transportasi hingga ruang keuntungan penjualan minyak goreng bermerek.

Demikian sedikit sharing kita kali ini. Semoga sedikit ini dapat bermanfaat bagi pembaca setia blog sederhana ini. Jangan lupa untuk tetap stay tune menantikan sajian artikel menarik lainnya. Selamat memahami dan mempraktikkan!

Add Comments


EmoticonEmoticon