이전 글에서 웹크롤링으로 가져온 텍스트 데이터를 가공해보겠습니다
그 전에 텍스트 데이터가 필요하니 이전 R 기본으로 크롤러 만들기 글을 보고 따라하면 됩니다
먼저
파일이 잘 있는지 확인을 합니당
패키지 준비
이제 R 으로 가서 필요한 library를 넣어줍니다
1
2
3
4
5 |
library(KoNLP)
library(dplyr)
library(stringr)
library(RColorBrewer)
library(wordcloud) |
cs |
없다면 install.package로 다운받고 넣어줍니다
이어서 KoNLP의 사전불러오는 함수인
1 |
useSejongDic() |
cs |
입력하면 몇초 후 다운로드가 됩니다
1 |
setwd("C:/원하는 폴더") |
cs |
원하는 폴더를 지정해 놓아야
아래서 파일을 불러오기 쉽습니다
데이터 가공
준비한 데이터를 txt변수에다 입력합니다
1
2
3
4
5
6
7
8
9 |
txt<-str_replace_all(txt,"\\W"," ")
txt<-gsub("\\d+","",txt)
txt<-gsub("\\n+","",txt)
txt<-gsub("[A-z]","",txt)
txt<-gsub("[[:cntrl:]]","",txt)
txt<-gsub("관람객","",txt)
txt<-gsub("진짜","",txt)
txt<-gsub("영화","",txt) |
cs |
리뷰가 들어있는 변수 txt를 가공 합니다
특수문자를 제거하고
필요없는 단어들을 제거합니다
필요에 따라 아래 관람객, 진짜, 영화는 바뀌어도 무방합니다
KoNLP의 명사 추출함수인 extractNoun을 사용하면 명사가 추출됩니다
> ttt="아무 생각없이 보기에 너무 좋음 ㅋㅋ 재미짐.. 유쾌한 영화!! 역시 믿고 보는 류승룡~~ 공명 너무 귀여움ㅠㅠ" > extractNoun(ttt) [1] "재미" "짐" "유쾌" "한" "영화" "류승룡~~" "공명" "귀여움ㅠ" "ㅠ"
예시로 하나를 해보면 이런식으로 사전을 기반으로 명사를 추출합니다
1 |
nouns<-extractNoun(txt) |
cs |
가공한 전체 리뷰 txt를 명사로 추출하여 nouns변수에 넣습니다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
#추출한 명사 list를 문자열 벡터로 변환, 단어별 빈도표 생성
wordcount<-table(unlist(nouns))
# 데이터 프레임으로 변환
re_word <- as.data.frame(wordcount, stringsAsFactors = F)
#변수명 수정
re_word<-rename(re_word,word=Var1,freq=Freq)
#두 글자 이상 단어 추출
re_word<-filter(re_word,nchar(word)>=2)
#빈도수가 많은 순으로 20개만
top_20<-re_word %>%
arrange(desc(freq)) %>%
head(20)
|
cs |
top_20을 출력하면 아래처럼 확인할 수 있습니다
> top_20
word freq
1 ^ㅋ 369
2 연기 142
3 웃음 138
4 코미디 125
5 ^ㅎ 122
6 배우 119
7 기대 103
8 오랜만 94
9 간만 83
10 재밌게 83
11 예고편 82
12 재미 81
13 액션 78
14 시간 75
15 극한 74
16 치킨 72
17 생각 71
18 ^ㅋ^ㅋ^ㅋ 66
19 직업 66
20 완전 64
워드클라우드
이제 가공한 데이터를 가지고 워드클라우드를 만들겠습니다
워드클라우드는 단어와 단어의 빈도수나 중요도 인기도등을 고려해서 시각적으로 표현한 것입니다
이런 형식으로 만드려고합니다
1
2
3
4
5
6
7
8
9
10 |
pal <- brewer.pal(8,"Dark2") #색깔지정
wordcloud(words = top_20$word, # 단어
freq = top_20$freq, # 빈도
min.freq = 2, # 최소 단어 빈도
max.words = 200, # 표현 단어 수
random.order = F, # 고빈도 단어 중앙 배치
rot.per = .1, # 회전 단어 비율
scale = c(4, 0.3), # 단어 크기 범위
colors = pal) # 색깔 목록
|
cs |
단어와 빈도에
워드클라우드 결과물 스크린샷
단어와 빈도에 top_20이 아닌 모든 명사로 만든 워드클라우드
top 30으로 만든 워드클라우드
top 20으로 만든 워드클라우드
모든 단어로 만든 워드클라우드는 투머치한 느낌 있고, top30 으로 만든 워드클라우드가 적당한 느낌이네요
^ㅋ 는 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 같이 ㅋ만 있는 단어들입니다
코미디영화라 ㅋ가 많은 것을 알 수 있습니다
다음은 KoNLP로 데이터를 가공하는것 대신
단어의 감성을 점수로 매겨 만든 감성사전으로 감성분석을 해보겠습니다.
'프로그래밍 > R ' 카테고리의 다른 글
R을 이용한 텍스트 감성분석 | 영화리뷰 감성분석 해보기 (18) | 2019.02.13 |
---|---|
R 기본으로 크롤러 만들기 (14) | 2019.01.24 |
R [1]. 설치하기 (0) | 2019.01.09 |