Langsung ke konten utama

Natural Language Processing (NLP) Penerapan Stopwords Bahasa Indonesia dengan R: Topik Sepinya Jalur Pantura Akibat Adanya Tol Trans Jawa

Natural Language Processing : Stopwords Bahasa Indonesia dengan R Halo teman-teman, berjumpa lagi dengan blog sederhana ini. Pada pembahasan sebelumnya, kita telah bersama belajar penerapan stemming teks yang merupakan bagian dari Natural Language Processing (NLP) menggunakan R. Pada perjumpaan kali ini, kita akan melanjutkan perjuangan kita berbagi ilmu mengenai NLP, tepatnya adalah penerapan stopwords Bahasa Indonesia dengan R. Perlu diketahui bahwa di dalam NLP, untuk menambah keluasan dan mempertajam analisis teks, proses stemming teks saja belum cukup. Kita juga perlu membersihkan teks yang relatif atau mutlak tidak bermakna di dalam analisis teks. Biasanya teks yang dieliminasi dalam NLP merupakan kata penghubunga atau konjungsi, atau kata yang berupa ekspresi yang bercampur di dalam data teks, misalkan ekspresi tertawa "wkwk", ekspresi penolakan "gak, nggak, tidak, atau gk", bahasa asing (selain Indonesia), atau juga kata-kata yang tidak memenuhi kaidah ta

3 Metode Normalisasi Data dengan R

Normalisasi Data dengan R

Seringkali kita mendengar istilah data normal, acapkali kita juga mendengar istilah transformasi. Bagi teman-teman yang pernah belajar statistika, dua istilah ini pastinya tidak asing. Terlebih di dalam dunia penelitian atau riset yang selalu berkaitan dengan data, kedua istilah ini pastinya cenderung digunakan.

Sebuah data yang menyebar secara persis mengikuti sebaran distribusi teoritis normal tidaklah ada dalam kenyataan. Kalaupun ada, peluangnya tentu sangat kecil. Oleh karena itu, istilah yang biasa digunakan dalam statistika adalah pendekatan, mendekati, atau turunan dari distribusi teoritis normal itu sendiri.

Karena keniscayaan itulah biasanya dalam dunia penelitian atau riset, sebuah data yang ditengarai tidak normal dari hasil eksplorasi data akan ditransformasi atau diubah bentuknya sedemikian rupa sehingga menyebar mendekati normal. Ketidaknormalan sebuah data biasanya terjadi karena beberapa aspek, misalnya akibat satuan antar variabel yang berbeda, yang satu dalam jutaan, yang satu dalam kilometer, yang satu miliar, sementara yang satunya lagi jiwa; bisa juga diakibatkan karena di dalam data mengandung pencilan atau outlier sehingga menimbulkan gangguan bila dimodelkan dan memperbesar varians (ragam).

Dalam kesempatan kali ini, kita coba sama-sama belajar bagaimana cara menormalisasi data dengan 3 metode dulu. Sebenarnya banyak cara yang bisa dilakukan, termasuk yang populer adalah transformasi Box-Cox, namun khusus untuk transformasi Box-Cox akan kita pelajari pada unggahan berikutnya. Baik, 3 metode yang akan kita pelajari kali ini adalah metode normalisasi maksimum-minimum, normalisasi transformasi Z atau biasa dikenal dengan Z Score, dan satu lagi yaitu normalisasi Simple Feature Scalling (SFC).

Sebelum praktik dengan menggunakan R, terlebih dulu kita harus mempersiapkan datanya. Teman-teman dapat mengunduh data yang telah saya siapkan. Datanya itu bersumber dari Kementerian Lingkungan Hidup (KLH) Provinsi Jawa Timur dengan referensi tahun 2020 kemarin dengan jumlah variabelnya ada 3, yaitu Wilayah, Jumlah Sampah (Jsam), dan Jumlah Bank Sampah (Jbs), datanya bisa diunduh pada link berikut. Selanjutnya langsung saja kita praktikkan normalisasi datanya pada R dengan menggunakan beberapa code berikut:

Code:

#Instal dan Aktivasi Package readxl
install.packages("readxl")
library(readxl)

