Text Mining Using R (Bahasa)

Veronica Yolanda
4 min readNov 24, 2021

--

Assalamu’alaikum Warahmatullahi Wabarakaatuh teman-teman,

Text mining memiliki definisi menambang data yang berupa teks dimana sumber data biasanya di dapatkan dari dokumen, dan tujuannya adalah mencari kata-kata yang dapat mewakili isi dari dokumen sehingga dapat dilakukan analisa keterhubungan antardokumen.

Tujuan dari text mining adalah untuk mendapatkan informasi yang berguna dari sekumpulan dokumen. Jadi, sumber data yang digunakan pada text mining adalah kumpulan teks yang memiliki format yang tidak terstruktur atau minimal semi terstruktur. Adapun tugas khusus dari text mining antara lain yaitu pengkategorisasian teks (text categorization) dan pengelompokan teks text clustering).

Langsung aja yuk ke tahap analisisnya! ^^

Install dan jalankan terlebih dahulu packages yang akan digunakan.

library(xml2)
library(rvest)

Kemudian memilih hotel yang ingin dianalisis. Sebagai contoh menggunakan Lafayette Boutique Hotel

lafayette <- read_html("https://www.tripadvisor.co.id/Hotel_Review-g5074492-d10588262-Reviews-Lafayette_Boutique_Hotel_Yogyakarta-Depok_Sleman_District_Yogyakarta_Region_Java.html")lafayette

kemudian, kita gunakan SelectorGadget untuk melihat posisi review pelanggan dengan menggunakan kode yang didapat.

Masukkan kode yang didapatkan pada koding di R

review<-html_nodes(lafayette,".cPQsENeY")
reviewtext<-html_text(review)
reviewtext

Sehingga muncul hasil berikut

Hapus jika terdapat huruf “\n” pada review dan lainnya yang tidak diperlukan. Misalkan baris pertama yang tidak memuat komentar apapun bisa kita delete baris tersebut. Simpan pada microsoft excel dengan format (.csv)

reviewtextbaru<-gsub("\n","",reviewtext)
reviewtextbaru
write.csv(reviewtextbaru,"E:\\vy\\Kuliah\\SMT 6\\Pengantar DatMin\\reviewtextbaru.csv")

Berikut tampilan jika dibuka melalui microsoft excel,

Selanjutnya anda install beberapa package tambahan yang diperlukan untuk analisa selanjutnya.

library(tm)
library(SnowballC)
library(wordcloud)
library(RColorBrewer)
library(stringr)

Baca kembali dokumen yang ada di dalam folder. Kemudian buat Corpus untuk dokumen tersebut

#Membaca dokumen
dokumen<-readLines("E:\\vy\\Kuliah\\SMT 6\\Pengantar DatMin\\reviewtextbaru.csv")
dokumen#Membuat Corpus
dokumen <- VCorpus(VectorSource(dokumen))
dokumenstr(dokumenDTM)

Kita bisa melihat struktur dokumen secara keseluruhan, serta dapat melihat strukturnya per bagian satu per satu

str(dokumen)#Melihat struktur satu per satu
dokumen[[1]]
dokumen[[2]]$content

Selanjutnya membuat matriks kata-kata dalam dokumen dan inspect hasilnya

dokumenDTM<-DocumentTermMatrix(dokumen,control=list(tolower=TRUE,                                    removeNumbers=TRUE,stopwords=TRUE,removePunctuation=TRUE,stemming=TRUE))
dokumenDTMinspect(dokumenDTM)
str(dokumenDTM)

kemudian bisa kita lihat semua kata-kata yang ada,

dokumenDTM$dimnames$Termsdokumenfreq<-findFreqTerms(dokumenDTM,3)
dokumenfreq
dokumenfreq<-findFreqTerms(dokumenDTM,4)
dokumenfreq

pada perintah pertama menampilkan kata-kata yang mempunyai frekuensi 3 kali muncul atau lebih, sedangkan perintah kedua menampilkan kata-kata yang mempunyai kemunculan 4 kali atau lebih

Berikut adalah hasilnya

