본론
1-1-3 Word Cloud 생성 Mission - 1
Step - 1
패키지 load
library(rJava)
library("KoNLP")
library("wordcloud")
Step - 2
소스파일 로딩
txt <- readLines("hong.txt")
txt
-->입력해서 잘 불러오기가 됫는지 확인한다
pol <- sapply(txt,extractNoun,USE.NAMES=F)
Step - 3
불필요 단어 제거
c <- unlist(pol)
res <- Filter(function(x) {nchar(x) >=2},c)
res <- gsub("홍길동","",res)
Step - 4
정리된 데이터 파일 txt로 저장
write(unlist(res),"hong_res.txt")
tot <- readLines("hong_res.txt")
nrow(tot)
wordcount <- table(tot)
head(sort(wordcount,decreasing=T),20)
Step - 5
글자색 설정후 wordcloud 생성
library(RColorBrewer)
palete <- brewer.pal(9,"Set1")
wordcloud(names(wordcount),freq=wordcount,sale=c(5,0.5),rot.per=0.25,min_freq=2,random.pro=F,random.color=T,color=palete)
Step - 6
이미지 파일 저장
savePlot("pol_hong.png",type="png")
2019년 8월 26일 월요일
2019년 8월 25일 일요일
Chp3. WORD_CLOUD - 2
본론
1-1-2 비정형 data 분석 해보기 Part- 2
-->"프로포즈 선물"의 키워드를 가지고 word cloud 를 생성하자
Step - 1
구글에서 "프로포즈 선물"을 검색해서 10개 페이지의 데이터를 메모장에 저장해서 gift.txt로 만든다
Step - 2
패키지 로딩
library(rJava)
library("KoNLP")
library("wordcloud")
Step - 3
소스파일 로딩
txt <- readLines("gift.txt", encoding="UTF-8")
pro <- sapply(txt,extractNoun,USE.NAMES=F)
Step - 4
불필요 단어 제거
c<-unlist(pro)
pro <- Filter(function(x) {nchar(x) >=2} ,c)
Error in nchar(x) : invalid multibyte string, element 1
[3395]"寃\u0080攼㹣깋攼㹤븯攼㹣떎"
[3396]"攼㹣닔"
[3397]"攼㹣엳攼㹣뒿攼㹢땲攼㹢떎"
[3398] ""
fileEncoding = "euc-kr"
-->c 로 읽어온 문자들의 인코딩이 이상한것을 확인 , readLines 함수에 encoding 추가해서 다시 진행
pro <- gsub("\\n","",pro)
pro <- gsub("\\.","",pro)
pro <- gsub("\\d+","",pro)
pro <- gsub("프로포즈","",pro)
pro <- gsub("수제","",pro)
pro <- gsub("공예","",pro)
pro <- gsub("남자","",pro)
pro <- gsub("여자","",pro)
pro <- gsub("결혼","",pro)
pro <- gsub("친구","",pro)
pro <- gsub("무료","",pro)
pro <- gsub("배송","",pro)
pro <- gsub("선물","",pro)
pro <- gsub("특별","",pro)
pro <- gsub("포장","",pro)
pro <- gsub("com","",pro)
pro <- gsub("www","",pro)
pro <- gsub("kr","",pro)
pro <- gsub("co","",pro)
pro <- gsub("https","",pro)
pro <- gsub("상품","",pro)
pro <- gsub("웨딩","",pro)
pro <- gsub("%K","",pro)
pro <- gsub("사랑","",pro)
pro <- gsub("커플","",pro)
pro <- gsub("tistory","",pro)
pro <- gsub("product","",pro)
Step - 5
정리된 데이터 파일로 저장
write(unlist(pro),"pro_gift.txt")
rev <- read.table("pro_gift.txt")
nrow(rev)
wordcount <- table(rev)
head(sort(wordcount,decreasing=T),20)
rev
com www kr co https 반지 다이아
45 37 36 34 32 26 20
목걸이 상품 다이아몬드 웨딩 귀걸이 이벤트 꽃다발
16 15 14 12 11 11 10
사랑 커플 tistory 2. product 인기
10 9 8 7 7 7
-->해당 head 를 보고 필요없는 정보는 다시 gsub으로 추가해서 제외한다
Step - 6
글자색 설정후 wordcloud 생성
library(RColorBrewer)
palete <- brewer.pal(9,"Set1")
wordcloud(names(wordcount),freq=wordcount,sale=c(5,0.5),rot.per=0.25,min_freq=2,random.pro=F,random.color=T,color=palete)
Step - 7
이미지 파일 저장
savePlot("Pro.png",type="png")
1-1-2 비정형 data 분석 해보기 Part- 2
-->"프로포즈 선물"의 키워드를 가지고 word cloud 를 생성하자
Step - 1
구글에서 "프로포즈 선물"을 검색해서 10개 페이지의 데이터를 메모장에 저장해서 gift.txt로 만든다
Step - 2
패키지 로딩
library(rJava)
library("KoNLP")
library("wordcloud")
Step - 3
소스파일 로딩
txt <- readLines("gift.txt", encoding="UTF-8")
pro <- sapply(txt,extractNoun,USE.NAMES=F)
Step - 4
불필요 단어 제거
c<-unlist(pro)
pro <- Filter(function(x) {nchar(x) >=2} ,c)
Error in nchar(x) : invalid multibyte string, element 1
[3395]"寃\u0080攼㹣깋攼㹤븯攼㹣떎"
[3396]"攼㹣닔"
[3397]"攼㹣엳攼㹣뒿攼㹢땲攼㹢떎"
[3398] ""
fileEncoding = "euc-kr"
-->c 로 읽어온 문자들의 인코딩이 이상한것을 확인 , readLines 함수에 encoding 추가해서 다시 진행
pro <- gsub("\\n","",pro)
pro <- gsub("\\.","",pro)
pro <- gsub("\\d+","",pro)
pro <- gsub("프로포즈","",pro)
pro <- gsub("수제","",pro)
pro <- gsub("공예","",pro)
pro <- gsub("남자","",pro)
pro <- gsub("여자","",pro)
pro <- gsub("결혼","",pro)
pro <- gsub("친구","",pro)
pro <- gsub("무료","",pro)
pro <- gsub("배송","",pro)
pro <- gsub("선물","",pro)
pro <- gsub("특별","",pro)
pro <- gsub("포장","",pro)
pro <- gsub("com","",pro)
pro <- gsub("www","",pro)
pro <- gsub("kr","",pro)
pro <- gsub("co","",pro)
pro <- gsub("https","",pro)
pro <- gsub("상품","",pro)
pro <- gsub("웨딩","",pro)
pro <- gsub("%K","",pro)
pro <- gsub("사랑","",pro)
pro <- gsub("커플","",pro)
pro <- gsub("tistory","",pro)
pro <- gsub("product","",pro)
Step - 5
정리된 데이터 파일로 저장
write(unlist(pro),"pro_gift.txt")
rev <- read.table("pro_gift.txt")
nrow(rev)
wordcount <- table(rev)
head(sort(wordcount,decreasing=T),20)
rev
com www kr co https 반지 다이아
45 37 36 34 32 26 20
목걸이 상품 다이아몬드 웨딩 귀걸이 이벤트 꽃다발
16 15 14 12 11 11 10
사랑 커플 tistory 2. product 인기
10 9 8 7 7 7
-->해당 head 를 보고 필요없는 정보는 다시 gsub으로 추가해서 제외한다
Step - 6
글자색 설정후 wordcloud 생성
library(RColorBrewer)
palete <- brewer.pal(9,"Set1")
wordcloud(names(wordcount),freq=wordcount,sale=c(5,0.5),rot.per=0.25,min_freq=2,random.pro=F,random.color=T,color=palete)
Step - 7
이미지 파일 저장
savePlot("Pro.png",type="png")
2019년 8월 22일 목요일
Chp3. WORD_CLOUD - 1
본론
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")
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")
피드 구독하기:
글 (Atom)