#Import data lingkungan
dataling <- read_excel("C:/Users/Joko Ade/Downloads/lingkungan.xlsx")

#melihat identitas data
names(dataling)

Hasil:

[1] "Wilayah" "Jsam"    "Jbs"

Code:

#Melihat struktur data
str(dataling)

Hasil:

tibble [38 x 3] (S3: tbl_df/tbl/data.frame)
 $ Wilayah: chr [1:38] "Pacitan" "Ponorogo" "Trenggalek" "Tulungagung" ...
 $ Jsam   : num [1:38] 104308 127432 109537 198884 154238 ...
 $ Jbs    : num [1:38] 10 6 29 30 135 8 222 25 11 39 ...

Code:

#Karena antara variabel Jsam dan Jbs timpang maka perlu normalisasi
#Normalisasi juga bisa dilakukan untuk variabel yang mempunyai satuan berbeda
#Kita normalkan untuk yang variabel Jsam dan Jbs saja
#Kita aktifkan dulu beberapa jenis normalisasi data

#Normalisasi data dengan minimum maksimum
#Membuat Fungsi Normalisasi Data
min_max_norm <- function(x){
  (x - min(x)) / (max(x) - min(x))
}

#Normalisasi data dengan Z score atau transformasi Z
transZ <- function(x){
  (x - mean(x))/sd(x)
}

#Normalisasi data dengan teknik Simple Feature Scalling
sfc <- function(x){
  x/max(x)
}

#Normalisasi minmax
#dataling[1] artinya kita hanya memanggil data kolom 1 dari dataling
#dataling[-1] artinya kita hanya memanggil data selain kolom 1 dari dataling
#Untuk memahami lebih utuh, teman-teman bisa membaca unggahan saya tentang eksplorasi subset data di link berikut
lingkungan_mimax <- data.frame(dataling[1], lapply(dataling[-1], min_max_norm))

#Melihat data frame hasil normalisasi minmax
lingkungan_mimax

Hasil:

            Wilayah       Jsam         Jbs
1           Pacitan 0.12857613 0.042372881
2          Ponorogo 0.15708061 0.025423729
3        Trenggalek 0.13502122 0.122881356
4       Tulungagung 0.24515586 0.127118644
5            Blitar 0.19012228 0.572033898
6            Kediri 0.22886509 0.033898305
7            Malang 0.47771620 0.940677966
8          Lumajang 0.22561753 0.105932203
9            Jember 0.06748802 0.046610169
10       Banyuwangi 0.56078598 0.165254237
11        Bondowoso 0.12920620 0.072033898
12        Situbondo 0.11669050 0.258474576
13      Probolinggo 0.20741984 0.063559322
14         Pasuruan 0.52330543 0.466101695
15         Sidoarjo 0.48872038 0.050847458
16        Mojokerto 0.00000000 0.000000000
17          Jombang 0.00000000 0.000000000
18          Nganjuk 0.19028976 0.135593220
19           Madiun 0.12314314 0.470338983
20          Magetan 0.12566269 0.487288136
21            Ngawi 0.16490364 0.046610169
22       Bojonegoro 0.23346805 0.114406780
23            Tuban 0.22186742 0.330508475
24         Lamongan 0.00000000 0.000000000
25           Gresik 0.14748551 0.669491525
26        Bangkalan 0.00000000 0.000000000
27          Sampang 0.10893916 0.004237288
28        Pamekasan 0.12246471 0.063559322
29          Sumenep 0.16368308 0.076271186
30      Kota Kediri 0.06790847 0.237288136
31      Kota Blitar 0.03355257 0.216101695
32      Kota Malang 0.30494624 0.000000000
33 Kota Probolinggo 0.04308075 0.156779661
34    Kota Pasuruan 0.05965415 0.004237288
35   Kota Mojokerto 0.02778222 0.258474576
36      Kota Madiun 0.05316891 0.067796610
37    Kota Surabaya 1.00000000 1.000000000
38        Kota Batu 0.00000000 0.737288136

Code:

#Normalisasi dengan transformasi Z
lingkungan_transZ <- data.frame(dataling[1], lapply(dataling[-1], transZ))

