이전 내용
[파이썬] 자연어 처리 (NLP) - 네이버 뉴스 텍스트 분석
분석 내용(목표) 를 통해 익혔던 텍스트 분석 방법을 활용하여네이버 뉴스에서 '파이썬' 이라는 키워드로 기사를 검색해서 빈도수를 분석하고,워드 클라우드를 생성, gensim 으로 유사도 파악 모
puppy-foot-it.tistory.com
수행 목표
이전에 수행했던 '파이썬' 키워드 뉴스 기사 웹 스크래핑 + 워드 클라우드 작업에서 실패했던
애플로고에 워드 클라우드 마스킹 작업을 하고, 워드 클라우드 및 마스킹 작업에 대해 좀 더 명확히 이해할 수 있도록 한다.
웹 스크래핑, 토큰화, 불용어 처리 및 워드 클라우드 (사전 작업)
해당 작업은 동일하므로, 이전에 작업 시 작성했던 포스팅 (상단)을 확인하도록 한다.
다만, 불용어 처리는 몇 번 더 실행해 주었다.
# 불용어처리(여러 번 수행)
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()

그림과 배경이 반전되어 잘 로드 되었다.
해당 마스크에 워드 클라우드 생성 코드를 입력하면

'[파이썬 Projects] > <파이썬 데이터 분석>' 카테고리의 다른 글
[파이썬] 프로젝트 : 웹 페이지 구축 - 2 (데이터 전처리, 시각화) (0) | 2025.03.20 |
---|---|
[파이썬] 프로젝트 : 웹 페이지 구축 - 1 (가상데이터 생성) (0) | 2025.03.14 |
[워드클라우드] 코로나 뉴스 기사 (feat.주사기 마스킹) (2) | 2024.08.19 |
[파이썬] 네이버 뉴스 댓글 추첨 (feat.임영웅) - 2 (0) | 2024.06.29 |
[파이썬] 네이버 뉴스 댓글 분석(feat.임영웅) - 1 (0) | 2024.06.28 |