Lemmatisasi dengan R |
Pada artikel ini, kita akan membahas bersama mengenai istilah yang cukup populer dalam Natural Language Processing (NLP), yaitu Lemmatisasi (Lemmatization). Jika pada artikel sebelumnya, kita telah belajar bersama mengenai Stemming (dapat dibaca kembali pada tautan berikut) yang pada dasarnya mengubah setiap teks ke bentuk dasarnya dengan menghilangkan semua bentuk imbuhan dalam teks (awalan, akhiran, awalan dan akhiran), konsep yang serupa tapi tidak sama akan kita ulas sedikit pada proses Lemmatisasi (Lemmatization).
Dalam NLP, baik Stemming maupun Lemmatisasi memiliki tujuan yang sama, yakni mengembalikan bentuk teks (kata) berbahasa tertentu ke bentuk dasarnya (kata dasarnya). Hanya saja, yang membedakan antara Lemmatisasi dengan Stemming adalah tujuan kontekstualnya. Bila pada Stemming, sebuah kata hanya diubah ke bentuk dasarnya dengan menghapus imbuhan kata, Lemmatisasi lebih dari itu, suatu kata berimbuhan selain dikembalikan pada bentuk dasar, juga mengembalikan pada kata yang sesuai dengan tata bahasa baku standar (bahasa tertentu). Kalau data teksnya berbahasa Indonesia, proses Lemmatisasi akan mengambilkan kata berimbuhan pada kata dasar sesuai Kamus Besar Bahasa Indonesia (KBBI) atau Ejaan Bahasa Indonesia (EBI).
Kelebihan inilah yang membuat proses Lemmatisasi sedikit lebih baik daripada Stemming. Dengan Lemmatisasi, kata "pertanggungjawaban" diubah menjadi kata "tanggung" dan "jawab", bukan "tanggungjawab" yang masih terhitung sebagai satu kata, sebagaimana hasil praktik pada tautan paragraf pertama di atas.
Bagaimana caranya menerapkan proses Lemmatisasi dengan R? Sebelum praktik, setidaknya kita memerlukan 2 bahan. Pertama adalah membentuk kamus kata lama (old) dan baru (new), data kamus kata dapat diunduh pada tautan berikut. Kedua, kita perlu data teks yang dalam praktik ini, kita membuat data sendiri di R, berikut langkah-langkah melakukan proses Lemmatisasi Data Teks berbahasa Indonesia:
#Membuat Data Frame Teks atau Karakter
kata <- data.frame(teks = c("aku memakan dan meminjam pertanggungjawaban",
"memakan serta meminjam",
"baik, aku akan memakan itu"), stringsAsFactors = F)
#Melihat sekilas data
kata
## teks
## 1 aku memakan dan meminjam pertanggungjawaban
## 2 memakan serta meminjam
## 3 baik, aku akan memakan itu
#Import kamus lemmatisasi manual
library(readxl)
lemma <- read_excel("lemma.xlsx")
#Melihat sekilas data lemma
lemma
## # A tibble: 3 x 2
## old new
## <chr> <chr>
## 1 memakan makan
## 2 meminjam pinjam
## 3 pertanggungjawaban tanggung jawab
#Membuat Fungsi Lematisasi
lemmatisasi <- function(x) Reduce(function(x,r) gsub(lemma$old[r],lemma$new[r],x,fixed=T),
seq_len(nrow(lemma)),x)
#Mengubah Teks Data Frame sebagai Korpus Vektor
library(tm)
clean <- Corpus(VectorSource(kata$teks))
#Menerapkan Lematisasi dengan Fungsi yang dibuat
clean <- tm_map(clean,lemmatisasi)
## Warning in tm_map.SimpleCorpus(clean, lemmatisasi): transformation drops documents
inspect(clean)
## <<SimpleCorpus>>
## Metadata: corpus specific: 1, document level (indexed): 0
## Content: documents: 3
##
## [1] aku makan dan pinjam tanggung jawab makan serta pinjam
## [3] baik, aku akan makan itu
#Mengembalikan ke Data Frame
dataframe<-data.frame(text=unlist(sapply(clean, `[`)), stringsAsFactors=F)
#Melihat hasil
dataframe
## text
## 1 aku makan dan pinjam tanggung jawab
## 2 makan serta pinjam
## 3 baik, aku akan makan itu
Demikian sedikit sharing kita kali ini, semoga bermanfaat. Simak terus unggahan-unggahan terbaru, unik, dan menarik dari blog sederhana ini. Selamat memahami dan mempraktikkan!