데이터사이언스/시각화

[시각화] 위키피디아를 이용한 워드클라우드 구현(word cloud)

bonanza 2021. 1. 6. 20:10

키워드 분석시 많이 쓰이는 방법이 두가지가 있다.

(1) 키워드 네트워크 (keyword network)

 - 한 문장안에 어떠한 단워와 같이 언급되었는지를 확인

 - 보통은 뉴스같은데에서 많이 쓰임

(예시)

 

 

(2) 워드클라우드 (word cloud)

태그 클라우드(영어: tag cloud) 또는 워드 클라우드(word cloud)는 메타 데이터에서 얻어진 태그들을 분석하여 중요도나 인기도 등을 고려하여 시각적으로 늘어 놓아 웹 사이트에 표시하는 것이다. 보통은 2차원의 표와 같은 형태로 태그들이 배치되며 이때 순서는 알파벳/가나다 순으로 배치 된다. 시각적인 중요도를 강조를 위해 각 태그들은 그 중요도(혹은 인기도)에 따라 글자의 색상이나 굵기등 형태가 변한다. 사용자는 이렇게 표시된 태그 중 마음에 드는 키워드를 발견하고 그것을 선택하여 그 메타 데이터에 원래 연결된 웹 페이지로 이동하게 된다.
- 위키피디아 참조

 - 키워드 네트워크는 단어의 빈도와 단어간의 관계를 표현하는 방법이고, 워드클라우드는 단어의 빈도만 표현하는 방법이다

 - 키워드 네트워크는 보통 뉴스같은데에 많이 쓰이고, 실제로는 독립적인 단어를 분석하는 워드클라우드가 더 많이 쓰인다

(예시)

 

1. 파이썬을 이용한 워드클라우드 생성

필요 라이브러리: wordcloud, matplotlib
from wordcloud import WordCloud
import matplotlib.pyplot as plt

* 참고: pypi.org/project/wordcloud/amueller.github.io/word_cloud/index.html

 

  • 텍스트 만들기
text = '태그 클라우드(영어: tag cloud) 또는 워드 클라우드(word cloud)는 메타 데이터에서 얻어진 태그들을 분석하여 중요도나 인기도 등을 고려하여 시각적으로 늘어 놓아 웹 사이트에 표시하는 것이다. 보통은 2차원의 표와 같은 형태로 태그들이 배치되며 이때 순서는 알파벳/가나다 순으로 배치 된다. 시각적인 중요도를 강조를 위해 각 태그들은 그 중요도(혹은 인기도)에 따라 글자의 색상이나 굵기등 형태가 변한다. 사용자는 이렇게 표시된 태그 중 마음에 드는 키워드를 발견하고 그것을 선택하여 그 메타 데이터에 원래 연결된 웹 페이지로 이동하게 된다.'

 - 위에 있는 워드클라우드에 정의에 대한 부분을 text라는 값으로 만듬

 

  • 워드클라우드 생성
# Generate word cloud
wordcloud = WordCloud(font_path='font/NanumGothic.ttf').generate(text)

 - 한글은 font 지정 필요

 

  • 이미지 생성
# Set figure size
plt.figure(figsize=(10, 10))
# Display image
plt.imshow(wordcloud) 
# No axis details
plt.axis("off")
plt.show()

 

  • 완성

 

  • (응용) 물론 text 값을 변경하면 그림이 바뀜

text = '태그 클라우드(영어: tag cloud) 또는 워드 클라우드(word cloud)는 메타 데이터에서 얻어진 태그들을 분석하여 중요도나 인기도 등을 고려하여 시각적으로 늘어 놓아 웹 사이트에 표시하는 것이다. 보통은 2차원의 표와 같은 형태로 태그들이 배치되며 이때 순서는 알파벳/가나다 순으로 배치 된다. 시각적인 중요도를 강조를 위해 각 태그들은 그 중요도(혹은 인기도)에 따라 글자의 색상이나 굵기등 형태가 변한다. 사용자는 이렇게 표시된 태그 중 마음에 드는 키워드를 발견하고 그것을 선택하여 그 메타 데이터에 원래 연결된 웹 페이지로 이동하게 된다.'
# ' Bonanza'라는 단어를 3번 이어붙임
text = text + ' Bonanza'*3
wordcloud = WordCloud(font_path='font/NanumGothic.ttf').generate(text)
plt.figure(figsize=(10, 10))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

 - string은 + (플러스)로 이어붙이기 가능

 

2. 파이썬을 이용한 워드클라우드 생성 (위키피디아 이용)

필요 라이브러리: wordcloud, matplotlib, wikipedia
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import wikipedia

훌륭한 wikipedia에는 python 라이브러를 갖고 있다. 즉, wikipedia 검색한 결과를 갖고올 수 있다.

 

  • 텍스트 만들기
# Search the keyword in wikipedia
wiki = wikipedia.search('artificial inteligence')
# Specify the title of the Wikipedia page
wiki = wikipedia.page(wiki[0])
# Extract the plain text content of the page
text = wiki.content

 

  • 워드클라우드 생성
wordcloud = WordCloud(background_color='white', colormap='winter').generate(text)

 - background_color 및 colormap 설정

 

  • 이미지 생성
# Set figure size
plt.figure(figsize=(10, 10))
# Display image
plt.imshow(wordcloud) 
# No axis details
plt.axis("off")
plt.show()

 

  • 완성

 

  • (응용) wordcloud 의 STOPWORDS 활용

 - 불용어(stopwords): 자주쓰는 단어 제거 (예: a, so, such, there 등)

  (참고: wordcloud github github.com/amueller/word_cloud/blob/master/wordcloud/stopwords)

 

 

 

반응형