Text cleaning atau yang juga dikenal dengan text preprocessing, adalah proses persiapan data teks untuk di analisis lebih lanjut. Proses ini melibatkan penghapusan noise dan ketidakkonsistenan dari data untuk meningkatkan kualitas.
Berikut beberapa package yang digunakan dalam text cleaning
library(wordcloud) #menciptakan visualisasi awan kata(word cloud) dari sebuah teks.
## Loading required package: RColorBrewer
library(tm) #Melakukan penambangan, teks termasuk pembersihan teks, pengindeksan, dan representasi dokumen.
## Loading required package: NLP
library(textclean) #Membersihkan teks dari karakter atau pola tertentu.
library(tidytext) #Memanipulasi dan menganalisis data teks dengan memanfaatkan struktur data tidy.
library(ggplot2) #Membuat grafik dengan menggunakan pendekatan berbasis lapisan(layered) dalam bahasa R.
##
## Attaching package: 'ggplot2'
## The following object is masked from 'package:NLP':
##
## annotate
library(parallel) #Mempercepat beberapa operasi.
library(tokenizers) #Membagi teks menjadi token.
library(tau) #Paket analisis teks untuk bahasa R.
library(NLP) #Memproses dan menganalisis teks dalam bahasa R.
library(stringr) #Memanipulasi dan melakukan analisis string di R.
library(devtools) #Memfasilitasi pengembangan paket di R.
## Loading required package: usethis
library(quanteda) #Menganalisis teks kuantitatif.
## Warning in .recacheSubclasses(def@className, def, env): undefined subclass
## "ndiMatrix" of class "replValueSp"; definition not updated
## Warning in .recacheSubclasses(def@className, def, env): undefined subclass
## "pcorMatrix" of class "replValueSp"; definition not updated
## Warning in stringi::stri_info(): Your current locale is not in the list of
## available locales. Some functions may not work properly. Refer to
## stri_locale_list() for more details on known locale specifiers.
## Warning in stringi::stri_info(): Your current locale is not in the list of
## available locales. Some functions may not work properly. Refer to
## stri_locale_list() for more details on known locale specifiers.
## Package version: 3.3.1
## Unicode version: 13.0
## ICU version: 69.1
## Parallel computing: 2 of 2 threads used.
## See https://quanteda.io for tutorials and examples.
##
## Attaching package: 'quanteda'
## The following object is masked from 'package:tm':
##
## stopwords
## The following objects are masked from 'package:NLP':
##
## meta, meta<-
library(kayadata)
library(syuzhet) #Alat analisis sentimen.
library(e1071) #Menyediakan implementasi yang kuat untuk SVM(Support Vector Machiness) dan algoritma dalam statistik.
library(sentimentr) #Paket analisis sentimen di R.
##
## Attaching package: 'sentimentr'
## The following object is masked from 'package:syuzhet':
##
## get_sentences
library(SentimentAnalysis) #Alat analisis sentimen di R.
##
## Attaching package: 'SentimentAnalysis'
## The following object is masked from 'package:base':
##
## write
library(dplyr) #Memanipulasi dan menggabungkan data frame dengan cara yang bersih dan efisien.
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(pacman) #Mengurai kata-kata dalam teks menjadi bentuk dasar (stemming).
pacman::p_load_gh("trinker/textstem")
pacman::p_load(textstem, dplyr)
library(readr)
##
## Attaching package: 'readr'
## The following object is masked from 'package:koRpus':
##
## tokenize
## The following object is masked from 'package:tau':
##
## tokenize
GUNUNG <- read_csv("C:/Users/ASUS/Documents/SEMESTER 5/KOMPSTAT LANJUT/GUNUNG.csv")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
## Rows: 113 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (8): created_at, full_text, quote_count, lang, username, tweet_url, imag...
## dbl (6): id_str, reply_count, retweet_count, favorite_count, user_id_str, co...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
text <- GUNUNG$full_text
head(text)
## [1] "Khutbah terakhir Nabi Muhammad Shallallahu 'Alaihi wa Sallam. Khutbah ini disampaikan pada 9hb Zulhijjah Tahun 10 hijriyyah di Lembah Uranah Gunung Arafah🥀 https://t.co/g3XwwMslnW"
## [2] "Video pendaki saat erupsi terjadi di gunung Merapi Sumbar (3/12/2023) https://t.co/YjZ2gapv9n"
## [3] "Dua gunung berapi Mauna Loa dan Kilauea meletus di samudera Pasifik https://t.co/mpcSfLjbKu"
## [4] "Pendirian Dapur Umum Untuk Korban Erupsi Gunung Marapi #BersamaHadapiBencana Wujud Bentuk Simpati Polri melalui Polda Sumatera Barat (Sumbar) mendirikan dapur umum untuk masyarakat terdampak erupsi Gunung Marapi Sumbar Selasa (5/12). https://t.co/KYw7C7vigX"
## [5] "Rabu sore Gunung Marapi udah siap di doggy Butet cowo on sosmed bantu teman wa aja SALMA LAH . #VCS https://t.co/XbojA6yFKF"
## [6] "Bagi yang tidak tahu. Jika anda ke Semporna akan menaiki Flight Ke Tawau Maka anda akan dapat melihat Gunung Kinabalu tersergam indah dekat didepan mata. I kali pertama nampak dari dalam Flight. Rasa dekat sangat ⛰️✈️ https://t.co/PCLs2ksWBr"
Berikut langkah-langkah dalam melakukan text cleaning.
Lower case
Dalam proses text cleaning, langkah lower case adalah proses konversi semua huruf dalam teks menjadi huruf kecil. Proses ini dilakukan untuk menghilangkan sensitivitas huruf besar/kecil.
text <- tolower(text)
head(text)
## [1] "khutbah terakhir nabi muhammad shallallahu 'alaihi wa sallam. khutbah ini disampaikan pada 9hb zulhijjah tahun 10 hijriyyah di lembah uranah gunung arafah🥴 https://t.co/g3xwwmslnw"
## [2] "video pendaki saat erupsi terjadi di gunung merapi sumbar (3/12/2023) https://t.co/yjz2gapv9n"
## [3] "dua gunung berapi mauna loa dan kilauea meletus di samudera pasifik https://t.co/mpcsfljbku"
## [4] "pendirian dapur umum untuk korban erupsi gunung marapi #bersamahadapibencana wujud bentuk simpati polri melalui polda sumatera barat (sumbar) mendirikan dapur umum untuk masyarakat terdampak erupsi gunung marapi sumbar selasa (5/12). https://t.co/kyw7c7vigx"
## [5] "rabu sore gunung marapi udah siap di doggy butet cowo on sosmed bantu teman wa aja salma lah . #vcs https://t.co/xboja6yfkf"
## [6] "bagi yang tidak tahu. jika anda ke semporna akan menaiki flight ke tawau maka anda akan dapat melihat gunung kinabalu tersergam indah dekat didepan mata. i kali pertama nampak dari dalam flight. rasa dekat sangat ⛰️✈️ https://t.co/pcls2kswbr"
Fungsi tolower() dalam R digunakan untuk mengkonversi huruf kapital menjadi huruf kecil.
text <- replace_contraction(text)
head(text)
## [1] "khutbah terakhir nabi muhammad shallallahu 'alaihi wa sallam. khutbah ini disampaikan pada 9hb zulhijjah tahun 10 hijriyyah di lembah uranah gunung arafah🥴 https://t.co/g3xwwmslnw"
## [2] "video pendaki saat erupsi terjadi di gunung merapi sumbar (3/12/2023) https://t.co/yjz2gapv9n"
## [3] "dua gunung berapi mauna loa dan kilauea meletus di samudera pasifik https://t.co/mpcsfljbku"
## [4] "pendirian dapur umum untuk korban erupsi gunung marapi #bersamahadapibencana wujud bentuk simpati polri melalui polda sumatera barat (sumbar) mendirikan dapur umum untuk masyarakat terdampak erupsi gunung marapi sumbar selasa (5/12). https://t.co/kyw7c7vigx"
## [5] "rabu sore gunung marapi udah siap di doggy butet cowo on sosmed bantu teman wa aja salma lah . #vcs https://t.co/xboja6yfkf"
## [6] "bagi yang tidak tahu. jika anda ke semporna akan menaiki flight ke tawau maka anda akan dapat melihat gunung kinabalu tersergam indah dekat didepan mata. i kali pertama nampak dari dalam flight. rasa dekat sangat ⛰️✈️ https://t.co/pcls2kswbr"
Fungsi replace_contraction() dalam R digunakan untuk mengganti kontraksi dengan bentuk lengkapnya. Kontraksi yang dimaksud disini adalah kata yang dibentuk dengan menggabungkan dua kata atau lebih menjadi satu kata.
text <- replace_word_elongation(text)
head(text)
## [1] "khutbah terakhir nabi muhammad shallallahu 'alaihi wa sallam. khutbah ini disampaikan pada 9hb zulhijjah tahun 10 hijriyyah di lembah uranah gunung arafah🥴 https://t.co/g3xwwmslnw"
## [2] "video pendaki saat erupsi terjadi di gunung merapi sumbar (3/12/2023) https://t.co/yjz2gapv9n"
## [3] "dua gunung berapi mauna loa dan kilauea meletus di samudera pasifik https://t.co/mpcsfljbku"
## [4] "pendirian dapur umum untuk korban erupsi gunung marapi #bersamahadapibencana wujud bentuk simpati polri melalui polda sumatera barat (sumbar) mendirikan dapur umum untuk masyarakat terdampak erupsi gunung marapi sumbar selasa (5/12). https://t.co/kyw7c7vigx"
## [5] "rabu sore gunung marapi udah siap di doggy butet cowo on sosmed bantu teman wa aja salma lah . #vcs https://t.co/xboja6yfkf"
## [6] "bagi yang tidak tahu. jika anda ke semporna akan menaiki flight ke tawau maka anda akan dapat melihat gunung kinabalu tersergam indah dekat didepan mata. i kali pertama nampak dari dalam flight. rasa dekat sangat ⛰️✈️ https://t.co/pcls2kswbr"
Fungsi replace_word_elongation() dalam R yang digunakan untuk menganti kata yang di elongasi dengan bentuk aslinya.Elongasi adalah proses pemanjangan kata dengan menambahkan satu atau lebih huruf.
text <- strip(text)
head(text)
## [1] "khutbah terakhir nabi muhammad shallallahu 'alaihi wa sallam khutbah ini disampaikan pada hb zulhijjah tahun hijriyyah di lembah uranah gunung arafah🥴 httpstcog xwwmslnw"
## [2] "video pendaki saat erupsi terjadi di gunung merapi sumbar httpstcoyjz gapv n"
## [3] "dua gunung berapi mauna loa dan kilauea meletus di samudera pasifik httpstcompcsfljbku"
## [4] "pendirian dapur umum untuk korban erupsi gunung marapi bersamahadapibencana wujud bentuk simpati polri melalui polda sumatera barat sumbar mendirikan dapur umum untuk masyarakat terdampak erupsi gunung marapi sumbar selasa httpstcokyw c vigx"
## [5] "rabu sore gunung marapi udah siap di doggy butet cowo on sosmed bantu teman wa aja salma lah vcs httpstcoxboja yfkf"
## [6] "bagi yang tidak tahu jika anda ke semporna akan menaiki flight ke tawau maka anda akan dapat melihat gunung kinabalu tersergam indah dekat didepan mata i kali pertama nampak dari dalam flight rasa dekat sangat httpstcopcls kswbr"
Fungsi strip() dalam R dugunakan untuk menghapus karakter tertentu dari awal dan akhir suatu string.
Stemming/lemmatisasi
Stemming/Lemmatisasi merupakan proses yang digunakan untuk mengurangi kata ke benttuk dasarnya.Lemmatisasi dapat menghasilkan lemma yang lebih akurat daripada stemming, karena lemmatisasi mempertimbangkan konteks kata dalam kalimat.
text <- stem_strings(text)
text <- lemmatize_strings(text)
head(text)
## [1] "khutbah terakhir nabi muhammad shallallahu 'alaihi wa sallam khutbah ini disampaikan pada hb zulhijjah tahun hijriyyah di lembah uranah gunung arafah🥴 httpstcog xwwmslnw"
## [2] "video pendaki saat erupsi terjadi di gunung merapi sumbar httpstcoyjz gapv n"
## [3] "dua gunung berapi mauna loa dan kilauea meletu di samudera pasifik httpstcompcsfljbku"
## [4] "pendirian dapur umum untuk korban erupsi gunung marapi bersamahadapibencana wujud bentuk simpati polri melalui polda sumatera barat sumbar mendirikan dapur umum untuk masyarakat terdampak erupsi gunung marapi sumbar selasa httpstcokyw c vigx"
## [5] "rabu sore gunung marapi udah siap di doggi butet cowo on sosm bantu teman wa aja salma lah vc httpstcoxboja yfkf"
## [6] "bagi yang tidak tahu jika anda ke semporna akan menaiki flight ke tawau maka anda akan dapat melihat gunung kinabalu tersergam indah dekat didepan mata i kali pertama nampak dari dalam flight rasa dekat sangat httpstcopcl kswbr"
Fungsi stem_strings() dalam R digunakan untuk melakukan stemming pada text.
Fungsi lemmatize_strings() dalam R digunakan untuk melakukan lemmatisasi pada text.
Tokensasi
Tokensasi adalah metode untuk melakukan pemisahan kata dalam suatu kalimat.
text <- text %>%
rev()
head(text)
## [1] "gunung marapi yang berlokasi di sumatera barat erupsi pada pukul wib gunung marapi saat ini berada pada statu level il atau waspada masyarakan maupun wisatawan tidak diperbolehkan mendaki gunung marapi pada radiu km dari kawah puncak httpstcoseysbi kr"
## [2] "gunung marapi erupsi httpstcoii ttq ij"
## [3] "polda sumbar buka dapur umum untuk korban erupsi gunung marapi respect nih itu wujud bentuk simpati polri terhadap masyarakat mari bersamahadapibencana httpstcoltrxwndgki"
## [4] "omg help him realiz hello dream gui naik gunung dan pensiun"
## [5] "terima kasih para relawan tni maupun polri dalam misi penyelamatan pendaki gunung marapi singgalang httpstcodsgkcjqcn"
## [6] "curug sarebu gunung halimun salak di perkirakan hampir kilo dari tempat parkir💵 httpstcohyo have ak k"
text <-removeWords(text, c("terhadap","lagi","semoga","orang","bersama","hadapi","amp","bisa","kalau","akan","untuk","lah","marapi","tim","dan","sumbar","satu","tidak","setelah","prose","dalam","dengan","jawathe","pada","dec","httpstco","para","pak","saat","ada","umum","salma","saya","juga","masih","pilpr","bentuk","year","ini","yang","sudah","tahun","terjadi","that","tengah","kita","kita","teru","meletu","prabowo","meletu","jangan","sangat","video","hari","aku","the","dari","jalan","melakukan","pensiun","barat","jerai","httpstcoi","climagram","tapi","anak","you","tolong","dapur","ikut","wujud","kota","kalah","tanggal","gibran","abu","itu","bersamahadapibencana","kerja","paper","nasion","desemb","selamat","have","istri","udah","mereka","padah","with","oleh","melalui","lie"))
Fungsi removeWords() dalam R digunakan untuk menghilangkan kata-kata tertentu dari text.
WordCloud adaah gambar yang menunjukkan daftar kata-kata yang digunakan dalam sebuah text, umumnya semakin banyak frekuensi kata dalam sebuah text semakin besar ukuran kata tersebut dalam gambar.
#Mengubah Data Frame Menjadi Data Faktor
tdm <- TermDocumentMatrix(text)
m <- as.matrix(tdm)
v <- sort(rowSums(m),decreasing = TRUE)
#Mengubah Data Faktor Menjadi Data Frame
d <- data.frame(word = names(v), freq = v)
wordcloud(d$word, d$freq,
random.order = FALSE,
max.words = 25,
colors = brewer.pal(name = "Dark2",8 ))
tdm <- TermDocumentMatrix(text,
control = list(wordLengths = c(1, Inf)))
tdm
## <<TermDocumentMatrix (terms: 1486, documents: 113)>>
## Non-/sparse entries: 2191/165727
## Sparsity : 99%
## Maximal term length: 42
## Weighting : term frequency (tf)
Fungsi TermDocumentMatrix() dalam R yang digunakan untuk membuat matriks yang mewakili hubungan antara istilah(kata).
Fungsi as.matrix() dalam R yang digunakan untuk mengubah objek R kedalam bentuk matriks.