ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (7) 데이터분석_워드 클라우드
    데이터분석 2023. 6. 14. 16:26
    728x90

    1. 워드 클라우드(Word Cloud)

    • 핵심 단어를 시각화하는 기법
    • 문서의 키워드, 개념들을 직관적으로 파악할 수 있게 핵심 단어를 시각적으로 돋보이게 하는 기법

    워드클라우드를 사용하기 위해 다운을 받아준다.

    !pip install wordcloud
    from wordcloud import WordCloud
    text = open('/content/drive/MyDrive/study/데이터분석/alice.txt').read()
    text

    # generate(): 단어별 출현 빈도수를 비율로 반환하는 객체를 생성
    wordcloud = WordCloud().generate(text)

    import matplotlib.pyplot as plt
     
    plt.figure(figsize=(15,10))
    plt.imshow(wordcloud)
    plt.axis('off')
    plt.show()

    # max_words: 워드 클라우드에 표시되는 단어의 개수를 설정
    wordcloud = WordCloud(max_words=100).generate(text)
    plt.figure(figsize=(15,10))
    plt.imshow(wordcloud)
    plt.axis('off')
    plt.show()

    import matplotlib.font_manager as fm

    sys_font = fm.findSystemFonts()
    [f for f in sys_font if 'Nanum' in f]
     

    wordcloud = WordCloud(max_words=100,font_path='/usr/share/fonts/truetype/nanum/NanumMyeongjoExtraBold.ttf').generate(text)
    plt.figure(figsize=(15,10))
    plt.imshow(wordcloud)
    plt.axis('off')
    plt.show()

    # 불용어 등록. 워드 클라우드로 작성할 단어에서 제외할 단어를 설정
    from wordcloud import STOPWORDS
    print(STOPWORDS)

    STOPWORDS.add('said') # 쓰지 않을 단어에 등록
    wordcloud = WordCloud(max_words=100,
                          font_path='/usr/share/fonts/truetype/nanum/NanumMyeongjoExtraBold.ttf',
                          stopwords=STOPWORDS).generate(text)
    plt.figure(figsize=(15,10))
    plt.imshow(wordcloud)
    plt.axis('off')
    plt.show()

    from PIL import Image
    import numpy as np
    alice_mask = np.array(Image.open('/content/drive/MyDrive/study/데이터분석/alice_mask.png'))
    alice_mask

    wordcloud = WordCloud(max_words=100,
                          font_path='/usr/share/fonts/truetype/nanum/NanumMyeongjoExtraBold.ttf',
                          stopwords=STOPWORDS,
                          mask = alice_mask,
                          background_color='ivory').generate(text)
    plt.figure(figsize=(15,10))
    plt.imshow(wordcloud)
    plt.axis('off')
    plt.show()

    !pip install konlpy
    from konlpy.corpus import kolaw
    text = kolaw.open('constitution.txt').read()

    from konlpy.tag import Okt
     
    okt = Okt()
    noun_text = okt.nouns(text)
    print(noun_text)

    noun_text.sort(key=lambda x: len(x))
    print(noun_text)

    stop_words = ['함','것','제','정','바','그']
    noun_text = [each_word for each_word in noun_text if each_word not in stop_words]
    print(noun_text)

    noun_text = [each_word for each_word in noun_text if len(each_word) > 1]
    print(noun_text)

    from collections import Counter
    count = Counter(noun_text)
    print(count)

    data = count.most_common(100)
    data = dict(data)
    print(len(data))
    print(data)

    # 딕셔너리에 저장된 데이터를  워드 클라우드로 생성하려면 generate_from_frequencies()를 사용
    wordcloud = WordCloud(max_words=100,
                          font_path='/usr/share/fonts/truetype/nanum/NanumMyeongjoExtraBold.ttf'
                          ).generate_from_frequencies(data)
    plt.figure(figsize=(15,10))
    plt.imshow(wordcloud)
    plt.axis('off')
    plt.show()

    mask = np.array(Image.open('/content/drive/MyDrive/study/데이터분석/korea_mask.jpg'))
    # 딕셔너리에 저장된 데이터를  워드 클라우드로 생성하려면 generate_from_frequencies()를 사용
    wordcloud = WordCloud(max_words=100,
                          font_path='/usr/share/fonts/truetype/nanum/NanumMyeongjoExtraBold.ttf',
                          background_color='ivory',
                          mask=mask
                          ).generate_from_frequencies(data)
    plt.figure(figsize=(15,10))
    plt.imshow(wordcloud)
    plt.axis('off')
    plt.show()

    댓글

Designed by Tistory.