R Studio를 통해서 특정 단어를 언급한 트위터 데이터를 가져오는 내용을 지난 번 글(링크)에서 다뤘었는데요. 이번에는 가져온 데이터를 이용해서 워드클라우드를 만드는 내용을 해보죠.
사실 별 거 아닌데 뭔가 분석할 만한 키워드를 찾는 게 조금 시간이 걸렸네요. 광고글이 너무 많이 검색되거나 다 똑같은 트윗들만 있거나 한 경우가 많더라구요.
검색을 한 키워드는 [중고], 검색한 숫자는 10000개입니다. tweets라는 변수에 10000개가 할당된 거 보이시죠. 이런식으로 데이터가 로딩된 상태라면 분석이 가능합니다.
1. 필요 패키지 설치 : KoNLP, wordcloud
> install.packages("KoNLP")
> install.packages("wordcloud")
- 위 두 문장을 Console 상에서 실행해서 패키지를 설치해 줍니다.
R Script 상에서는 library(KoNLP) / library(wordcloud)로 로딩을 해주면 됩니다.
- 한글 사전 사용 : useSejongDic()
rJava 관련 에러가 발생하는 경우도 있는데 이럴 때는 JAVA를 설치하고 JAVA_HOME 설정 등을 확인해야 합니다.
2. 트위터 데이터를 형태별로 분류하고 멘션 부분만 추출
# tweets데이터에서 형태별로 분류하고 멘션 부분만 추출
twitter_df <- twListToDF(tweets)
twitter_text <- twitter.df$text
결과적으로 멘션 부분만 twitter.text에 저장이 됩니다.
3. 추출된 멘션 중에서 명사만 추출
# twitter_text에서 명사만 추출
twitter_noun <- sapply(twitter_text, extractNoun, USE.NAMES = F)
워드클라우드를 만들때는 명사만 사용할 것이기 때문에 명사만 따로 추출을 해줍니다. 데이터 양에 따라 시간이 좀 걸릴 수도 있어요.
4. 불필요한 문자 제거 : 한 글자 단어, 특수기호, 영문, 숫자 등 제거
# 두글자 이상 필터링을 위해 unlist 작업하여 저장
twitter_noun2 <- unlist(twitter_noun)
# 두 글자 이상 단어만 저장
twitter_noun2 <- Filter(function(x) {nchar(x) >= 2}, twitter_noun2)
#숫자 제외, 정규식
twitter_noun2 <- gsub("\\d+", "", twitter_noun2)
# (괄호 제외
twitter_noun2 <- gsub("\\(", "", twitter_noun2)
# )괄호 제외
twitter_noun2 <- gsub("\\)", "", twitter_noun2)
# @, # 제외
twitter_noun2 <- gsub("\\@", "", twitter_noun2)
twitter_noun2 <- gsub("\\#", "", twitter_noun2)
# 영문 제외, 정규식
twitter_noun2 <- gsub("[A-Za-z]", "", twitter_noun2)
# 중고 제외
twitter_noun2 <- gsub("중고", "", twitter_noun2)
# 15 글자 이상 단어 제외
twitter_noun2 <- gsub("[ㄱ-ㅎ가-힣]{15,}", "", twitter_noun2)
여기서부터는 내용을 확인해 가면서 분석에 불필요한 내용들을 필터링하는 걸 추가해 줍니다. 검색 키워드인 [중고]라는 단어도 제외해 줍니다. 어떤 데이터를 가져왔느냐에 따라서 위 내용은 많은 부분이 달라질 수도 있습니다.
5. 단어별 출현 빈도 확인
# 단어별 count 확인
wordcount <- table(twitter_noun2)
wordcount
6. 워드클라우드 설정 및 출력
#컬러 출력 라이브러리 로딩
library(RColorBrewer)
# 글자 색깔 지정
palete <- brewer.pal(9, "Set1")
# 워드클라우드 출력
wordcloud(names(wordcount), freq=wordcount, scale=c(5,1), rot.per = 0.1, min.freq=10,random.order=F, color=T, colors=palete)
지난번에 만들었던 워드클라우드보다 텍스트가 더 많기 때문에 min.freq=10으로 설정했습니다.
뭔가 PC 환경이 바뀐 건지 제대로 실행이 되지 않는 느낌이 드는데, 어쨌든 결과는 위와 같이 나왔네요. 근데 문자열 깨지는 부분 / 뒤집힌 부분은 뭣때문에 나오는 건지 확인을 한 번 해봐야 되겠네요. 실제로 사용하려면 추가적인 데이터 전처리가 필요할 것 같네요.
근데 제 예상과는 다르게 학원이 가장 많이 언급된 단어인데 흠, 이건 학원 수강권중고거래가 활발하다고 봐야하는 건지.
'프로그래밍 > 데이터분석' 카테고리의 다른 글
파이썬 데이터분석 필수 라이브러리 - pandas, numpy, matplotlib (0) | 2018.03.29 |
---|---|
특정단어 언급한 트위터 데이터 가져오기 (0) | 2017.06.25 |
R Studio를 통해 트위터 데이터 가져오기(2) (2) | 2017.04.10 |
R Studio를 통해 트위터 데이터 가져오기(1) (0) | 2017.04.09 |
SNS 여론 추이 분석 서비스 - 소셜메트릭스(SOCIAL metrics) (0) | 2015.12.08 |