Showing posts with label text mining. Show all posts
Showing posts with label text mining. Show all posts

Wednesday, August 16, 2017

Text Mining (Twitter Analysis) Outputs in R

Text Mining (Twitter Analysis) Outputs in R

August 16, 2017
6
Tulisan ini adalah kelanjutan dari postingan saya sebelumnya yang berjudul Text Mining Analysis with R. Tulisan tersebut menyajikan langkah-langkah analisis Text Mining, sedangkan tulisan ini menyajikan outputnya. Oke guys, let's check it out...!
  1. Frequent Terms Plot. Plot ini menyajikan kata-kata yang sering keluar disertai jumlah frekuensi keluarnya kata tersebut yang ditampilakn dalam bentuk diagram plot.
    4
  2. Bar Plot of Frequent Terms
    Secara esensi sama dengan plot kata, tetapi bentuk penyajiannya berbeda.
    7 
  3. Frequent Terms dan Terms Association
    Output ini menjelaskan kata-kata yang sering keluar dengan frekuensi minimum 100 (minimal 100 kali keluar/digunakan). Adapun asosiasi kata menyajikan kata-kata yang berhubungan dengan kata tertentu (dalam hal ini adala "yogyakarta" dengan kemungkinan hubungan minimal sebesar 0,3.
    Terlihat kata-kata yang berhubungan dengan "yogyakarta" di antaranya adalah asean (0,51), populer (0,49), dan eksotisme (0,47).

    8
  4. Clustering Terms
    Menampilkan kata-kata yang telah ter-cluster yang disajikan dalam suatu cluster dendogram.
    5
  5. Word Cloud
    Menampilakan kata-kata yang sering keluar atau paling populer dalam data teks yang disajikan dalam bentuk awan, sehingga output seperti ini disebut awan kata.
6
Sekian pembahasan mengenai Text Mining Analysis dari penulis.

Untuk menambah wawasan mengenai analisis teks menggunakan R, mengetahui metode-metode analisis lain untuk Text Mining, skrip dan pembahasan lebih lengkap tentang Text Mining Analysis with R, Anda dapat mengunjungi link ini http://www.rdatamining.com/docs/text-mining-with-r-of-twitter-data-analysis. Semoga bermanfaat.
Text Mining (Twitter Analysis) in R

Text Mining (Twitter Analysis) in R

August 16, 2017
6
 Pada kesempatan kali ini, penulis menyajikan sebuah artikel mengenai langkah-langkah melakukan Text Mining Analysis menggunakan software R. Tulisan ini dilatarbelakangi banyaknya kawan dan adik tingkat penulis yang menanyakan perihal analisis penggalian teks ini.
Metode analisis Text Mining yang digunakan dalam tulisan ini hanya melibatkan analisis-analisis yang pernah penulis gunakan dalam karya-karya ilmiah yang pernah penulis buat, yakni meliputi clustering, plotting, wordcloud, kata-kata yang sering muncul, dan asosiasi kata.
Data teks yang digunakan dalam analisis ini adalah data tweets dari Twitter. Okay, let's check it out...!
Sebelum melakukan analisis Text Mining dengan R, install dahulu packages yang diperlukan. Adapun packages yang diperlukan adalah httr, twitteR, base64enc, tm, ggplot2, dan wordcloud.
Cara instalasi packages adalah dengan dengan menuliskan sintak berikut.

install.packages("httr","twitteR","base64enc","tm","wordcloud","ggplot2")

Jika cara tersebut tidak berhasil atau terjadi error, Anda dapat mengunduh langsung paket-paket tersebut di https://cran.r-project.org/ atau tanya langsung ke Si Mbah, maksud saya...Si Mbah Google.
Selanjutnya, panggil paketnya dengan menjalankan skrip berikut.

library(httr)
library(twitteR)
library(base64enc)
library(tm)
library(wordcloud)
library(ggplot2)


Kemudian lakukan autentikasi ke Twitter API. Skrip autentikasi ini pernah berubah sebelumnya menjadi skrip yang sekarang penulis gunakan. Skrip  ini masih saya gunakan terakhir pada tanggal 16 Januari 2016, tepatnya ketika menulis artikel ini. Skripnya sebagai berikut.

# autentikasi TwitterAPI (sederhananya, izin akses data twitter)
setup_twitter_oauth("Cunsemer Key Anda",
"Consumer Secret Anda",
access_token="Access Token Anda",
access_secret="Access Token Secret Anda")


Selanjutnya, setelah Anda menjalankan skrip di atas, akan muncul tampilan berikut. 

2

Tulis angka 1 untuk mengisi "Selection" kemudian tekan Enter.

3 

Jika belum memiliki Consumer Key, Consumer Secret, Access Token, dan Access Token Secret, Anda dapat mengunjungi halaman How to Get Keys and Access Token for Twitter API dalam blog ini untuk cara mendapatkannya.
Selanjutnya adalah mengambil data dari twitter sebanyak 200 data dengan kata kunci "wisata yogyakarta"

tweets = searchTwitter("wisata yogyakarta", n=200, lang=NULL)
text = sapply(tweets, function(x) x$getText())


Selanjutnya copas saja skrip berikut untuk analisisnya.

tweets.df<-twListToDF(tweetsyk)
dim(tweets.df)
## [1] 320 14
for(i in c(1:2,320)) {
cat(paste0("[", i,"] "))
writeLines(strwrap(tweets.df$text[i],60))
}

# build a corpus, and specify the source to be character vectors
myCorpus<-Corpus(VectorSource(tweets.df$text))

# hanya mengambil huruf dan spasi
removeNumPunct<-function(x)gsub("[^[:alpha:][:space:]]*","", x)
myCorpus<-tm_map(myCorpus,content_transformer(removeNumPunct))

# remove URLs
removeURL<-function(x)gsub("http[^[:space:]]*","", x)
myCorpus<-tm_map(myCorpus,content_transformer(removeURL))

# remove punctuation
myCorpus <- tm_map(myCorpus, removePunctuation)
# remove numbers
myCorpus <- tm_map(myCorpus, removeNumbers)

# remove URLs
removeURL<-function(x)gsub("http[^[:space:]]*","", x)
myCorpus<-tm_map(myCorpus,content_transformer(removeURL))

# convert to lower case
myCorpus<-tm_map(myCorpus,content_transformer(tolower))


# add two extra stop words: "available" and "via"
myStopwords<-c(stopwords('english'),"dan","itu","saya","kamu","acara","akan","yang","http","https")

# remove stopwords from corpus
myCorpus<-tm_map(myCorpus, removeWords, myStopwords)

# remove extra whitespace
myCorpus<-tm_map(myCorpus, stripWhitespace)
myCorpusCopy<-myCorpus

# stem words
myCorpus<-tm_map(myCorpus, stemDocument)
for(i in c(1:2,320)) {
cat(paste0("[", i,"] "))
writeLines(strwrap(as.character(myCorpus[[i]]),60))
}

stemCompletion2<-function(x,dictionary) {
x<-unlist(strsplit(as.character(x)," "))

# Unexpectedly, stemCompletion completes an empty string to
# a word in dictionary. Remove empty string to avoid above issue.
x<-x[x!=""]
x<-stemCompletion(x,dictionary=dictionary)
x<-paste(x,sep="",collapse=" ")
PlainTextDocument(stripWhitespace(x))
}

myCorpus<-lapply(myCorpus, stemCompletion2,dictionary=myCorpusCopy)
myCorpus<-Corpus(VectorSource(myCorpus))

miningCases<-lapply(myCorpusCopy,
function(x) { grep(as.character(x),pattern=" \\<mining")} )
sum(unlist(miningCases))
minerCases<-lapply(myCorpusCopy,
function(x) {grep(as.character(x),pattern=" \\<miner")} )
sum(unlist(minerCases))

#mengganti kata "keindahan" dengan "indah", "kenalkan" dengan "kenal"
myCorpus<-tm_map(myCorpus,content_transformer(gsub),pattern="keindahan",replacement="indah")
myCorpus<-tm_map(myCorpus,content_transformer(gsub),pattern="kenalkan",replacement="kenal")

control=list(wordLengths=c(1,Inf)))
tdm

