-
(7) 데이터분석_워드 클라우드데이터분석 2023. 6. 14. 16:26728x90
1. 워드 클라우드(Word Cloud)
- 핵심 단어를 시각화하는 기법
- 문서의 키워드, 개념들을 직관적으로 파악할 수 있게 핵심 단어를 시각적으로 돋보이게 하는 기법
워드클라우드를 사용하기 위해 다운을 받아준다.
!pip install wordcloudfrom wordcloud import WordCloudtext = open('/content/drive/MyDrive/study/데이터분석/alice.txt').read()text# generate(): 단어별 출현 빈도수를 비율로 반환하는 객체를 생성wordcloud = WordCloud().generate(text)import matplotlib.pyplot as pltplt.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 STOPWORDSprint(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 Imageimport numpy as npalice_mask = np.array(Image.open('/content/drive/MyDrive/study/데이터분석/alice_mask.png'))alice_maskwordcloud = 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 konlpyfrom konlpy.corpus import kolawtext = kolaw.open('constitution.txt').read()from konlpy.tag import Oktokt = 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 Countercount = 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()'데이터분석' 카테고리의 다른 글
(9) 데이터분석_상권별 업종 밀집통계 프로젝트 (0) 2023.06.14 (8) 데이터분석_folium (0) 2023.06.14 (6) 데이터분석_형태소 분석 (0) 2023.06.13 (5) 데이터분석_가상 쇼핑몰 데이터 프로젝트 (0) 2023.06.13 (4) 데이터분석_데이터프레임 활용하기 (0) 2023.06.13