워드 클라우드 – 파이썬으로 네이버 데이터랩 키워드 활용 방법 #2

오늘은 워드 클라우드를 파이썬 코드로 구현하는 방법에 대해 살펴볼게요. 지난 글에서 네이버 데이터랩을 이용해서 키워드 조회수를 확인하는 방법에 대해 이야기했어요. 오늘은 추출한 키워드와 조회수로 워드 클라우드를 구성해 보겠습니다.

검색 키워드와 데이터 독점 문제, 오픈API로 키워드 추출 방법 #1


워드 클라우드 만들기

네이버 데이터랩 키워드 활용 방법

한때, 빅데이터 어쩌고 하면서 방송이나 뉴스 등에서 클라우드 모양으로 데이터를 표현하는 장면들이 많이 있었어요. 그때는 그런가 보다 하면 지났었는데, 요즘은 디자인적인 요소로써도 워드 클라우드를 사용하는 경우가 많아졌더라고요. 꼭 빅데이터 등 공학 쪽이 아니라 문자를 이용한 디자인적인 측면에서도 많이 이용하고 있는 것 같습니다.

검색 키워드나 트렌드 키워드를 추출하는 방법은 지난 글에서도 언급한 바 있지만, 뉴스 기사의 키워드를 이용하는 방법에서부터 여러 가지가 있을 거예요. 다만, 그렇게 추출한 키워드가 실제 사람들이 검색하는 키워드인가를 확인하는 게 중요하죠. 특히, 사람들은 검색 포털을 많이 이용합니다. 때문에 이러한 검색 포털에서 사람들이 실제로 검색에 사용하는 키워드가 뭔지, 그리고 검색에 자주 사용하는 키워드가 뭔지를 아는 것은 가장 중요한 것 중 하나가 되었어요. 특히, 온라인 마케터나, 트렌드 관련 업무 종사자들에게는 필수 요건이 되었어요. 사람들의 관심이 어디에 있나, 사람들이 필요한 것은 무엇인가, 궁금한 것은 뭘까에 대한 해답이 될 수 있으니까요.

하지만, 특정 키워드에 대한 조회수는 쉽게 얻을 수 없어요. 유료 서비스에 가입해야만 얻을 수 있는데, 국내의 경우 참 다행스럽게도 네이버가 데이터랩 서비스를 통해 확인할 수 있게 해주고 있어요. 물론, 같은 방법으로 구글도 구글 트렌드라는 서비스를 통해 확인해 주죠. 어떤 사이트가 더 신뢰할 수 있는지는 알 수 없습니다. 정보 제공자가 어떤 부분을 가공했는지, 어떤 부분을 선별하고 있는지는 알 수 없으니까요. 다만, 구글의 외부 API를 이용할 경우 유료라는 거고요, 네이버의 경우는 어느 정도 이용 한도 내에서는 무료라는 거예요.

때문에 우리는 선택의 여지가 없이 국내 포털 1위인 네이버 검색 조회수를 확인하는 게 유일한 해답이 됩니다. 물론, 구글 API도 비공식 방법을 통해 키워드 조회수를 확인할 수 있다고는 하지만, 직접 사용해 보면, 그냥 네이버만 사용하는 게 정신건강에 좋을 때가 있더군요. 아니면 구글 유료 서비스를 결제하던가 말이죠.

WordCloud 구현

지난 글에서 소개했던 방법으로 최근 검색 키워드를 추출하고 그 키워드들의 조회수를 아래와 같이 엑셀 파일로 정리했어요.

WordCloud-01
WordCloud-01

생성한 키워드는 총 517개, 가장 최근 조회수 확인일이 4월 26일이네요. 물론 이 키워드에는 연관 키워드까지 포함되므로 핵심 키워드를 중심으로 확장된 단어들입니다.

그러면 이제, 이 키워드와 가장 최근 조회수를 기준으로 워드 클라우드를 구성해 볼게요.

WordCloud 라이브러리

일단, 워드 클라우드(Word Cloud)는 텍스트 데이터를 분석해서 단어의 중요도나 빈도에 따라 크기를 다르게 하여 시각화하는 방법이에요. 많이 등장하는 단어는 크게, 적게 등장하는 단어는 작게 표현하기 때문에 한눈에 핵심 키워드를 파악할 수 있다는 장점이 있습니다. 물론, 이미 다들 보셔서 이런 설명 없이 직관적으로 알고 계실 테지만요.

