Text cleaning pada data tweet adalah proses pembersihan atau preprocessing data teks yang berasal dari tweet agar data tersebut lebih mudah diolah dan mewakili informasi dengan lebih baik. Data tweet seringkali memerlukan langkah-langkah khusus dalam proses cleaning karena ciri-ciri uniknya, seperti penggunaan singkatan, emotikon, karakter khusus, dan hyperlink.
library(readr)
Hujan <- read_delim("Hujan (1).csv", delim = ";", 
    escape_double = FALSE, trim_ws = TRUE)
## Rows: 110 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (5): created_at, full_text, lang, username, tweet_url
## dbl (7): id_str, quote_count, reply_count, retweet_count, favorite_count, us...
## 
## ℹ 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.
tweet <-Hujan

#Menginstal paket yang diperlukan dalam melakukan text cleaning

library(wordcloud)
library(tm)
library(textclean)
library(tidytext)
library(ggplot2)
library(parallel)
library(tokenizers)
library(tau)
library(NLP)
library(stringr)
library(devtools)
library(quanteda)
library(kayadata)
library(syuzhet)
library(e1071)
library(sentimentr)
library(SentimentAnalysis)
library(dplyr)
library(pacman)
pacman::p_load_gh("trinker/textstem")
pacman::p_load(textstem, dplyr)
tweets <- tweet$full_text %>% 
  as.character()
head(tweets)
## [1] "Hai #Sobatjdih hujan deras buat tanah berlumpur ke selokanlah mengalirnya Tunjangan Kinerja bagi PPPK sudah diatur Yuk cek besarannya Link: https://t.co/NYBcBo13vs... #jdihkpu_ri #jdihkpu_kepri #Tukin_PPPK #Kpts_1357_2023 @JDIHKPU_RI https://t.co/ckAdIy787g"
## [2] "Alhamdullah, hujan deras. Walaupun disertai angin kencang dan mati listrik."                                                                                                                                                                                      
## [3] "@Neng_sofyy Sore Jeng.. Disini hujan deras pakai bawa² angin lagi.. Plus mati lampu.. 😴  Kelon enak ini.. 🤭  Tempat njenengan dah turun hujan juga?"                                                                                                            
## [4] "@convomf tadi hujan deras + angin nya terlalu kenceng malah 🥹"                                                                                                                                                                                                    
## [5] "Hujan deras ini bener bener membantuku meringankan tugas siram siram tanduran.."                                                                                                                                                                                  
## [6] "Hujan deras mengawali pertanda akan memasuki musim cuddle"
# lower case = mengubah huruf kapital menjadi huruf kecil
tweets <- tolower(tweets)
head(tweets)
## [1] "hai #sobatjdih hujan deras buat tanah berlumpur ke selokanlah mengalirnya tunjangan kinerja bagi pppk sudah diatur yuk cek besarannya link: https://t.co/nybcbo13vs... #jdihkpu_ri #jdihkpu_kepri #tukin_pppk #kpts_1357_2023 @jdihkpu_ri https://t.co/ckadiy787g"
## [2] "alhamdullah, hujan deras. walaupun disertai angin kencang dan mati listrik."                                                                                                                                                                                      
## [3] "@neng_sofyy sore jeng.. disini hujan deras pakai bawa² angin lagi.. plus mati lampu.. 🕮  kelon enak ini.. 🥮  tempat njenengan dah turun hujan juga?"                                                                                                             
## [4] "@convomf tadi hujan deras + angin nya terlalu kenceng malah 🯮"                                                                                                                                                                                                    
## [5] "hujan deras ini bener bener membantuku meringankan tugas siram siram tanduran.."                                                                                                                                                                                  
## [6] "hujan deras mengawali pertanda akan memasuki musim cuddle"
#Mengembalikan Kata yang disingkat Menjadi Kata Aslinya
tweets <- replace_contraction(tweets)
head(tweets)
## [1] "hai #sobatjdih hujan deras buat tanah berlumpur ke selokanlah mengalirnya tunjangan kinerja bagi pppk sudah diatur yuk cek besarannya link: https://t.co/nybcbo13vs... #jdihkpu_ri #jdihkpu_kepri #tukin_pppk #kpts_1357_2023 @jdihkpu_ri https://t.co/ckadiy787g"
## [2] "alhamdullah, hujan deras. walaupun disertai angin kencang dan mati listrik."                                                                                                                                                                                      
## [3] "@neng_sofyy sore jeng.. disini hujan deras pakai bawa² angin lagi.. plus mati lampu.. 🕮  kelon enak ini.. 🥮  tempat njenengan dah turun hujan juga?"                                                                                                             
## [4] "@convomf tadi hujan deras + angin nya terlalu kenceng malah 🯮"                                                                                                                                                                                                    
## [5] "hujan deras ini bener bener membantuku meringankan tugas siram siram tanduran.."                                                                                                                                                                                  
## [6] "hujan deras mengawali pertanda akan memasuki musim cuddle"
#Mengembalikan Kata yang Mengalami Perpanjangan Menjadi Kata Aslinya
tweets <- replace_word_elongation(tweets)
head(tweets)
## [1] "hai #sobatjdih hujan deras buat tanah berlumpur ke selokanlah mengalirnya tunjangan kinerja bagi pk sudah diatur yuk cek besarannya link: https://t.co/nybcbo13vs... #jdihkpu_ri #jdihkpu_kepri #tukin_pk #kpts_1357_2023 @jdihkpu_ri https://t.co/ckadiy787g"
## [2] "alhamdullah, hujan deras. walaupun disertai angin kencang dan mati listrik."                                                                                                                                                                                  
## [3] "@neng_sofyy sore jeng.. disini hujan deras pakai bawa² angin lagi.. plus mati lampu.. 🕮  kelon enak ini.. 🥮  tempat njenengan dah turun hujan juga?"                                                                                                         
## [4] "@convomf tadi hujan deras + angin nya terlalu kenceng malah 🯮"                                                                                                                                                                                                
## [5] "hujan deras ini bener bener membantuku meringankan tugas siram siram tanduran.."                                                                                                                                                                              
## [6] "hujan deras mengawali pertanda akan memasuki musim cuddle"
# remove mentions 
tweets <- tweets %>% 
  replace_tag(tweets, pattern = "@([A-Za-z0-9_]+)",replacement="") %>%  # remove mentions
  replace_hash(tweets, pattern = "#([A-Za-z0-9_]+)",replacement="")      # remove hashtags
