📚해당 게시글은 '이지스 퍼블리싱' 출판, 데이터 분석가 '김영우'님이 지은 도서 "Do it! 쉽게 배우는 R 데이터 분석" 을 기반으로 작성된 게시글입니다. 저작권 문제 시 게시글을 삭제 하겠습니다 :)
텍스트 마이닝이란 문자로 된 데이터에서 가치 있는 정보를 얻어 내는 방식이다.
텍스트마이닝을 하기에 앞서, 준비할 것들이 조금 많다..
우선 패키지! KoNLP 패키지가 필요한데, 이것은 자바가 설치되어있어야 사용 가능하다.
또한, rJava와 memoise 패키지가 필요하다.
따라서, 자바를 설치 한 후, rJava와 memoise 패키지를 설치 한 후 KoNLP 패키지를 설치했다.
그리고, KoNLP 패키지와 dplyr 패키지를 로드했다.
책에 패키지를 로그했는데 에러 메시지가 출력될 때, 대처 방식이 나와있다! (나도 떴다 에러 메시지... 흑)
다음에는 사전을 설정했다. KoNLP에서 지원하는 NIA 사전은 98만여 개의 단어로 구성되어 있다.
깃허브에서 데이터를 다운로드했고, 이를 불러오는 과정까지 마친 후, 마지막으로 특수문자를 제거해야 한다.
문장에 이모티콘이나 특수문자가 포함되어 있으면 오류가 발생할 수 있기 때문이다. stringr 패키지를 설치한 후, 로드해서 str_replace_all() 함수를 이용해 특수문자를 빈칸으로 처리했다.
(해당 과정은 밑에 실습 캡처본에 포함되어있다!)
- 힙합 가사 텍스트 마이닝
맨 윗줄에 str_replace_all() 함수가 보일 것이다. 괄호 안에는 txt 데이터의 \\W 를 (빈칸)으로 바꾸도록 설정했는데, 여기서 \\W는 '특수문자'를 의미하는 '정규 표현식'이다.
본격적으로 힙합 가사를 텍스트 마이닝 해봅시다!!
1. 힙합 가사에서 명사를 추출한다. extractNoun()
2. 추출한 명사 리스트를 문자열 벡터로 변환해 단어별 빈도표를 생성한다. table(unlist())
3. 이를 데이터 프레임으로 변환한다. as.data.frame(), stringsAsFactors =
4. Var1은 word로, Freq는 freq로 변수명을 변경한다. rename()
5. 두 글자 이상인 단어만 추출한다 nchar()
6. 빈도수(freq)를 기준으로 내림차순 정렬하고, 상위 20행만 출력한 top_20 데이터를 생성한다.
+ 워드클라우드 만들기
아래 캡처본에 보이는 단어가 구름처럼 뭉쳐진.. 저것이 바로 워드 클라우드이다!
단어의 빈도를 구름 모양으로 표현한 그래프 인 것.
워드 클라우드는 단어의 빈도에 따라 글자의 크기와 색이 다르게 표현되어 어떤 단어가 많이 사용됐는지 한눈에 파악 가능하다.
위에서 준비한 힙합 가사 데이터를 가지고 워드 클라우드를 만들어보자!
그 전에, wordcloud 패키지를 설치해줘야한다. 그리고, wordcloud와 RColorBrewer 패키지를 로드해주자!
(RColorBrewer 패키지는 R에 기본적으로 내장되어있는 패키지이므로 별도의 설치는 필요 없다.)
1. 단어 색상 목록 만들기 > 실습에서는 Dark2 색상 목록에서 8개의 색상을 출력했다. brewer.pal()
2. 난수 고정하기 > 워드클라우드는 함수를 실행할 때마다 난수를 이용해 매번 다른 모양의 워드 클라우드를 만들어낸다.
따라서 항상 동일한 워드 클라우드가 생성되도록 난수를 고정해야한다. set.seed()
3. 워드클라우드 생성
3-1. 단어 words =
3-2. 빈도 freq =
3-3. 최소 단어 빈도 min.freq =
3-4. 표현 단어 수 max.words =
3-5. 고빈도 단어 중앙 배치 random.order = F
3-6. 회전 단어 비율 rot.per =
3-7. 단어 크기 범위 scale = c()
3-8. 색상 목록 colors =
이번에는 단어 색을 바꿔보았다.
과정은 바로 위에서 한 방법과 같다. 맨 앞에 단어 색상 목록을 만들 때 다른 색상을 지정해주면 된다.
- 국정원 트윗 텍스트 마이닝
분석에 필요한 데이터는 깃허브에서 받을 수 있다.
1. 데이터 로드 read.csv(), header = , stringsAsFactors =, fileEncoding =
2. 한글로 된 변수명을 영어로 변경 rename()
3. 데이터 내 특수문자 모두 빈칸 처리 (앞서 설명한 방법과 동일) str_replace_all()
4. 명사추출 extractNoun()
5. 추출한 명사 리스트 문자열 벡터로 변환, 단어별 빈도표 생성 table(unlist())
6. 데이터 프레임으로 변환 as.data.frame(), stringsAsFactors =
7. Var1은 word로 Freq는 freq로 변수명 변경 rename()
8. 두 글자 이상 단어만 추출 nchar()
9. 빈도를 기준으로 내림차순 정렬 후, 상위 20행 추출 arrange(desc()), head()
10. ggplot2 로드 (단어 빈도 막대그래프 만드는 과정의 시작)
11. 빈도 순서 변수 생성 arrange()
12. y축은 0에서 2500의 값까지 나타내는 90도 회전한 막대그래프 생성, 빈도 순 막대 정렬하고 빈도 표시
ggplot( aes()), ylim(), geom_col(), coord_flip(), scale_x_discrete(limit = ), geom_text(aes(label = ), hjust= )
+워드클라우드 만들기
위의 데이터를 가지고 워드클라우드를 만들어봤다.
함수와 파라미터 모두 힙합 가사 워드 클라우드 생성 방법과 정말정말 똑같기 때문에 하나하나 설명은 건너뛰는걸로!
+ 워드 클라우드 내 단어 색상 변경
여기도 힙합 가사 워드 클라우드 생성할때와 같은 함수와 파라미터를 사용했으므로 설명 skip!
내 주변에 프로그래밍을 하며 코딩을 하는 사람들이 꽤 있다. 그 사람들이 왜 함수를 다 못외우고 문법을 구글링하는지 알게된 날,,
뇌 용량이 꽉찼다.. 더이상 외워지지 않아.. 어떤식으로 코딩을 하는건지 이해는 가지만 두번째 워드클라우드 생성 실습하는데 도저히 문법이 1도 기억이 안나더라.. 그래도 다행인건 어떤 함수가 어디에 어떻게 쓰이는지 이해는 했다는 것..
보건의료 데이터 분석 실습을 시작해도, 이 책은 꼭 가지고 있어야겠다. 머리에 담지 못하는 내용들에 대해 많은 도움을 줄 것 같다 ㅎㅎ
사실 이번 단원은 코딩을 하는 것 보다 준비 과정이 너무 길었다. 패키지도 많이 다운 받아야되고,, 중간에 에러메시지도 계속 뜨고,,
멘탈이 약간 털려서 실습할 때 실수를 꽤 많이 했다 하핳
내일은 지도 시각화 하는 방법에 대해 알아볼 것이다! 모든 함수를 다 외워야 겠다는 생각은 접어야겠다.. 기초만 이해하면 나중에 분석하는데 어려움은 없을 것 같다.
+ 실습은 그냥 R보다는 R스튜디오로 하는게 더 좋을 것 같다는 생각이 문득 들었다. R스튜디오는 그나마 내가 입력하고자 하는 코드의 힌트??가 뜨기 때문에 더 나을 듯 하다.
'(통계분석) R' 카테고리의 다른 글
10.12(월) 인터랙티브 그래프 (0) | 2020.10.12 |
---|---|
10.10(토) 지도의 시각화 (0) | 2020.10.11 |
10.06(화) 성별 직업 빈도, 종교 유무에 따른 이혼율, 지역별 연령대 비율 (0) | 2020.10.06 |
10.04(일) 데이터 분석 실전 (연령대에 따른 월급 차이, 연령대 및 성별 월급 차이, 직업별 월급 차이 분석) (0) | 2020.10.04 |
10.02(금) 데이터 분석 실전 (성별에 따른 월급 차이, 나이에 따른 월급 차이) (0) | 2020.10.03 |