ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터시각화) 구글코랩colab에서 한글 워드클라우드 만들기
    카테고리 없음 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) 이 코드 넣어도 결과가 똑같았음.

     

     

Ai디자인경영자J