1-1 비정형데이터
1-1-1 비정형 data의 word cloud 생성하기
material_jeju.txt_RColorBrewer
-->text mining을 이용해 추출한 데이터를 다수로 노출된 항목에 대해 큰글씨로 나타내는것
jeju.txt 파일을 이용해서 많이 사용된 단어를 정형 data로 만들기
step - 1 - 작업디렉토리 지정
prepare 부분을 참조해서 working directory를 지정
step - 2 - 필수 package설치
==========================
설치된 package 관리
list <- installed.packages()
-->List object 를 생성해서 값을 담음
write.table(list,"list.txt")
-->Working Directory 에 설치한 list object의 값을 모두 담음
list.txt 파일을 이용해서 설치된 package를 검색한다
==========================
install.packages("rJava")
install.packages("memo")
install.packages("KoNLP")
install.packages("wordcloud")
install.packages("RColorBrewer")
-->해당 명령어를 치면 설치는 안되고 download 까지만 진행한다
-->이때 다운로드 받은 경로에 파일을 WD 에 복사해서 다음명령어로 설치한다install
-->install.packages("RColorBrewer_1.1-2.zip", repos = NULL)
JDK 설치
-->rJava 패키지를 load 하면 javahome 으로 Error 가 발생한다
JDK를 https://www.oracle.com/technetwork/java/javase/downloads/index.html 에서 설치후 system 변수에 JAVA_HOME 과 경로를 넣는다
library(rJava)
library(KoNLP)
library(wordcloud)
useSejongDic()
-->한글을 대상으로 word cloud 를 생성할때 사용해야함
추출을 원하는 단어를 선정해서 dictionary에 추가해둔다
mergeUserDic(data.frame("주상절리","ncn"))
-->1 words were added to dic_user.txt.
-->사용자 dic에 단어가 추가됨
mergeUserDic(data.frame("협재해변","ncn"))
mergeUserDic(data.frame("성산일출봉","ncn"))
mergeUserDic(data.frame("섭지코지","ncn"))
mergeUserDic(data.frame("천지연폭포","ncn"))
mergeUserDic(data.frame("우도","ncn"))
mergeUserDic(data.frame("산방산","ncn"))
mergeUserDic(data.frame("중문관광단지","ncn"))
mergeUserDic(data.frame("잠수함","ncn"))
mergeUserDic(data.frame("러브랜드","ncn"))
mergeUserDic(data.frame("용두암","ncn"))
mergeUserDic(data.frame("신비의도로","ncn"))
mergeUserDic(data.frame("한라산","ncn"))
mergeUserDic(data.frame("오설록","ncn"))
mergeUserDic(data.frame("유리의성","ncn"))
mergeUserDic(data.frame("한림공원","ncn"))
mergeUserDic(data.frame("용머리해안","ncn"))
mergeUserDic(data.frame("해수욕장","ncn"))
mergeUserDic(data.frame("중문","ncn"))
mergeUserDic(data.frame("제주민속촌","ncn"))
mergeUserDic(data.frame("외돌개","ncn"))
mergeUserDic(data.frame("에코랜드","ncn"))
step - 3 - 분석용데이터를 변수로 읽기
txt <- readLines("jeju.txt")
-->txt를 입력해 object에 잘 들어갔는지 확인한다
step - 4 - 데이터중에서 명사만 골라서 nouns 변수에 할당
-->데이터에서 한글 명사만 골라서 사용하자
place <- sapply(txt,extractNoun,USE.NAMES=F)
place
-->txt로 받은 각각의 줄에서 명사만 뽑아온다
--> 1006번 line 은 "두 곳을 견주어 후회가 없었답니다." 인데 place object 에서 1006번줄은 "두" "곳" "후회"로 분석된것을 알수있다
step - 5 - 명사 확인
head(unlist(place),30)
[1] "제주" "여행" "코스"
[4] "숙소" "어디" "지"
[7] "수" "대략적" "제주"
[10] "여행" "일정" "필요"
[13] "없구요.." "제주" "여행"
[16] "준비" "도움" "합니"
[19] "●" "제주" "관광지"
[22] "입장료" "모바일할인쿠폰을" "이용"
[25] "하시" "할인" "수"
[28] "6월4일부터" "징검다리"
c <- unlist(place)
place <- Filter(function(x) {nchar(x) >=2} ,c)
-->두글자 이상되는 data대상으로만 filtering
step - 6 - 원하지 않는 내용 걸러내기
-->gsub 함수 문법("변경전 글자","변경후 글자","원본데이터")
place <- gsub("\\d+","",place)
-->모든 숫자를 없앤다
place <- gsub("제주","",place)
place <- gsub("통운","",place)
place <- gsub("전국","",place)
place <- gsub("체인","",place)
place <- gsub("업체","",place)
place <- gsub("질문","",place)
place <- gsub("가격","",place)
place <- gsub("무난","",place)
place <- gsub("여행","",place)
place <- gsub("검색","",place)
place <- gsub("코스","",place)
place <- gsub("숙소","",place)
place <- gsub("준비","",place)
place <- gsub("다운로드","",place)
place <- gsub("조회수","",place)
place <- gsub("추천수","",place)
place <- gsub("답변수","",place)
place <- gsub("조회수","",place)
place <- gsub("추천수","",place)
place <- gsub("추천","",place)
place <- gsub("답변수","",place)
place <- gsub("첫째날","",place)
place <- gsub("좋음","",place)
place <- gsub("좋구요","",place)
place <- gsub("이런거","",place)
place <- gsub("둘째날","",place)
place <- gsub("셋째날","",place)
place <- gsub("세쨋날","",place)
place <- gsub("토요일","",place)
place <- gsub("일요일","",place)
place <- gsub("시간","",place)
place <- gsub("항공","",place)
place <- gsub("관광지","",place)
place <- gsub("입장료","",place)
place <- gsub("저가","",place)
place <- gsub("항공사","",place)
place <- gsub("도움","",place)
place <- gsub("대략","",place)
place <- gsub("요금","",place)
place <- gsub("이용","",place)
place <- gsub("공항","",place)
place <- gsub("해안","",place)
place <- gsub("드라이브","",place)
place <- gsub("경유","",place)
place <- gsub("바다","",place)
place <- gsub("전망","",place)
place <- gsub("하루","",place)
place <- gsub("랜트카","",place)
place <- gsub("하시","",place)
place <- gsub("예약","",place)
place <- gsub("사진","",place)
place <- gsub("위치","",place)
place <- gsub("필요","",place)
place <- gsub("할인","",place)
place <- gsub("출발","",place)
place <- gsub("가능","",place)
place <- gsub("소요","",place)
place <- gsub("일정","",place)
place <- gsub("하게","",place)
place <- gsub("근처","",place)
place <- gsub("중간","",place)
place <- gsub("다양","",place)
place <- gsub("첫날","",place)
place <- gsub("도착","",place)
place <- gsub("용머","",place)
place <- gsub("리","",place)
place <- gsub("바위","",place)
place <- gsub("유명","",place)
place <- gsub("정도","",place)
place <- gsub("이동","",place)
place <- gsub("무료","",place)
place <- gsub("체험","",place)
place <- gsub("둘째","",place)
place <- gsub(" ","",place)
place <- gsub("\\d+","",place)
step - 7 - 파일 저장후 테이블로 변환
write(unlist(place),"jeju_2.txt")
step - 8 - 수정 완료파일을 table 로 변환후 object생성
rev <- read.table("jeju_2.txt")
step - 9 - txt 형태로 확인
nrow(rev)
-->데이터 건수 확인
wordcount <- table(rev)
rev 변수를 table 형태로 바꿔서 wordcount object 생성
head(sort(wordcount,decreasing=T),30)
rev
우도 주상절 박물관 섭지코지 중문 산방산 녹차
18 12 11 10 10 9 8
에코랜드 성산일출봉 신창 일출 정상 대장 송악산
8 7 7 7 7 6 6
식당 오설록 용두암 주도 폭포 풍경 해수욕장
6 6 6 6 6 6 6
관광 구석 렌트카 분화구 산책 생각 신라호텔
5 5 5 5 5 5 5
야간 연폭
5 5
step - 10 - Word Cloud 형태로 출력
library(RColorBrewer)
palete <- brewer.pal(9,"Set1")
-->글자색 지정
wordcloud(names(wordcount),freq=wordcount,scale=c(5,1),rot.per=0.24,min_freq=1,random.order=F,random.color=T,color=palete)
-->최소 한번은 언급된 data를 기반으로 word cloud 생성하기
Step - 6에서 제외할 단어를 잘 정리하면 결과물이 더 깔끔하게 나온다
savePlot("1-1-1.png",type="png")
댓글 없음:
댓글 쓰기