Text Cleaning dengan Spelling Bahasa Indonesia

By | July 30, 2024
2,531 Views

Text Cleaning dengan Spelling Bahasa Indonesia – Text cleaning menggunakan library TM yang telah dibahas sebelumnya mengingatkan bahwa urutan cleaning menjadi sangat penting. Hal ini menjadi maklum kerja bahasa itu berkembang sesuai penutur, terdapat banyak istilah-istilah baru sehingga perbaikan kamus mutlak perlu dilakukan.

Namun urusan stopword dan stemming tidaklah cukup! karena untuk urusan typo/salah ketik tentu stopword dan stemming bukanlah solusi yang tepat! Misalkan kata “tidaaak” tentu akan lolos begitu saja karena didalam stopword berisi kata “tidak”. Oleh hal tersebut butuh yang namanya penghilangan karakter berlebih seperti kata berikut “sayaaa harus bekerjaaaaa kerassss”. Kita akan menggunakan teknik Levenshtein distance.

Contoh aplikasi yang menerapkan spelling bahasa indonesia yaitu https://softscients.com/2021/07/10/release-aplikasi-cleaning-text/

atau langsung saja ke aplikasinya https://mulkan.shinyapps.io/Text_Cleaning

Levenshtein distance

Levenshtein distance adalah sebuah matriks string yang digunakan untuk mengukur perbedaan atau jarak (distance) antara dua string. Nilai distance antara dua string ini ditentukan oleh jumlah minimum dari operasi-operasi perubahan yang diperlukan untuk melakukan transformasi dari suatu string menjadi string lainnya. Operasi-operasi tersebut adalah penyisipan (insertion), penghapusan (deletion), atau penukaran (subtitution). Levenshtein distance merupakan salah satu algoritma yang dapat digunakan dalam mendeteksi kemiripan antara dua string yang berpotensi melakukan tindak plagiarisme

Operasi-Operasi pada Levenshtein Distance

Pada algoritma Levenshtein distance, terdapat tiga macam operasi yang dapat dilakukan yaitu

  1. Operasi Penyisipan Karakter (Insertion): Operasi penyisipan karakter berarti menyisipkan karakter ke dalam suatu string. Contohnya string ‘disrit’ menjadi string ‘diskrit’, dilakukan penyisipan karakter ‘k’ di akhir string. Penyisipan karakter tidak hanya dilakukan di tengah string, namun bisa disisipkan diawal maupun disisipkan diakhir string.
  2. Operasi Penghapusan Karakter (Deletion): Operasi penghapusan karakter dilakukan untuk menghilangkan karakter dari suatu string. Contohnya string ‘matematikan’ karakter terakhir dihilangkan sehingga menjadi string ‘matematika’. Pada operasi ini dilakukan penghapusan karakter ‘n’
  3. Operasi Penukaran Karakter (Subtitution): Operasi penukaran karakter merupakan operasi menukar sebuah karakter dengan karakter lain. Contohnya penulis menuliskan string ‘gimpunan’ menjadi ‘himpunan’. Dalam kasus ini karakter ‘g’ yang terdapat pada awal string, diganti dengan huruf ‘h’
See also  Cleaning Text Bahasa Indonesia

Algoritma Levenshtein distance

  1. Langkah 1 inisialisasi
    1. Hitung panjang S dan T, misalkan m dan n
    2. Buat matriks berukuran 0…m baris dan 0…n kolom
    3. Inisialisasi baris pertama dengan 0…n
    4. Inisialisasi kolom pertama dengan 0…m
  2. Langkah 2 Proses
    1. Periksa S[i] untuk 1 < i < n
    2. Periksa T[j] untuk 1 < j < m
    3. Jika S[i] = T[j], maka entrinya adalah nilai yang terletak pada tepat didiagonal atas sebelah kiri, yaitu d[i,j] = d[i-1,j-1]
    4. Jika S[i] ≠ T[j], maka entrinya adalah d[i,j] minimum dari:
      • Nilai yang terletak tepat diatasnya, ditambah satu, yaitu d[i,j-1]+1
      • Nilai yang terletak tepat dikirinya, ditambah satu, yaitu d[i-1,j]+1
      • terletak pada tepat didiagonal atas sebelah kirinya, ditambah satu, yaitu d[i-1,j-1]+1
  3. Langkah 3: Hasil entri matriks pada baris ke-i dan kolom ke j, yaitu d[i,j]
  4. Langkah 2 diulang hingga entri d[m,n] ditemukan.

Bila kalian susah memahami algoritma diatas, silahkan kunjungi disini.  Didalam R sudah ada function untuk menghitung Levenshtein distance yaitu adist

Penerapan Spelling Bahasa Indonesia

Mari kita terapkan, terlebih dahulu kita download xlsx kamus bahasa indonesianya dulu disini. Selanjutnya kita buat function nya.

library(dplyr)
library(openxlsx)

kam = read.xlsx('indonesia.xlsx')

cekKBBI<-function(salah_eja,kam){
  index = adist(salah_eja,kam$KBBI) # edit distance 0
  return (kam$KBBI[which.min(index)])

}

Sekarang kita panggil Text Cleaning dengan Spelling Bahasa Indonesia

salah_eja = 'yuukk'
hasil = cekKBBI(salah_eja,kam)
print(paste(salah_eja,hasil,sep=' dibetulkan menjadi '))

hasilnya

[1] "yuukk dibetulkan menjadi  yuk"

Contoh yang lain

"jalaaan dibetulkan menjadi  jalanan"
"ennaaak dibetulkan menjadi  enak"

Text Cleaning dengan Spelling dengan metode Levenshtein distance akan menghasilkan akurasi tinggi ketika menggunakan kamus KBBI dengan baik.

Download Kamus KBBI Indonesia

Untuk kamus KBBI Indonesia diambil di indonesia atau langsung saja  ke http://indodic.com/SpellCheckInstall.html

Spelling di Office Word

Hemm sebenarnya algoritma diatas digunakan untuk text minning untuk dataset yang sangat besar, tapi kalau di aplikasi word office bisa kalian baca disini https://softscients.com/2020/05/18/persiapan-menulis-tugas-akhir/

See also  Text cleaning menggunakan library TM

Ref:

https://blog.paperspace.com/measuring-text-similarity-using-levenshtein-distance/

https://www.statology.org/levenshtein-distance-in-r/

https://www.r-bloggers.com/2019/04/natural-language-processing-in-r-edit-distance/

https://www.kdnuggets.com/2020/10/optimizing-levenshtein-distance-measuring-text-similarity.html