#Menghapus simbol
tweets <- strip(tweets)
head(tweets)
## [1] "hai hujan deras buat tanah berlumpur ke selokanlah mengalirnya tunjangan kinerja bagi pk sudah diatur yuk cek besarannya link httpstconybcbo vs httpstcockadiy g"
## [2] "alhamdullah hujan deras walaupun disertai angin kencang dan mati listrik"                                                                                        
## [3] "sore jeng disini hujan deras pakai bawa angin lagi plus mati lampu 🟲 kelon enak ini 🯲 tempat njenengan dah turun hujan juga"                                     
## [4] "tadi hujan deras angin nya terlalu kenceng malah 🡤"                                                                                                              
## [5] "hujan deras ini bener bener membantuku meringankan tugas siram siram tanduran"                                                                                   
## [6] "hujan deras mengawali pertanda akan memasuki musim cuddle"
#tokenisasi = metode untuk melakukan pemisahan kata dalam suatu kalimat dengan

tweets <- tweets%>%
 rev()

head(tweets)
## [1] "hujan deras beserta angin di daerah pemkot cimahi httpstco eovl q h"                                 
## [2] "bandung hujan nya deras banget angin nya kenceng stay safe buat yang lagi di luar httpstcogfiel egcp"
## [3] "akhirnya hujan deras lumayan udah menit masih lanjut terus"                                          
## [4] "hujan deras"                                                                                         
## [5] "udah lama gak liat hujan deras httpstcojchs ngvz"                                                    
## [6] "akhirnya hujan deras httpstcocuxrg qvnj"
#menghapus kata penghubung
tweets<-removeWords(tweets, c("wed", "jalan", "kan","face", "oktober","oct","cimahi","loudly","with","pensive","nanti","crying","ada", "dari","udah","juga","lagi","alhamdulillah","aja","kenceng", "cukup","malang", "tuh","jadi","nya","nanti","bgt","bpbd","terus","buat","setelah","banget","mau","juga","sore","trs","siang","tapi","aku","rumah","pulang","turun","dareah","semoga","hari","kemarin","udh","gue","ini","dan","yang","sudah", "akan","kalau","lebih","bisa","httpstco","sih","kepada","datang","tempat","masih"))
##Membuat Word Cloud
#Mengubah Data Frame Menjadi Data Faktor
tdm <- TermDocumentMatrix(tweets)
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 = 20,
          colors = brewer.pal(name = "Dark2", 8 ))

tdm <- TermDocumentMatrix(tweets,
                          control = list(wordLengths = c(1, Inf)))
tdm
## <<TermDocumentMatrix (terms: 601, documents: 110)>>
## Non-/sparse entries: 1002/65108
## Sparsity           : 98%
## Maximal term length: 18
## Weighting          : term frequency (tf)
Representasi TermDocumentMatrix (TDM) menunjukkan bahwa dalam koleksi 110 dokumen, terdapat 606 kata unik yang diidentifikasi. Tingkat sparsitas yang tinggi sebesar 98% menandakan bahwa sebagian besar kata-kata tidak muncul dalam setiap dokumen, mengindikasikan variasi yang besar dalam penggunaan kata-kata di antara dokumen-dokumen tersebut. Bobot term frequency (tf) menunjukkan bahwa representasi matriks didasarkan pada seberapa sering kata-kata muncul dalam keseluruhan dataset. Panjang kata maksimal dalam dokumen adalah 18 karakter. Dengan nilai-nilai ini, kita dapat mengenali karakteristik utama dari dataset teks, memungkinkan analisis lebih lanjut terhadap pola dan tren yang mungkin terdapat dalam teks tersebut.
write.csv(tweets, file = "C:/Users/LENOVO/Downloads/text Cleaning.csv", row.names = FALSE)