본문으로 바로가기

단어~ 자연어 처리가 되었든 안되었든... 말(단어로 된)을 프로그램으로 다루다 보면 워드클라우드가 필요할 때가 있습니다. 오늘은 그 중 제가 볼 때, 가장 접근하기 편하면서 너무나 강력한 워드클라우드를 소개해 드릴까 합니다. 이름도 그냥 wordcloud입니다.~^^ 설치는 pip install wordcloud입니다.~^^

일단 처음에는 영어로 할거라~ 그냥 matplotlib를 import하고

constitution.txt

을 받아 두고 위 코드를 실행하면 됩니다.~ wordcloud 모듈 자체가 빈도를 계산하는 기능을 가지고 있어서 쉽게 결과를 얻을 수 있습니다.

그리고 그냥~ matplotlib에서 그려버리면 그만~~~^^ 그래도 뭔가 허전하시다면~~~ 사실 이걸로 끝인데^^ 좀 더 진행해 보죠^^ 아참.. 언제나 그렇듯.. 이 글은 WordCloud의 공식홈페이지[바로가기]에서 배포하는 예제를 그냥 한 번 실행해 본 것 뿐입니다.

max_font_size를 지정하면 좀 더 많은 단어를 볼 수 있습니다.

이번에는

alice.txt

를 다운 받으시고~

를 받으시면 됩니다.~ 그리고 위 코드를 실행해보시면 됩니다.~~~ 저건 변수 이름에서 눈치채셨겠습니다만... 저 모양으로 마스킹하겠다는 겁니다.^^ 여기서 살짝 PIL 모듈의 Image라는 명령으로 마스킹 데이터를 뽑을 수 있습니다.

뭐~ 마스킹 그림은 저렇구요~~~^^

엘리스 문서에서 단어를 뽑고~

짜잔~~~~ 괜찮죠^^

한가지 기술이 더 들어가면~ 칼라를 살짝 변경해서 저렇게 그레이톤으로~~~ 갈 수도 있습니다.^^

이번에는 starwars입니다.~~~

a_new_hope.txt

이 문서를 받아서 위 코드를 입력하고 마스킹 그림파일은

입니다.

짜잔~~~ 응? 좀 판독이 어렵죠...

어떤가요~ 괜찮죠^^

이번에는 엘리스 텍스트인데.. 마스킹을

으로 사용해보겠습니다.~~

괜찮죠~~ 그런데 WordCloud는 또 재미난 기능을 제공하는데요~

이런 마스킹의 색상에 대한 것을 반영해 줍니다.

요렇게 말이죠~~^^

이제.. 얼마전에 소개한 Lucy Park님의 KoNLPy 모듈[바로가기]을 사용해서 한글을 처리해보죠... 바로 대한민국 헌법입니다.

뭐.. 그냥 눈에 거슬리는 몇몇 단아만 수동으로 stop_words에 걸었습니다.ㅠㅠ

이제... 시작해야죠~~~ 법률, 대통령, 국가, 국회, 국민, 헌법이 많이 사용된 단어이네요~

한글 폰트에 대해 좀 설정해주고~~~[바로가기1바로가기2]

짜잔~~~~ 뭐 쉽네요^^ 근데.. 조금더 욕심을 내볼까요^^

구글링으로 저 그림을 구했습니다. 제가 저 그림을 구한 곳은 [바로가기]입니다. 미리 양해를 구하지 못해 송구합니다.ㅠㅠ.

다운은 위 그림으로 해주세요~

짠~.. 흠.. 좀 심하게 날씬해 보이지만.. 어떤가요.. 괜찮죠^^


