728x90
반응형
이전 내용
수행 목표
이전에 수행했던 '파이썬' 키워드 뉴스 기사 웹 스크래핑 + 워드 클라우드 작업에서 실패했던
애플로고에 워드 클라우드 마스킹 작업을 하고, 워드 클라우드 및 마스킹 작업에 대해 좀 더 명확히 이해할 수 있도록 한다.
웹 스크래핑, 토큰화, 불용어 처리 및 워드 클라우드 (사전 작업)
해당 작업은 동일하므로, 이전에 작업 시 작성했던 포스팅 (상단)을 확인하도록 한다.
다만, 불용어 처리는 몇 번 더 실행해 주었다.
# 불용어처리(여러 번 수행)
stop_words = [',', '을', '은', '는', '이', '가', 'keep', 'Keep','(', '으로', '...',
'하기', '의', '를', '된', '컨', '조', '순', '도', '바로가기',
'자세히', '/', '한', '해', '・', '', '△', '·', '3', '개월', '로',
'된다면', '주세요', '지', '에서', '등', '40', '1', '와', '끄기',
'.','에','언론사',')','보기','닫기','도움말','전체','선택', "'",
'과','펼치기','접기','화','인','-','언','하','1시간','"', '▲', '전', '검색',
'2', '옵션', '뉴스', '메인', '‘', '이미지', 'iN', '블로그', '카페', '저장']
#용어가 제거된 텍스트를 기반으로 nltk 라이브러리의 Text 객체를 생성
tokens_ko = [each_word for each_word in tokens_ko if each_word not in stop_words]
ko = nltk.Text(tokens_ko, name='파이썬')
ko.vocab().most_common(50)
빈도수 그래프를 그려서 불용어를 추가하는 작업을 반복했다.
plt.figure(figsize=(15,6))
ko.plot(50)
plt.show()
그렇게 나온 결과로 워드 클라우드(기본) 그리기
# 데이터 준비
data = ko.vocab().most_common(300)
# 워드클라우드 객체 생성 (폰트 지정)
wordcloud = WordCloud(font_path="c:/Windows/Fonts/malgun.ttf",
relative_scaling=0.5, # 상대적인 크기 조정값 설정
background_color='white', # 배경은 흰색
width=800, height=400 # 이미지의 가로와 세로 크기 설정
)
# 텍스트 생성
text = "\n".join([f"{word}: {freq}" for word, freq in data])
# 워드클라우드 생성
wordcloud.generate(text)
# 이미지 출력
plt.figure(figsize=(16, 8))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
애플로고에 워드 클라우드 마스킹 하기
먼저, 애플로고 png 파일을 파이썬으로 불러온다.
#이미지 마스크 생성 (이미지 파일을 열어 Numpy 배열로 변환 후 mask 변수에 저장)
apple_mask = np.array(Image.open('C:/Users/pc02/Documents/Python Prac/apple.png')) #이미지 마스크 생성
# 이미지 불러오기
plt.figure(figsize=(8, 8))
plt.imshow(apple_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis('off')
plt.show()
단어를 애플로고에 겹치기
애플로고에 맞춰 워드 클라우드를 생성하는 코드를 작성하여 실행해 본다.
# 워드클라우드 객체 생성 (폰트 지정 및 마스크 적용)
wordcloud = WordCloud(
font_path="c:/Windows/Fonts/malgun.ttf", # 한글 폰트 경로 지정 (필요한 경우)
background_color='white', # 배경은 흰색
mask=apple_mask, # 애플 마스크 이미지 적용
#contour_color='black', # 외곽선 색상 설정 (선택 사항 - 생략)
#contour_width=1, # 외곽선 두께 설정 (선택 사항 - 생략)
width=800, # 이미지의 가로 크기 (마스크 이미지에 맞춰 조정)
height=400 # 이미지의 세로 크기 (마스크 이미지에 맞춰 조정)
).generate(text)
# 워드클라우드 이미지 출력
plt.figure(figsize=(16, 8))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off') # 플롯에서 축 제거
plt.show()
생성은 됐는데... 뭔가 이상하다.
사과 모양에 맞춰 생성이 돼야 하는데, 사과를 중심으로 배경에 생성이 되었다.
다시 시도
문제가 무엇일까를 생각해보다가, 앞서 애플로고 이미지를 불러올 때 이미지가 잘못 불러와 진듯 하다.
기존 코드에 배경과 그림이 반전되어 불러올 수 있게 추가한다.
#이미지 마스크 생성 (이미지 파일을 열어 Numpy 배열로 변환 후 mask 변수에 저장)
apple_mask = np.array(Image.open('C:/Users/pc02/Documents/Python Prac/apple.png')) #이미지 마스크 생성
# 선택사항: 단어가 검은색 영역 안에 표시되도록 하려면 색상을 반전
apple_mask = np.invert(apple_mask)
# 이미지 불러오기
plt.figure(figsize=(8, 8))
plt.imshow(apple_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis('off')
plt.show()
그림과 배경이 반전되어 잘 로드 되었다.
해당 마스크에 워드 클라우드 생성 코드를 입력하면
애플 모양의 워드 클라우드가 생성되었다.
728x90
반응형
'[파이썬 Projects] > <파이썬 데이터 분석>' 카테고리의 다른 글
[워드클라우드] 코로나 뉴스 기사 (feat.주사기 마스킹) (2) | 2024.08.19 |
---|---|
[파이썬] 네이버 뉴스 댓글 추첨 (feat.임영웅) - 2 (0) | 2024.06.29 |
[파이썬] 네이버 뉴스 댓글 분석(feat.임영웅) - 1 (0) | 2024.06.28 |
[파이썬] 지도시각화: 한남동, 이태원 맛집 분석 - 4 (1) | 2024.06.26 |
[파이썬] 자연어처리(NLP): 한남동, 이태원 맛집 분석 - 3 (6) | 2024.06.25 |