반응형
# WordCloud (핵심 단어 시각화)
- 문서의 문구와 단어를 분석하여 중요도나 사용빈도를 직관적으로 파악할 수 있도록 시각화하는 표현 기법
- 장점 : 사용자가 문서의 주요 키워드나 중요도를 한 눈에 파악
- 단어 : 단어 간 관계를 표현할 수 없고 정보가 편향될 수 있음
# WordCloud 설치하기
- 저는 아나콘다 네비게이터에서 주피터 노트북을 사용하였습니다.
- 주피터 노트북이나 아나콘다 프롬프트에서 아래의 명령어 입력
- conda install -c conda-forge wordcloud
# WordCloud 라이브러리 호출
from wordcloud import WordCloud, STOPWORDS
# 핵심 단어 시각화 함수
# 불용어 함수
import pandas
# 데이터프레임을 사용하기 위한 라이브러리
# 예시에서 쓰일 데이터프레임
- 아마존 알렉사 제품에 대한 3천개의 리뷰를 통해 감성 분석(핵심 단어 시각화) 해보기
- 확장자가 tsv입니다. csv는 콤마로 구분하지만 tsv는 탭으로 구분합니다.
때문에 구분자를 탭으로 변경하여 파일을 로드해야합니다.
# 핵심 단어 시각화 하기 전에, 하나의 문자열로 변경
- word cloud 함수를 사용하기 위해서는 통합된 하나의 문자열 필요
- 리뷰(verified_reviews) 칼럼의 문자열을 하나의 문자열로 변경
1. 하나의 리스트로 변경
reviews_list = df_alexa['verified_reviews'].to_list()
2. 변환된 리스트를 하나의 문자열로 변경
- ' '.join을 사용하여 문자열 합치기
- '구분자' 안에 들어갈 구분자의 값을 넣어주면 해당 문자열로 연결하여 병합
# 하나의 문자열로 정리
reviews = ' '.join(reviews_list)
# 핵심 단어 시각화하기 (Word Cloud)
- WordCloud() : 핵심 단어 시각화 함수 호출
- background_color : 배경색 지정 가능
- generate( var ) : 문자열 변수를 넣어 시각화 진행
wc = WordCloud(background_color= 'white')
wc.generate(reviews)
# 하나의 문자열로 변경한 reviews 변수를 시각화
- matplotlib(plt) 옵션
- imshow : im(Image) show, 이미지로 시각화
- axis : on/off 각 축의 정보를 보여줄지 말지 설정
plt.imshow(wc)
plt.axis('off')
plt.show()
# 불용어 (STOPWORDS)
- from wordcloud import STOPWORDS 호출
- 반드시 대문자로 사용
- 특정 단어를 시각화 단어에서 제거
- 불용어 추가하기
- STOPWORDS.add("문자열")
- 예시로 Alexa를 불용어로 지정해보자
my_stopwords = STOPWORDS # 불용어 변수 선언
my_stopwords # 불용어 목록 확인
>>> {'a',
'about',
'above',
'after',
'again',
'against',
'all', .... 등등
my_stopwords.add('Alexa') # 불용어 목록에 알렉사 추가
plt.imshow(wc)
plt.axis('off')
plt.show()
- 불용어 Alexa 사용 전/후 비교
- 다른 옵션 변경에 따른 전/후 비교
- background_color / axis
# 특정 이미지의 형태로 핵심 단어 시각화
이미지를 불러오기 위해서는 이미지를 불러 올 수 있는 모듈이 필요하다.
from PIL import Image
# Python Image Library
- 이미지 호출
- Image.open('파일명')
- 주의 : 투명 배경이 존재하는 png 확장자의 이미지 파일을 사용하여야 모양대로 시각화 할 수 있음
img = Image.open('pa22.png')
- 이미지 마스크화
- numpy.array(이미지파일저장변수) : 이미지 파일이 저장되어 있는 변수를 배열로 변환
- 각 좌표별로 RGB값이 저장
img_mask = numpy.array(img)
img_mask
- Word Cloud로 핵심단어를 이미지 마스크를 이용하여 모양대로 시각화
- WordCloud(mask= 마스크의 정보가 담겨있는 변수명)
- generate(핵심 단어 시각화 할 문자열 변수)
wc = WordCloud(background_color='white', mask=img_mask, stopwords=my_stopwords)
wc.generate(reviews)
plt.figure(figsize=(15,10))
plt.imshow(wc)
plt.axis('off')
plt.show()
반응형