댓글을 달아 주세요

  1. BlogIcon 꿈의벨벳 2017.05.31 17:26 신고

    정말 신기하네요ㅎㅎ 첨 봅니다

  2. BlogIcon 핑구야 날자 2017.06.01 07:19 신고

    쓸만한데요 예뻐서 프린트하면 좋겠네요

  3. BlogIcon pennpenn 2017.06.02 07:21 신고

    아이고!
    컴맹인 저는 머리 아픕니다.
    ㅎ ㅎ

    맑은 공기에 기분이 상쾌합니다.
    주말을 멋지게 보내세요.

  4. JTL 2017.06.02 11:19 신고

    전 이상하게 kolaw.open 에서 에러가 나버리네요 :3
    암튼 재밌게 잘 봤습니다 :)

    • BlogIcon PinkWink 2017.06.02 11:45 신고

      혹시 konlpy가 설치되었는지 확인해주세요..
      pip install konlpy
      그런데.. konlpy 설치문서에도 있지만, 이걸 깔기 위해서는 JDK와 Java_home 파라미터 설정이랑, JPype1이 설치되어 있어야 합니다.ㅠㅠ

  5. BlogIcon GeniusJW 2017.06.03 15:21 신고

    텍스트 클라우드로 다양한 모양을 만들 수 있다니,,,
    멋지네요~~ㅋㅋ

  6. BlogIcon SoGentle 2017.06.05 01:47 신고

    감사합니다. 따라해보니 재미있네요.
    바탕화면으로 쓰고 싶은데 해상도가 너무 낮은거 같은데
    혹시 어떤부분을 조절해야 해상도를 높일 수 있는지 아시나요??

    • BlogIcon PinkWink 2017.06.05 08:06 신고

      앗~ 글쎄요.. (잘모르고 그냥 이야기하는 건데..) 혹시 figsize를 키우고, 그림으로 저장하면 되지 않을까요...ㅠㅠ.

  7. 2017.06.10 22:27 신고

    안녕하세요! 정말 좋은 정보 감사드립니다.
    다름이 아니라 제 텍스트로만 바꾸고 올려주신 코드를 그대로 따라해 봤는데,
    Traceback (most recent call last):
    File "<stdin>", line 4, in <module>
    File "C:\Users\hello\AppData\Local\Programs\Python\Python36-32\lib\site-packages\wordcloud\wordcloud.py", line 357, in generate_from_frequencies
    max_frequency = float(frequencies[0][1])
    ValueError: could not convert string to float: 'freq'

    이런 에러가 나네요...! 혹시 도와주실 수 있을까요?

    정말 감사합니다!

  8. 2017.06.10 23:31 신고

    앗 죄송합니다 아까 질문남긴 사람인데요...!
    아까 문제는 해결 된 것 같은데..

    이제는
    Traceback (most recent call last):
    File "<stdin>", line 5, in <module>
    File "C:\Users\hello\AppData\Local\Programs\Python\Python36-32\lib\site-packages\wordcloud\wordcloud.py", line 407, in generate_from_frequencies
    max_font_size=self.height)
    File "C:\Users\hello\AppData\Local\Programs\Python\Python36-32\lib\site-packages\wordcloud\wordcloud.py", line 432, in generate_from_frequencies
    font = ImageFont.truetype(self.font_path, font_size)
    File "C:\Users\hello\AppData\Local\Programs\Python\Python36-32\lib\site-packages\PIL\ImageFont.py", line 238, in truetype
    return FreeTypeFont(font, size, index, encoding)
    File "C:\Users\hello\AppData\Local\Programs\Python\Python36-32\lib\site-packages\PIL\ImageFont.py", line 127, in __init__
    self.font = core.getfont(font, size, index, encoding)
    OSError: cannot open resource

    이 오류가 뜨네요... ㅠㅠㅠ 말씀하신 한글 폰트의 문제인가요..?

    충실하게 따라한 것 같은데 안되어서 너무 속상하네요 ㅠㅠㅠ


    감사합니다 잘해결했습니다!!! 감사합니다

  9. 갱갱 2017.08.14 15:29 신고

    오 재밌네요 잘배우고 갑니다!

  10. 뚜루 2018.04.14 00:11 신고

    안녕하세요! 데이터주무르기로 따라하고 있는데
    8장에 나와있는거 다 설치되어있다고 하는데
    import WordCloud 라고 치면
    ModuleNotFoundError: No module named 'WordCloud' 오류가 나오고

    from wordcloud import WordCloud, STOPWORDS

    import numpy as np
    from PIL import Image 입력하면
    ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다.
    라고 오류가 나와요ㅠㅠ
    설치할만한건 다 설치했는데
    명령프롬프트에도 WordCloud가 있는데 찾을 수가 없대요ㅠㅠ
    부탁드립니다ㅠㅠㅠㅠㅠ

    • BlogIcon PinkWink 2018.04.15 20:59 신고

      몇몇 분들께서 wordcloud의 설치 문제로 문의를 주시는데.. 너무 도움을 드리고 있지 못해 죄송스럽답니다.ㅠㅠ.
      일단,
      pip install pillow==5.0
      으로 해서 시도해보고, jupyter를 다시 실행해서 해보시는 걸 말씀드립니다.
      pil 모듈에서 에러가 나더라구요ㅠㅠ.