3 Aug 2018

[R] 빈도수 분석, 워드클라우드, LDA 분석 코드


과제에 쓴 코드 일부분

LDA 과정/한계
1. 스탠포드 분석 프로그램 쓰려했는데 돌리는데 넘 오래 걸림
2. NetMiner 4는 무료 시험버전이라 노드 수가 제한되서 못 씀
3. 어느 개발자가 만드신 TomotoGui_0.1 역시 시간이 부족해 완성하지 못함
결국은 이것저것 시도 하다 시간상 R로 해결

아래 코드는 기본적 분석을 목적으로 함

setwd("c:/Rtest")

install.packages("KoNLP")
install.packages("wordcloud")
install.packages("RColorBrewer")

library(KoNLP)
library(wordcloud)
library(RColorBrewer)

useSejongDic()

data1 <- readLines("파일명.txt", encoding="UTF-8")
head(data1)

data2 <- sapply(data1, extractNoun,USE.NAMES=F)
data2

data3 <- unlist(data2)
head(data3)

data3 <- gsub("\\d+","",data3)
data3 <- gsub("-","",data3)
data3 <- gsub("_","",data3)
data3 <- gsub(" ","",data3)
data3 <- Filter(function(x){nchar(x)>1}, data3)

head(data3)
write(unlist(data3),"파일명2.txt")

data4 <- read.table("파일명2.txt")
head(data4)

word <- table(data4)
head(sort(word,decreasing=T),20)

data3 <- gsub("xx","",data3)
data3 <- gsub("zz","",data3)
write(unlist(data3),"파일명3.txt")

data4 <- read.table("파일명3.txt")
head(data4)
word <- table(data4)
head(sort(word,decreasing=T),20)

library(RColorBrewer)

palete <- brewer.pal(9,"Set1")

X11()
wordcloud(
  names(word),
  freq=word,
  scale=c(5, 1),
  rot.per=0.5,
  min.freq=47,
  random.order=F,
  random.color=T,
  colors=palete
)

install.packages("lda")
library(lda)
corpusLDA <- lexicalize(data3 )
require(lda)

ldaModel=lda.collapsed.gibbs.sampler(corpusLDA$documents,K=10,vocab=corpusLDA$vocab,burnin=9999,num.iterations=1000,alpha=1,eta=0.1)

top.words <- top.topic.words(ldaModel$topics, 15, by.score=TRUE)

print(top.words)

write.csv(top.words,file="LDA.csv")

----------------------------------------------

#visualization test  (생략)

No comments

Copyright © 2018 Mid Air by Ahny. Powered by Blogger.