데이터시각화) 구글코랩colab에서 한글 워드클라우드 만들기
환경:
- 구글코랩
- 개인pc에 저장된 txt 파일데이터
전체 코드(코랩 기준) : 한번에 다 긁어 붙이고 표시된 곳만 개인설정에 맞춰주면 됨
!sudo apt-get install -y fonts-nanum
!sudo fc-csche -fv
!rm ~/.cache/matplotlib -rf
!pip install konlpy
!apt-get update -qq
!apt-get install fonts-nanum* -qq
from google.colab import files
files.upload() #실행시키면 이 코드 바로 아래에 파일 업로드 클릭하는게 뜸
f = open('lecturer.txt', 'r', encoding='utf-8') #위에 업로드한 파일의 파일명 쓰기
text = f.read()
from konlpy.tag import Okt
okt = Okt()
nouns = okt.nouns(text)
stopwords = ['이', '그', '저', '것', '수', '등'] #워드클라우드에서 제외하고 싶은 단어나 조사 등등 작성
nouns = [word for word in nouns if word not in stopwords]
from collections import Counter
count = Counter(nouns)
count = count.most_common(100) #숫자조정가능
from wordcloud import WordCloud
wc = WordCloud(font_path='/usr/share/fonts/truetype/nanum/NanumBarunGothic-YetHangul.ttf', background_color='white', width=500, height=500, max_words=10000) #결과물 크기와 컬러, 폰트 조정
코랩에 한글나눔폰트 경로 설정 방법
wc = wc.generate_from_frequencies(dict(count))
import matplotlib.pyplot as plt
plt.figure(figsize=(500,500)) #결과물크기조정
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
코드 해설(코랩 기준) : 표시된 곳만 개인설정에 맞춰주면 됨
!sudo apt-get install -y fonts-nanum #코랩에 한글폰트 설치
!sudo fc-csche -fv #코랩에 한글폰트 적용(aka. 캐시갱신)
!rm ~/.cache/matplotlib -rf #matplorlib캐시삭제(삭제해야 위에 적용한 한글이 적용됨)
!pip install konlpy #파이썬에 한국어 자연어 처리 패키지 konlpy 설
!apt-get update -qq #코랩목록업데이트 #-qq:출력간소화
!apt-get install fonts-nanum* -qq #font-nanum* : 모든나눔폰트설치 #-qq:출력간소화
from google.colab import files #코랩에 pc에 있는 파일 업로드하는 방법
files.upload() #실행시키면 이 코드 바로 아래에 파일 업로드 클릭하는게 뜸
f = open('lecturer.txt', 'r', encoding='utf-8') #위에 업로드한 파일의 파일명 쓰기
- 텍스트 파일을 읽기 모드로 열고, [f라는 변수]에 [파일 객체]를 할당하는 코드.
- 'r’은 읽기 모드를 의미
- encoding='utf-8’은 파일의 인코딩 방식을 utf-8로 지정하는 옵션
- utf-8은 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나
text = f.read()
- 파일 객체의 read 메소드를 호출하여 파일의 전체 내용을 문자열로 읽어오고, text라는 변수에 저장하는 코드.
- read 메소드는 파일의 현재 위치에서 끝까지 읽어오는 메소드.
- https://m.blog.naver.com/n2ll_/221427614530
from konlpy.tag import Okt #코랩에 Okt라는 형태소 분석기 설치(import)
okt = Okt()
- Okt 클래스의 객체를 생성하고, okt라는 변수에 할당하는 코드.
- 이렇게 하면 okt 변수를 통해 Okt 클래스의 메소드를 사용 가능.
nouns = okt.nouns(text) #Okt 형태소 분석기로 명사noun만 리스트로 저장
stopwords = ['이', '그', '저', '것', '수', '등'] #워드클라우드에서 제외하고 싶은 단어나 조사 등등 작성 #불용어제거
nouns = [word for word in nouns if word not in stopwords] #불용어제거
from collections import Counter
- collections 패키지에서 Counter 클래스를 임포트하는 코드
- Counter 클래스는 텍스트 데이터의 단어 빈도수를 쉽게 계산하고 딕셔너리 형태로 반환하는 클래스.
- https://velog.io/@shlee2227/goai2305311
count = Counter(nouns) #리스트에 저장된 단어의 빈도수 계산후 저
count = count.most_common(100) #숫자조정가능 #count객체에서 가장 빈도수 높은 단어100 저
from wordcloud import WordCloud #wordcloud 패키지에서 WordCloud 클래스를 임포트하는 코드
wc = WordCloud(font_path='/usr/share/fonts/truetype/nanum/NanumBarunGothic-YetHangul.ttf', background_color='white', width=500, height=500, max_words=10000) #결과물 크기와 컬러, 폰트 조정
- WordCloud 클래스의 객체를 생성하고 wc라는 변수에 할당하는 코드
- font_path, background_color, width, height, max_words는 WordCloud 클래스의 생성자에 전달하는 인
- font_path: 워드클라우드에 사용할 폰트의 경로
- background_color: 워드클라우드의 배경색
- width: 워드클라우드의 너비
- height: 워드클라우드의 높이
- max_words: 워드클라우드에 표시할 최대 단어 수
wc = wc.generate_from_frequencies(dict(count))
- wc 객체의 generate_from_frequencies 메소드를 호출하여 워드클라우드를 생성하고 다시 wc에 저장하는 코드
- dict(count)는 텍스트 데이터의 단어 빈도수를 딕셔너리 형태로 변환한 것
import matplotlib.pyplot as plt
- matplotlib 패키지에서 그래프를 그리는 함수모듈인 pyplot 모듈을 plt라는 별칭으로 임포트하는 코드
plt.figure(figsize=(10,10)) #결과물크기조정(단위:인치)너무 큰 값을 주면 그래프 안나옴
plt.imshow(wc, interpolation='bilinear')
- imshow 함수는 이미지 데이터를 입력받아서 화면에 출력하는 함수(wc라는 변수에 저장된 워드클라우드 이미지)
- interpolation 인자는 이미지의 부드러움을 조절하는 인자(이미지 품질 향상)
plt.axis('off')
- 그래프의 축을 표시하지 않는 코드
- axis 함수는 그래프의 축을 설정하는 함수
- 'off’를 인자로 주면, 축의 눈금과 레이블을 모두 제거함
Q)배경지우기가 안됨..
plt.savefig('filename.png', transparent=True) 이 코드 넣어도 결과가 똑같았음.