우선, 파이썬으로 워드 클라우드를 구현하려면 라이브러리를 설치해야 합니다. 시각화를 위해 matplotlib도 설치하고요.

pip install wordcloud
pip install matplotlib


WordCloud 클래스 주요 속성

속성 이름설명비고
width, height워드 클라우드 이미지의 가로, 세로 크기 (px)크기에 따라 해상도 변화
backgound_color배경색 (이미지 전체에 영향)mask와 무관하게 이미지 전체에 영향
colormap단어 색상 조합 (텍스트 칼러를 결정)
front_path한글 사용시 폰트 필수
mask단어 배치 형태를 지정. 이미지 필요하트, 별, 구름 등 다양한 모양 가능
contour_widthmask의 외곽선 두께
contour_color외곽선의 색상

위와 같이 WordCloud 클래스 속성을 간단하게 정리해 볼 수 있는데요, 이 중 개인적으로 가장 중요한 것은 colormap과 mask 정도이지 않나 싶습니다. 사실 디자인/표현의 문제로 WordCloud 클래스 자체보다는 matplotlib나 기타 다른 라이브러리를 추가해야 할 경우가 많기 때문입니다.

colormap

단어에 적용할 섹상 테마. 다시 말하면, 워드 클라우드 전체의 색상 분위기를 정함.

colormap은 크게 3가지로 분류할 수 있어요.

  1. Qualitative (분류형): 다양한 색을 명확하게 구분 ( 범주형 데이터에 적합)
    • Set1, Set3, Pastel1, Dark2 가 해당
  2. Sequential (연속형): 밝은 색에서 어두운 색으로 자연스럽게 변하는 그라데이션 (수치 데이터에 적합)
    • Blues, Greens, Purples
  3. Diverging (양분형): 두 색상에서 양쪽으로 퍼지는 그라데이션 (변화 강조에 적합)
    • coolwarm, RdYlBu


파이썬 코드를 구성

우선 엑셀 파일을 읽어서 키워드와 해당 키워드의 최종일의 조회수를 저장합니다.

file_path = 'keywords_2025-04-27.xlsx' 
df = pd.read_excel(file_path)

recent_date = df.columns[-1] #가장 최근 날짜 컬럼 선택
recent_data = df[['Keyword', recent_date]] #키워드와 최근 조회수 추출

WordCloud 클래스의 generate_from_frequencies 함수를 사용해야 하므로, recent_data를 딕셔너리 형으로 변경합니다.

word_freq = {row['Keyword']: row[recent_date] for _, row in recent_data.iterrows()}


만일, mask 속성을 사용하기 원한다면, 원하는 형태의 mask 이미지를 갖고 있어야 합니다. 예를 들어 원형 mask를 사용한다면 아래와 같이 원형.png 이미지를 갖고 있어야 하죠.

WordCloud mask 이미지
WordCloud mask 이미지
mask_image = np.array(Image.open('원형.png')) #같은 폴더 내..

그럼 이제 준비는 다 됐고, 실제로 WordCloud 클래스를 다음과 같이 구성합니다.

wordcloud = WordCloud(
    background_color='white',
    mask=mask_image,
    colormap='Set1',
    font_path='NanumGothicBold.ttf'  # 한글은 반드시 한글 폰트를 사용해야 합니다.
).generate_from_frequencies(word_freq)

예시를 위해 기존 원도우에 있는 폰트는 사용했어요.

자, 중요한 코드 부분은 다 됐어요. 간단하죠? 이 코드를 실행하면 다음과 같이 결과가 나타납니다.

mask로 원형.png를 사용했더니, 원형 안에 텍스트들이 디자인되었어요. 최근 이슈가 되고 있는 단어들이 분명하게 크게 보입니다.

이번에는 mask를 하트로 변경해 볼까요?

워드 클라우드-01
워드 클라우드-01

역시 mask만 변경됐고, 중요 단어들은 크게 보입니다.

워드 클라우드-02
워드 클라우드-02

자, 여기까지 실제로 추출한 키워드를 이용하여 워드 클라우드로 표현해 보았습니다.



답글 남기기