카테고리 없음

데이터시각화) 구글코랩colab에서 한글 워드클라우드 만들기

AI디자이너 J 2023. 12. 28. 16:20
728x90

환경:

  • 구글코랩
  • 개인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) 이 코드 넣어도 결과가 똑같았음.