출처: http://dev.kthcorp.com/2013/02/06/r-quickstart-guide-1-twitter-wordcloud/
김정은님께서 포스팅해주신 내용을 기반으로 진행하였습니다. 제가 진행한 것은 윈도우이기에 사용된 명령어에서 일부 수정된 내용이 있습니다. 역시 R의 장점은 플러그인인 것 같습니다.
# 관련 패키지 설치
install.packages('KoNLP')
install.packages('wordcloud')
install.packages('plyr')
install.packages('twitteR')
install.packages('tm')
install.packages('Unicode')
# 설치하지 않으면 한글로된 내용을 다룰때에는 'utf8towcs'에 잘못된 입력 이라는 오류가 발생합니다# 설치되어 있는 패키지를 로딩
library(KoNLP)
library(wordcloud)
library(plyr)
library(twitteR)
library(tm)
library(Unicode)# 키워드 설정
keyword <- 'iPhone'# 트위터에서 키워드로 검색
#result <- searchTwitter(keyword, since='2013-01-21′, until='2013-01-27′, lang='ko',n=100)
# TwitteR의 설명서에는 위처럼 파라메터를 넣도록 되어 있는데 막상 넣으면 오류가 나네요
# searchTwitter(searchString, n=25, lang=NULL, since=NULL, until=NULL, locale=NULL, geocode=NULL, sinceID=NULL, ...)
result <- searchTwitter(keyword, lang='ko', n=100)
# n이 크면 오류가 발생합니다.
#Error: Malformed response from server, was not JSON# 결과 중에서 텍스트에 해당하는 부분만 뽑는다
result.df <- twListToDF(result)
result.text <- result.df$text# 불필요한 문자를 걸러준다
result.text <- gsub('\n', '', result.text)
result.text <- gsub('\r', '', result.text)
result.text <- gsub('RT', '', result.text)
result.text <- gsub('http', '', result.text)# 문자 분리
result_nouns <- Map(extractNoun, result.text)# 쓸모없는 문자들을 제거한다. 특히 영문자의 경우 tm의 stopwords를 활용한다.
result_wordsvec <- unlist(result_nouns, use.name=F)
result_wordsvec <- result_wordsvec[-which(result_wordsvec %in% stopwords("english"))]
result_wordsvec <- gsub('[[:punct:]]','", result_wordsvec)
result_wordsvec <- Filter(function(x){nchar(x)>=2}, result_wordsvec)# 문자 카운팅
result_wordcount <- table(result_wordsvec)# 컬러 세팅
pal <- brewer.pal(12,'Paired')# 폰트 세팅
windowsFonts(malgun=windowsFont('맑은 고딕'))# 그리기
wordcloud(names(result_wordcount), freq=result_wordcount, scale=c(5,0.5), min.freq=5, random.order=F, rot.per=.1, colors=pal, family='malgun')
twitteR 패키지에 있는 searchTwitter 함수를 사용해서 검색을 한다.
사용법을 알고 싶을 때는 콘솔에 help(searchTwitter)를 입력하면 document를 볼 수 있다.
searchTwitter를 사용하면 리턴값은 해당 패키지에서 사용하는 클래스 형식이다.
str(result)를 해서 데이터형을 확인해볼 수 있다.
해당 트윗의 내용, 등록일, 등록한 사용자의 id와 스크린네임, RT까지 리턴된다.
여기서 필요한건 트윗 내용이기 때문에 text 부분만 따로 뽑아주었다.
최근 인증 내용이 추가되면서 오류가 발생(SSL3)할텐데요.
"SSL certificate problem, verify that the CA cert is OK. Details:\nerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed"
다음에 오류가 있습니다twInterfaceObj$doAPICall(cmd, params, "GET", ...) :
Error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
handshake 하시거나 searchTwitter 하실 때 cainfo 를 넣으시면 됩니다.
cred$handshake( cainfo = "d:/cacert.pem" )
searchTwitter(keyword, lang='ko', n=100, cainfo = "d:/cacert.pem" )
실제 위에 내용을 적으시면 아래와 같이 나오는데 rstudio 쓰시는 분들은 주소치기 힘들테니 r 에서 해당 데이터를 받아서 rData로 저장하고 rstudio 로 불러오시면 편하실듯 합니다.
To enable the connection, please direct your web browser to:
https://api.twitter.com/oauth/authorize?oauth_token=XlFt5yVqCcFv9cebAZbckuPgSPKTUfUUAy7fSS3pYI
When complete, record the PIN given to you and provide it here:
'Biz > Analysis' 카테고리의 다른 글
RStudio 에서 Spark 사용하기 (1) | 2016.03.26 |
---|---|
Hands-on Tour of Apache Spark in 5 Minutes (0) | 2016.03.25 |
Magellan: Geospatial Analytics on Spark (0) | 2016.03.25 |
RStudio 시작시 오류 (0) | 2014.12.31 |
R - shiny (0) | 2013.04.12 |
댓글