# 분석데이터 원본
# http://hochul.net/blog/wp-content/uploads/2018/03/Gartner_2014_18_TechTrend.txt
# 필요 Package 설치
# install.packages("KoNLP")
# install.packages("wordcloud")
# install.packages("RColorBrewer")
# Library 로드
library("KoNLP")
## Checking user defined dictionary!
library("wordcloud")
## Loading required package: RColorBrewer
library("RColorBrewer")
useSejongDic() # 한글 세종사전
## Backup was just finished!
## 370957 words dictionary was built.
분석대상파일 <- "Target.txt";
저장파일명 <- "Save.txt";
# 파일에서 라인으로 읽어들이기
내용 <- readLines(분석대상파일);
# length(내용);
# View(데이터 프레임) : 데이터 뷰어 호출/파일내용 확인
# View(내용)
# 불필요한 문자 필터링, 치환 : ctrl+H
# g(global) sub(substitute) - gsub(찾을 것, 바꿀 것, 열 지정)
# 아래의 특수 문자 사용에 주의
내용 <- gsub("'","",내용);
내용 <- gsub("‘","",내용);
내용 <- gsub("","",내용);
내용 <- gsub("“","",내용);
내용 <- gsub("”","",내용);
내용 <- gsub("기술","",내용);
내용 <- gsub("가트너는","",내용);
내용 <- gsub("하게","",내용);
내용 <- gsub("10","",내용);
내용 <- gsub("들이","",내용);
내용 <- gsub("하기","",내용);
내용 <- gsub("부사장","",내용);
내용 <- gsub("가지","",내용);
내용 <- gsub("AI","인공지능",내용);
#내용;
# sapply(x, FUN) - x : vector, list 또는 data.frame,
# FUN : 적용하고자 하는 함수
# extractNoun : 명사를 추출하는 함수
# 각 라인마다 명사단어들만 남기기
내용명사 <- sapply(내용, extractNoun, USE.NAMES=F);
#View(내용명사);
# unlist() 함수를 통해 조작을 쉽게 리스트 자료형을 해제
내용명사리스트 <- unlist(내용명사)
#단어들만 출력
#View(내용명사리스트);
# 2글자 이상의 단어만 필터링
두자이상단어 <- Filter( function(x){ nchar(x)>=2 }, 내용명사리스트);
## 최종 2글자 이상의 단어들의 목록
#View(두자이상단어);
# 결과 목록을 파일로 저장
write(두자이상단어, 저장파일명);
내용테이블 <- read.table(저장파일명, header=FALSE);
# EOF within quoted string........에러발생
# 빅데이터의 경우 용량이 너무 클때 발생
# 옵션에서 quote="" 만 추가하면 해결됨
내용테이블 <- read.table(저장파일명, header=FALSE, quote="");
#View(내용테이블);
단어발생수 = table(내용테이블)
# 테이블형태 변환해서 저장
#View(단어발생수)
##Word Cloud 그리기 ##
windows();
# 제공 색상타입 모두 보기
# display.brewer.all( );
windowsFonts(font=windowsFont("맑은 고딕"))
#-------- Word Cloud 함수 호출 ----------#
wordcloud( names(단어발생수),freq=단어발생수, scale=c(5,0.2),
#가장 큰(가장 작은) 빈도 단어 사이 크기
rot.per=0.1, #90도 회전해서 보일 단어 비율
min.freq=3, max.words=100,
# 빈도 3이상, 100미만
random.order=F, # True : 랜덤배치 #False : 빈도수가 큰 단어를 중앙에 배치
random.color=T, # True : 색랜덤 #False : 빈도순
colors=brewer.pal(11, "Paired"), #11은 색상개수, 두 번째는 색상 타입이름
family="font")
분석대상파일 <- "4차산업.txt";
저장파일명 <- "저장.txt";
# 파일에서 라인으로 읽어들이기
내용 <- readLines(분석대상파일);
## Warning in readLines(분석대상파일): '4李⑥궛<U+FFFD><U+FFFD>.txt'에서 불완전한 마지막 행이
## 발견되었습니다
# length(내용);
# View(데이터 프레임) : 데이터 뷰어 호출/파일내용 확인
# View(내용)
# 불필요한 문자 필터링, 치환 : ctrl+H
# g(global) sub(substitute) - gsub(찾을 것, 바꿀 것, 열 지정)
내용 <- gsub("'","",내용);
내용 <- gsub("‘","",내용);
내용 <- gsub("","",내용);
내용 <- gsub("“","",내용);
내용 <- gsub("”","",내용);
내용 <- gsub("기술","",내용);
내용 <- gsub("가트너는","",내용);
내용 <- gsub("하게","",내용);
내용 <- gsub("10","",내용);
내용 <- gsub("들이","",내용);
내용 <- gsub("하기","",내용);
내용 <- gsub("부사장","",내용);
내용 <- gsub("가지","",내용);
내용 <- gsub("AI","인공지능",내용);
#내용;
# sapply(x, FUN) - x : vector, list 또는 data.frame,
# FUN : 적용하고자 하는 함수
# extractNoun : 명사를 추출하는 함수
# 각 라인마다 명사단어들만 남기기
내용명사 <- sapply(내용, extractNoun, USE.NAMES=F);
# View(내용명사);
# unlist() 함수를 통해 조작을 쉽게 리스트 자료형을 해제
내용명사리스트 <- unlist(내용명사)
#단어들만 출력
#View(내용명사리스트);
# 2글자 이상의 단어만 필터링
두자이상단어 <- Filter( function(x){ nchar(x)>=2 }, 내용명사리스트);
## 최종 2글자 이상의 단어들의 목록
#View(두자이상단어);
# 결과 목록을 파일로 저장
write(두자이상단어, 저장파일명);
내용테이블 <- read.table(저장파일명, header=FALSE);
# EOF within quoted string........에러발생
# 빅데이터의 경우 용량이 너무 클때 발생
# 옵션에서 quote="" 만 추가하면 해결됨
내용테이블 <- read.table(저장파일명, header=FALSE, quote="");
#View(내용테이블);
단어발생수 = table(내용테이블)
# 테이블형태 변환해서 저장
#View(단어발생수)
##Word Cloud 그리기 ##
windows();
# 제공 색상타입 모두 보기
# display.brewer.all( );
windowsFonts(font=windowsFont("맑은 고딕"))
#-------- Word Cloud 함수 호출 ----------#
wordcloud( names(단어발생수),freq=단어발생수, scale=c(10,0.2),
#가장 큰(가장 작은) 빈도 단어 사이 크기
rot.per=0.25, #90도 회전해서 보일 단어 비율
min.freq=5, max.words=100,
# 빈도 3이상, 100미만
random.order=F, # True : 랜덤배치 #False : 빈도수가 큰 단어를 중앙에 배치
random.color=T, # True : 색랜덤 #False : 빈도순
colors=brewer.pal(11, "Paired"), #11은 색상개수, 두 번째는 색상 타입이름
family="font")
## Warning in wordcloud(names(단어발생수), freq = 단어발생수, scale = c(10, :
## 인공지능 could not be fit on page. It will not be plotted.