> dokumenfreq<-findFreqTerms(dokumenDTM,3)
> dokumenfreq
[1] "ada" "ala" "area" "ata" "banget" "berasa"
[7] "bernuansa" "boutiqu" "dan" "dapat" "dari" "dengan"
[13] "depan" "desain" "eleg" "eropa" "halaman" "hotel"
[19] "ini" "itu" "juga" "kalau" "kamar" "khas"
[25] "king" "kita" "lafayett" "lampu" "lobbi" "makanan"
[31] "mase" "menginap" "menikmati" "menu" "mewah" "mulai"
[37] "nama" "nya" "para" "pari" "parisnya" "restoran"
[43] "sampai" "sarapan" "semua" "semuanya" "staff" "stay"
[49] "tamu" "tapi" "tempat" "untuk" "yang" "yogyakarta"> dokumenfreq<-findFreqTerms(dokumenDTM,4)
> dokumenfreq
[1] "ada" "ala" "area" "banget" "berasa" "boutiqu" "dan"
[8] "dari" "dengan" "eropa" "hotel" "ini" "itu" "juga"
[15] "kalau" "kamar" "kita" "lafayett" "lobbi" "makanan" "mase"
[22] "menginap" "mewah" "nya" "sarapan" "semua" "staff" "tapi"
[29] "tempat" "untuk" "yang"

kemudian gunakan perintah berikut untuk membuat matriks

em <- as.matrix(dokkudtm)
emve <- sort(rowSums(em),decreasing=TRUE)
vede <- data.frame(word = names(ve),freq=ve)
head(de, 15)

kemudian untuk membuat wordcloud gunakan perintah berikut,

wordcloud(words = de$word, freq = de$freq, min.freq = 1,           
max.words=50, random.order=FALSE, rot.per=0.35,
colors=brewer.pal(8, "Dark2"))

berikut adalah hasil dari text mining,

Misal ingin diketahui asosiasi kata dari kata-kata yang sering muncul, misal kata “fasilitas”, “hotel” dan “sangat” maka kita gunakan perintah berikut,

vee<-as.list(findAssocs(dokkudtm, terms =c("fasilitas", "hotel", "sangat"), corlimit = c(0.15,0.15,0.15,0.15,0.15,0.15)))vee

******************************************************************

Berikut adalah koding lengkap untuk analisis text mining

library(xml2)
library(rvest)lafayette <- read_html("https://www.tripadvisor.co.id/Hotel_Review-g5074492-d10588262-Reviews-Lafayette_Boutique_Hotel_Yogyakarta-Depok_Sleman_District_Yogyakarta_Region_Java.html")
lafayettereview<-html_nodes(lafayette,".cPQsENeY")
reviewtext<-html_text(review)
reviewtextreviewtextbaru<-gsub("\n","",reviewtext)
reviewtextbaru
write.csv(reviewtextbaru,"E:\\vy\\Kuliah\\SMT 6\\Pengantar DatMin\\reviewtextbaru.csv")library(tm)
library(SnowballC)
library(wordcloud)
library(RColorBrewer)
library(stringr)dokumen<-readLines("E:\\vy\\Kuliah\\SMT 6\\Pengantar DatMin\\reviewtextbaru.csv")
dokumendokumen <- VCorpus(VectorSource(dokumen))
dokumenstr(dokumen)
dokumen[[1]]
dokumen[[2]]$contentdokumenDTM<-DocumentTermMatrix(dokumen,control=list(tolower=TRUE, removeNumbers=TRUE, stopwords=TRUE, removePunctuation=TRUE, stemming=TRUE))
dokumenDTMinspect(dokumenDTM)
str(dokumenDTM)dokumenDTM$dimnames$Termsdokumenfreq<-findFreqTerms(dokumenDTM,3)
dokumenfreq
dokumenfreq<-findFreqTerms(dokumenDTM,4)
dokumenfreqdokkudtm <- TermDocumentMatrix(dokumen)em <- as.matrix(dokkudtm)
emve <- sort(rowSums(em),decreasing=TRUE)
vede <- data.frame(word = names(ve),freq=ve)
head(de, 15)wordcloud(words = de$word, freq = de$freq, min.freq = 1,
max.words=50, random.order=FALSE, rot.per=0.35,
colors=brewer.pal(8, "Dark2"))vee<-as.list(findAssocs(dokkudtm, terms =c("fasilitas", "hotel", "sangat"), corlimit = c(0.15,0.15,0.15,0.15,0.15,0.15)))
vee

Nah itu dia langkah-langkah melakukan text mining. Semoga ilmunya bermanfaat ^^

Wassalaamu’alaikum warahmatullaahi wabarakaatuh

.

Referensi

  1. “RB Fajriya Hakim (On Medium)” https://medium.com/@986110101

--

--

Veronica Yolanda
Veronica Yolanda

No responses yet