#melihat data frame hasil normalisasi transformasi Z
lingkungan_transZ

Hasil:

            Wilayah        Jsam          Jbs
1           Pacitan -0.29017265 -0.647507004
2          Ponorogo -0.14651458 -0.711086503
3        Trenggalek -0.25769044 -0.345504383
4       Tulungagung  0.29737061 -0.329609508
5            Blitar  0.02001015  1.339352342
6            Kediri  0.21526772 -0.679296753
7            Malang  1.46943764  2.722206447
8          Lumajang  0.19890054 -0.409083882
9            Jember -0.59804698 -0.631612129
10       Banyuwangi  1.88809614 -0.186555635
11        Bondowoso -0.28699718 -0.536242880
12        Situbondo -0.35007434  0.163131609
13      Probolinggo  0.10718707 -0.568032630
14         Pasuruan  1.69920012  0.941980473
15         Sidoarjo  1.52489697 -0.615717254
16        Mojokerto -0.93817584 -0.806455751
17          Jombang -0.93817584 -0.806455751
18          Nganjuk  0.02085423 -0.297819759
19           Madiun -0.31755405  0.957875348
20          Magetan -0.30485590  1.021454847
21            Ngawi -0.10708777 -0.631612129
22       Bojonegoro  0.23846594 -0.377294133
23            Tuban  0.18000062  0.433344480
24         Lamongan -0.93817584 -0.806455751
25           Gresik -0.19487239  1.704934462
26        Bangkalan -0.93817584 -0.806455751
27          Sampang -0.38913984 -0.790560876
28        Pamekasan -0.32097323 -0.568032630
29          Sumenep -0.11323923 -0.520348005
30      Kota Kediri -0.59592800  0.083657236
31      Kota Blitar -0.76907626  0.004182862
32      Kota Malang  0.59870459 -0.806455751
33 Kota Probolinggo -0.72105572 -0.218345385
34    Kota Pasuruan -0.63752846 -0.790560876
35   Kota Mojokerto -0.79815787  0.163131609
36      Kota Madiun -0.67021301 -0.552137755
37    Kota Surabaya  4.10166477  2.944734693
38        Kota Batu -0.93817584  1.959252458

Code:

#Normalisasi dengan Simple Freature Scalling
lingkungan_sfc <- data.frame(dataling[1], lapply(dataling[-1], sfc))

#Melihat data frame hasil normalisasi Simple Feature Scalling
lingkungan_sfc

Hasil:

            Wilayah       Jsam         Jbs
1           Pacitan 0.12857613 0.042372881
2          Ponorogo 0.15708061 0.025423729
3        Trenggalek 0.13502122 0.122881356
4       Tulungagung 0.24515586 0.127118644
5            Blitar 0.19012228 0.572033898
6            Kediri 0.22886509 0.033898305
7            Malang 0.47771620 0.940677966
8          Lumajang 0.22561753 0.105932203
9            Jember 0.06748802 0.046610169
10       Banyuwangi 0.56078598 0.165254237
11        Bondowoso 0.12920620 0.072033898
12        Situbondo 0.11669050 0.258474576
13      Probolinggo 0.20741984 0.063559322
14         Pasuruan 0.52330543 0.466101695
15         Sidoarjo 0.48872038 0.050847458
16        Mojokerto 0.00000000 0.000000000
17          Jombang 0.00000000 0.000000000
18          Nganjuk 0.19028976 0.135593220
19           Madiun 0.12314314 0.470338983
20          Magetan 0.12566269 0.487288136
21            Ngawi 0.16490364 0.046610169
22       Bojonegoro 0.23346805 0.114406780
23            Tuban 0.22186742 0.330508475
24         Lamongan 0.00000000 0.000000000
25           Gresik 0.14748551 0.669491525
26        Bangkalan 0.00000000 0.000000000
27          Sampang 0.10893916 0.004237288
28        Pamekasan 0.12246471 0.063559322
29          Sumenep 0.16368308 0.076271186
30      Kota Kediri 0.06790847 0.237288136
31      Kota Blitar 0.03355257 0.216101695
32      Kota Malang 0.30494624 0.000000000
33 Kota Probolinggo 0.04308075 0.156779661
34    Kota Pasuruan 0.05965415 0.004237288
35   Kota Mojokerto 0.02778222 0.258474576
36      Kota Madiun 0.05316891 0.067796610
37    Kota Surabaya 1.00000000 1.000000000
38        Kota Batu 0.00000000 0.737288136

