미니 프로젝트하면서
뭔가 배운거 써먹어봐야 하나 하는 생각에
워드 클라우드 생각을 했었다.
(결론은 사용을 하지 않았음..ㅋㅋㅋ)
제주도 관련 내용이라 네이버 블로그에서 제주를 검색하여 나온 단어들을 수집한 과정
수업시간엔 주피터를 사용했지만 복습은 코랩으로!!!
코랩(colab)에서 한글 설정
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
진짜 이거 너무 ㅋㅋㅋ 짜증 났음 ㅋㅋㅋ
실행하고 런타임 다시 시작한 다음 진행하는 거! 잊지 말아야 한다.
plt.rc('font' , family='NanumBarunGothic')
# 워드클라우드
!pip install konlpy
!pip install wordcloud
!pip install pytagcloud
!pip install pygame
!pip install simplejson
# 한국어 형태소 분석
from konlpy.tag import Okt, Hannanum, Kkma, Mecab, Komoran
# 워드 클라우드
from wordcloud import WordCloud
import pytagcloud
from collections import Counter
from IPython.display import Image
일단 블로그에서 제주 관련 데이터 크롤링한 결과

여기서
한글 정제
import re
# 주어진 문장에서 한글만 추출해 반환하는 함수
def text_cleaning(text) :
# 한글 정규식(띄어쓰기, ㄱ ~ ㅣ, 가 ~ 힣)
hangul = re.compile('[^ ㄱ-ㅣ가-힣]+')
# 정규식에 위배되는 글자들은 길이가 0인 문자열로 변환한다.
result = hangul.sub('', text)
return result
# 한글 정제
df['title'] = df['title'].apply(lambda x : text_cleaning(x))
df['description'] = df['description'].apply(lambda x : text_cleaning(x))
이렇게 해주면 4번 행처럼 이상한 문자들이 사라지고 깨끗하게 나옴ㅋ
# 모든 문장을 하나의 문장으로 합쳐준다.
title_corpus = ''.join(df['title'])
description_corpus = ''.join(df['description'])
# 제주 단어 삭제한다.
title_corpus = title_corpus.replace('제주', '')
description_corpus = description_corpus.replace('제주', '')
# 명사만 추출한다.
tagger = Okt()
title_nouns = tagger.nouns(title_corpus)
description_nous = tagger.nouns(description_corpus)
# 각 단어에 대한 빈도수를 계산한다.
title_count = Counter(title_nouns)
description_count = Counter(description_nous)
print(title_count)
print(description_count)

이런 식으로 쭉 ~~~~~~~~~~~~~~~~~~~~~~~~~ 나올 것임
# 가장 빈도수가 많은 단어 100개를 선정한다.
ranked_title_tags = title_count.most_common(100)
ranked_description_tags = description_count.most_common(100)
# 워드 클라우드를 위한 단어사전을 만든다.
title_tag_list = pytagcloud.make_tags(ranked_title_tags)
description_tag_list = pytagcloud.make_tags(ranked_description_tags)
# 코랩 한글 폰트 경로 설정
font = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
wc = WordCloud(font_path=font,\
background_color="white", \
width=1000, \
height=1000, \
max_words=100, \
max_font_size=300)
# 단어 빈도수
wc = wc.generate_from_frequencies(title_count)
plt.figure(figsize=(10,10))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()

짜라잔 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
역시 제주는 갈치군 ㅋㅋㅋㅋㅋㅋ
작성 기준일 : 22. 09. 6 / 주피터 노트북
※ 고수님들 만약 내용에 잘못된 부분이 있다면 알려주세요 😉
728x90
'파이썬(Python)' 카테고리의 다른 글
파이썬으로 작곡하기_00 (0) | 2024.06.06 |
---|---|
챗GPT+파이썬 : 출생 데이터 시각화 하기 (2) | 2024.06.04 |
챗GPT+파이썬 : 얼굴 표정에서 감정 인식하기 (0) | 2024.03.05 |
Python - 함수 (0) | 2022.10.19 |
구글 코랩 - 코랩 프로 구독하기 (0) | 2022.10.12 |