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
wordcloud: Membuat word cloud, yaitu representasi visual dari frekuensi kata dalam suatu teks, di mana kata-kata yang lebih sering muncul lebih besar.
tm (Text Mining): Paket untuk analisis teks, termasuk pembuatan korpus teks, membersihkan teks, dan ekstraksi fitur teks.
textclean: Saya tidak menemukan paket ini. Mungkin ini adalah salah ketik atau paket yang belum umum digunakan.
tidytext: Memungkinkan analisis teks dengan memanfaatkan struktur data frame “tidy” dari paket tidyverse. Berguna untuk analisis teks dengan integrasi mudah dengan paket-paket lainnya.
ggplot2: Paket untuk membuat grafik dan visualisasi menggunakan grammar of graphics. parallel: Mendukung pemrograman paralel untuk mempercepat eksekusi kode dengan memanfaatkan beberapa inti prosesor.
tokenizers: Memfasilitasi tokenisasi teks, yaitu memecah teks menjadi bagian-bagian yang lebih kecil seperti kata atau frasa.
tau: Sebuah paket untuk analisis teks, terutama dalam konteks analisis sentimen dan klasifikasi teks.
NLP (Natural Language Processing): Menyediakan fungsi-fungsi dasar untuk pemrosesan bahasa alami, seperti tokenisasi dan stemming.
stringr: Membantu dalam manipulasi string, termasuk pencocokan pola, penggantian, dan manipulasi string lainnya.
devtools: Memungkinkan pengembangan dan instalasi paket R dari GitHub dan sumber lainnya.
quanteda: Alat untuk analisis kuantitatif teks, termasuk pemrosesan teks dan analisis konten.
kayadata: Saya tidak menemukan paket ini. Mungkin ini adalah paket khusus atau paket yang tidak umum digunakan.
syuzhet: Digunakan untuk analisis sentimen pada teks menggunakan pendekatan lexicon-based.
e1071: Alat untuk analisis statistik, termasuk pendukung untuk pembelajaran mesin, seperti mesin vektor pendukung (SVM).
sentimentr: Paket untuk analisis sentimen pada teks menggunakan pendekatan lexicon-based.
SentimentAnalysis: Menyediakan alat untuk analisis sentimen pada teks.
dplyr: Bagian dari tidyverse, memberikan fungsi untuk manipulasi dan pembersihan data.
pacman: Memfasilitasi manajemen paket R dengan menyederhanakan instalasi dan pemuatan paket. textstem: Membantu dalam proses stemming pada teks, yaitu mengonversi kata-kata ke bentuk dasar atau akar.
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)
as.character
pada bahasa pemrograman R digunakan untuk mengonversi objek yang termuat
dalam variable full_text ke tipe data karakter (string). Untuk fungsi
head() digunakan untuk menampilkan 6 baris pertama, pada
data variabel full_texttweets <- 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)