if("tm" %in% installed.packages("tm") == FALSE)install.packages("tm")
library(tm)
library(wordcloud)
tgt <- readLines("https://www.dropbox.com/s/1w6a0xk9pmrr1rm/Shilla__Hotel__Review.txt?dl=1")
tgt1 <- VCorpus(VectorSource(tgt))
tgt1 <- tm_map(tgt1, tm::stripWhitespace) # 공백처리
tgt1 <- tm_map(tgt1, tolower) # 알파벳이면 소문자
tgt1 <- tm_map(tgt1, removePunctuation) # 마침표, 공백, 세미콜론, 콜론제거
gsb <- c(stopwords(
  ('english')
))
tgt1 <- tm_map(tgt1, removeWords, gsb)
tgt1 <- tm_map(tgt1, PlainTextDocument)
tgt2 <- TermDocumentMatrix(tgt1)
findFreqTerms(tgt2, 5)
findAssocs(tgt2, "신라호텔", 0.5)
tgt3 <- as.matrix(tgt2)
head(tgt3)
tgt4 <- sort(rowSums(tgt3),decreasing = T)
tgt4

pal <- brewer.pal(8,"Dark2")
set.seed(1234) 
wordcloud(
  names(tgt4),
  freq = tgt4,
  scale = c(2.5,0.1), # 단어크기 0.1 ~ 2.5
  rot.per =0.25, # 회전비율
  min.freq = 2, # 최저 빈도수 2회이상
  random.order = F, # 고빈도 단어 중앙배치
  random.color = T,
  colors = pal
)

# 제목에 박스 표시
legend(
  0.3,0.9,
  "서울신라호텔 이용후기",
  cex = 1.0,
  fill = NA,
  border = NA,
  bg = 'white',
  text.col = 'red',
  text.font = 2,
  box.col = 'red'
)
LS0tDQp0aXRsZTogIjIwMTgxMDA2IFRNIOydtOyaqSDthY3siqTtirjrp4jsnbTri50gX+yLoOudvO2YuO2FlCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCg0KYGBge3J9DQppZigidG0iICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKCJ0bSIpID09IEZBTFNFKWluc3RhbGwucGFja2FnZXMoInRtIikNCmxpYnJhcnkodG0pDQpsaWJyYXJ5KHdvcmRjbG91ZCkNCnRndCA8LSByZWFkTGluZXMoImh0dHBzOi8vd3d3LmRyb3Bib3guY29tL3MvMXc2YTB4azlwbXJyMXJtL1NoaWxsYV9fSG90ZWxfX1Jldmlldy50eHQ/ZGw9MSIpDQp0Z3QxIDwtIFZDb3JwdXMoVmVjdG9yU291cmNlKHRndCkpDQp0Z3QxIDwtIHRtX21hcCh0Z3QxLCB0bTo6c3RyaXBXaGl0ZXNwYWNlKSAjIOqzteuwseyymOumrA0KdGd0MSA8LSB0bV9tYXAodGd0MSwgdG9sb3dlcikgIyDslYztjIzrsrPsnbTrqbQg7IaM66y47J6QDQp0Z3QxIDwtIHRtX21hcCh0Z3QxLCByZW1vdmVQdW5jdHVhdGlvbikgIyDrp4jsuajtkZwsIOqzteuwsSwg7IS466+47L2c66GgLCDsvZzroaDsoJzqsbANCmdzYiA8LSBjKHN0b3B3b3JkcygNCiAgKCdlbmdsaXNoJykNCikpDQp0Z3QxIDwtIHRtX21hcCh0Z3QxLCByZW1vdmVXb3JkcywgZ3NiKQ0KdGd0MSA8LSB0bV9tYXAodGd0MSwgUGxhaW5UZXh0RG9jdW1lbnQpDQp0Z3QyIDwtIFRlcm1Eb2N1bWVudE1hdHJpeCh0Z3QxKQ0KZmluZEZyZXFUZXJtcyh0Z3QyLCA1KQ0KZmluZEFzc29jcyh0Z3QyLCAi7Iug65287Zi47YWUIiwgMC41KQ0KdGd0MyA8LSBhcy5tYXRyaXgodGd0MikNCmhlYWQodGd0MykNCnRndDQgPC0gc29ydChyb3dTdW1zKHRndDMpLGRlY3JlYXNpbmcgPSBUKQ0KdGd0NA0KDQpwYWwgPC0gYnJld2VyLnBhbCg4LCJEYXJrMiIpDQpzZXQuc2VlZCgxMjM0KSANCndvcmRjbG91ZCgNCiAgbmFtZXModGd0NCksDQogIGZyZXEgPSB0Z3Q0LA0KICBzY2FsZSA9IGMoMi41LDAuMSksICMg64uo7Ja07YGs6riwIDAuMSB+IDIuNQ0KICByb3QucGVyID0wLjI1LCAjIO2ajOyghOu5hOycqA0KICBtaW4uZnJlcSA9IDIsICMg7LWc7KCAIOu5iOuPhOyImCAy7ZqM7J207IOBDQogIHJhbmRvbS5vcmRlciA9IEYsICMg6rOg67mI64+EIOuLqOyWtCDspJHslZnrsLDsuZgNCiAgcmFuZG9tLmNvbG9yID0gVCwNCiAgY29sb3JzID0gcGFsDQopDQoNCiMg7KCc66qp7JeQIOuwleyKpCDtkZzsi5wNCmxlZ2VuZCgNCiAgMC4zLDAuOSwNCiAgIuyEnOyauOyLoOudvO2YuO2FlCDsnbTsmqntm4TquLAiLA0KICBjZXggPSAxLjAsDQogIGZpbGwgPSBOQSwNCiAgYm9yZGVyID0gTkEsDQogIGJnID0gJ3doaXRlJywNCiAgdGV4dC5jb2wgPSAncmVkJywNCiAgdGV4dC5mb250ID0gMiwNCiAgYm94LmNvbCA9ICdyZWQnDQopDQpgYGANCg0KDQo=