Python

[Netflix] WordCloud, 이미지로 결과 표현하기

DAdiary 2024. 5. 31. 14:50

워드 클라우드란?

문서의 키워드, 개념 등을 직관적으로 파악할 수 있도록 핵심 단어를 시각화하는 기법이다.

 

보통 Review나 Description 등 텍스트에서 빈출어를 뽑아내는 등 텍스트 마이닝 용도로 사용된다.

 

from wordcloud import WordCloud : 워드 클라우드 생성에 필요한 모듈
from PIL import Image : 워드 클라우드를 원하는 형태로 그리기 위해 그림을 불러오는 패키지
WordCloud( ).generate(text) : 선언해준 text에서 wordcloud를 생성
  - text 변환 : wordcolud에서 작동할 수 있도록 데이터프레임을 list로 1차 변환시키고 str(문자열)로 2차 변환
  - mask : 단어를 그릴 위치 설정, 흰색(#FFFFFF) 항목은 마스킹된 것으로 간주
  - plt.matplotlib.colors.LinearSegmentedColormap.from_list( ) : 컬러맵 생성

plt.imshow( ) : array에 색을 채워서 이미지로 표시
plt.axis('off') : 축 삭제

 

워드클라우드 결과를 이 이미지 프레임에 맞게 추출해보았다.

 

 

# 워드클라우드 라이브러리 설치
!pip install wordcloud pillow
from wordcloud import WordCloud
from PIL import Image


# wordcolud에서 작동할 수 있도록 데이터프레임을 list로 1차 변환시키고 str(문자열)로 2차 변환
# mask : 단어를 그릴 위치 설정, 흰색(#FFFFFF) 항목은 마스킹된 것으로 간주
# plt.matplotlib.colors.LinearSegmentedColormap.from_list( ) : 컬러맵 생성
plt.figure(figsize=(15, 5))
text = str(list(netflix['description']))
mask = np.array(Image.open("프레임이 될 이미지 경로.jpg"))
cmap = plt.matplotlib.colors.LinearSegmentedColormap.from_list("", ['#221f1f', '#b20710'])


# WordCloud( ).generate(text) : 선언해준 text에서 wordcloud를 생성 , text는 위에서 선언한 netflix['description']으로 적용됨.
# plt.imshow( ) : array에 색을 채워서 이미지로 표시
# plt.axis('off') : 축 삭제
wordcloud = WordCloud(background_color = 'white', width = 1400,  height = 1400, max_words = 170, mask = mask, colormap=cmap).generate(text)

plt.suptitle('Keywords in the description of Movies and TV shows', fontweight='bold', fontfamily='serif', fontsize=15)   

plt.imshow(wordcloud)
plt.axis('off')
plt.show()

 

결과를 통해 Netflix 콘텐츠 description에서 가장 많이 나온 단어로 family, life, love, take, world, find, friend 등을 확인할 수 있었다.

일상생활 주제로 많이 접할 수 있는 가족, 사랑, 친구, 삶과 같은 단어들은 전반적인 이야기에 대한 주제일 것 같고 take, find, world는 어떤 가치를 찾거나 쟁취하는(?) 그런 결론과 관련된 단어인 듯 하다.