Oke, demikian sedikit ulasan bagaimana kita melakukan normalisasi data dalam R. Jangan lupa untuk share, tanya-tanya di kolom komentar, dan menyimak unggahan berikutnya. Semoga bermanfaat.

Komentar

Postingan populer dari blog ini

Pemodelan Autoregressive Integrated Moving Average (ARIMA Model) dengan R

ARIMA dengan R Jumpa lagi teman-teman, sebelumnya saya mohon maaf karena kemarin tidak sempat membuat unggahan terbaru di blog ini. Baik, sebelumnya kita telah mengulas tentang pemodelan Geographically Weigthed Regression (GWR) dengan R. Kali ini, kita akan melanjutkan belajar bersama mengenai pemodelan yang tak asing lagi dan populer hingga kini, yaitu pemodelan Autoregressive Integrated Moving Average (ARIMA). Kita akan membahas ARIMA secara langsung tanpa membahas AR dan MA secara tersendiri mengingat pada dasarnya ARIMA adalah model perpaduan antara model AR dengan order p , MA dengan order q dan aspek differencing dengan order d . Artinya, ketika kita mendengar istilah AR(1), maka sebenarnya itu adalah ARIMA(1, 0, 0), ketika kita mendengar ARI(1,1), maka aslinya itu ARIMA(1, 1, 0), atau bila mendengar MA(3), itu sebenarnya ARIMA(0, 0, 3) atau IMA(2,1) sebenarnya adalah ARIMA(0, 2, 1). Data runtun waktu atau time series merupakan salah satu jenis data yang hingga kini banyak digun

Machine Learning: Memahami Reinforcement Learning

Reinforcement Learning Halo teman-teman, pada pembahasan sebelumnya, kita telah berusaha memahami mengenai supervised learning dan unsupervised learning . Sebelum lanjut ke pemodelan statistik selanjutnya, ada baiknya kita membahas tentang satu lagi jenis algoritma machine learning yang akhir-akhir ini banyak digunakan dalam membentuk artificial intelligence (AI), yaitu algoritma reinforcement learning . Kita ke pengertian berdasarkan studi literatur daring ( online ) dulu teman-teman. Saya coba mengambil salah satu pengertian reinforcement learning, misalkan dari situsnya Algoritma, menyatakan bahwa reinforcement learning merupakan algoritma yang diterapkan untuk pembelajaran mesin ( machine learning ) sedemikian rupa sehingga dapat menentukan aksi yang tepat dan pada akhirnya sebuah program dapat bekerja secara otomatis memberikan hasil atau putusan yang benar. Lebih lanjut dalam situs algoritma mengangkat sebuah perumpamaan reinforcement learning dengan menggunakan proses penugasan

Machine Learning: Perbedaan Supervised Learning dan Unsupervised Learning

Perbedaan supervised learning dan unsupervised learning Halo teman-teman, kemarin kita telah mengawali bahasan mengenai salah satu anggota dari Machine Learning sekaligus merupakan contoh dari algoritma supervised learning , yaitu Naive Bayes Classifier (NBC). Akhir-akhir ini, dunia sains data dihebohkan dengan berbagai istilah statistik yang berkaitan erat dengan komputasi atau komputasi statistik, yaitu supervised learning dan unsupervised learning . Sebenarnya ada lagi istilah baru dan cukup makin sulit menyederhanakan definisinya, yaitu reinforcement learning , tapi khusus reinforcement learning nanti akan kita bahas tersendiri karena kita mulai bersinggungan dengan Artificial Intelligence atau kecerdasan buatan. Jujur, saya mengakui bahwa tidak semua dari kita memiliki latar belakang apalagi pakar teknologi informasi (IT). Sehingga, bila kita cermati bahasan-bahasan atau istilah komputasi statistik, sains data, atau data engineering , kita mungkin akan sejenak loading , bahkan s