idx<-which(dimnames(tdm)$Terms=="wisata")
inspect(tdm[idx+(0:5),101:110])

(freq.terms<-findFreqTerms(tdm,lowfreq=100))
term.freq<-rowSums(as.matrix(tdm))
term.freq<-subset(term.freq, term.freq>=100)
df<-data.frame(term=names(term.freq),freq= term.freq)

library(ggplot2)
ggplot(df,aes(x=term,y=freq))+geom_bar(stat="identity")+
xlab("Terms")+ylab("Count")+coord_flip()

# barplot kata
barplot(termFrequency, las=2)

#Frequent Terms and Associations (kata yang sering keluar dan asosiasi kata)
findFreqTerms(tdm, lowfreq=100)
findAssocs(tdm, 'yogyakarta', 0.3)

# clustering
# menghapus istilah/kata yang jarang
tdm2<-removeSparseTerms(tdm,sparse=0.95)
m2<-as.matrix(tdm2)

# cluster terms
distMatrix<-dist(scale(m2))
fit<-hclust(distMatrix,method="ward")
plot(fit)
rect.hclust(fit,k=3)
m<-as.matrix(tdm)

# menghitung frekuensi kata dan mengurutkannya
word.freq<-sort(rowSums(m),decreasing= T)
# colors
pal<-brewer.pal(9,"BuGn")
pal<-pal[-(1:4)]

# membuat awan kata (word cloud)
library(wordcloud)
wordcloud(words=names(word.freq),freq=word.freq,min.freq=50,
random.order= F,colors= pal)


Output analisis dibahas di sini.
Copyright © KESAKSIAN. All rights reserved. Template by CB Blogger