1. 워드클라우드
"워드클라우드 파이썬"이라는 검색어를 구글에 입력해보면 여러가지 페이지가 나온다. 당연한 이야기지만...
난 아래와 같이 특정한 주제로 파이썬을 이용하여 워드클라우드 그림파일을 만들기 위해 이 과정을 시작했다.
2. 한국어 형태소 분석기
파이썬으로 위와 같은 워드클라우드를 만들기 위해서는 한국어 형태소 분석기가 필요하다. 보다 구체적인 사항은 여기에서 다룰 내용이 아니기 때문에 생략하고, 한국어 특성을 반영한 분석이 전제가 되어야 위와 같은 그림 파일을 생성할 수 있다. 다만 파이썬을 통하여 한국어 형태소 분석을 위해서는 거쳐야할 지루한 과정이 있다. 3일 정도 거친 온갖 시행착오의 경험을 공유한다.
조금만 검색해보면 알겠지만 파이썬에서 한국어 형태소 분석을 위해서는 KoNLPy를 설치해야 한다. 별로 어려운 작업은 아니지만 각자 자신의 윈도우 운영체제 및 파이썬 버젼에 맞게 KoNLPy를 설치하는 과정이 쉽지 않다.
2-1. KoNLPy 설치에 관해 자세하게 설명한 블로그
파이썬 한글 형태소 분석기 KoNLPy 설치방법 및 에러 해결
R의 형태소 분석기인 KoNLP는 패키지 설치 후 라이브러리로 불러오면 만사 OK였는데
KoNLPy는 JAVA VM 환경에서 작동하게 되어있어서 이것저것 깔고 설정할 것들이 많더라구요.
그 과정에서 타이핑 해야하는 각종 커맨드들...
그리고 환경에 따라 누구한테는 되는데 저한테는 실행이 안되는 케이스들...
닷넷 환경에서 개발만 경험해본 저에게는 상당히 고역이더라구요.
위 블로그 주인장의 말씀이 바로 내 심정을 그대로 투영했다고 할 수 있다 .
블로그에서 설명한 대로 JPype1 및 JDK 를 자신의 윈도우 및 파이썬 환경에 맞게 설치하지 않으면 수 많은 에러와 쥬피터 노트북 커널이 죽는 현상이 발생한다.
다시 한번 강조하지만 "자신의 윈도우 운영체제 및 파이썬 버젼에 맞게 KoNLPy를 설치" 하는 것이 가장 중요하다.
위 블로그 내용 중 몇 가지 첨가할 내용이 있다.
2-1-1. 환경변수 설정
평소에 환경변수를 만져볼 일이 없어 마음만 급해 환경변수를 잘못 설정할 경우 에러가 발생한다. 읽어보고 싶진 않겠지만 읽어보면 나름 재미있다.
2-1-2. JDK 다운 및 설치
JDK 파일을 다운로드시 과거에는 별도 오라클 계정이 필요없었던 것으로 보이나 현재는 오라클 계정 생성이 필요하다.(상당히 귀찮아...)
3. Mecab을 건드린 건 최대의 실수
형태소 분석기에는 여러 종류가 있다. 각 종류별 특성은 아래 페이지를 참조하면 된다.
http://konlpy.org/ko/v0.5.1/api/konlpy.tag/
[자연어처리] 한국어 형태소 분석기 비교 및 관련 링크 모음
전반적으로 Mecab이 속도 및 분석 품질에 있어서도 상위를 차지하고 있어 윈도우에서 Mecab을 설치하기 위해 온갖 삽질을 다해보았다. 결국 아래 블로그를 통해서 설치완료. 윈도우 7을 지원하지 않는다고 하지만 설치가 완료된 것은 확인했다. (다만 Mecab을 형태소 분석 엔진으로 사용해서 발생하는 에러를 아직 해결하지 못했다... ㅠ)
빠르고 단순하게 워드 클라우드를 그리기 위해서는 KoNLPy에 내장된 형태소 분석기를 사용해도 현 수준에서는 크게 문제가 되지 않는다.
4. 그럼에도 불구하고 마주친 쥬피터 커널 죽는 문제
지루하고 험난한 과정을 거쳐 실습이 필요해 인터넷 상에서 예제 코드를 활용해서 작성해본 결과 오류 메세지가 수도 없이 뜬다. 어떻게 해야할까? 어쩔 수 없다. 찾아보고 질문글과 답글을 꼼꼼하고 철저하게 읽어보자.
가장 많은 도움을 받은 곳은 위 블로그의 글과 댓글들이다. 작성된 시점이 2016년 8월 30일이지만 2018년 3월 19일에 내용이 추가되었으며 중간중간에 질문과 답글 등에서 힌트를 얻을 수 있다.
4-1. 커널이 죽는 문제
from konlpy.tag import Twitter
위와 같은 코드를 입력하고 실행하자 마자 커널이 죽는다. 수 많은 검색 끝에 아래 블로그에서 해답을 발견했다.
2) JPype1 을 설치한 후에 import 시켜주면 오류가 말끔히 해결
(이미 JPype1이 설치된 경우 pip uninstall JPype1 을 실행하여 삭제한 후 다시 install 시켜주면 된다!)
나는 위와 같은 JPype1 버전 오류 문제로 확인되었다. 다시 한번 강조하지만 "자신의 윈도우 운영체제 및 파이썬 버젼에 맞게 KoNLPy를 설치" 하는 것이 가장 중요하다.
나 같은 경우에는 파이썬 3.7 버젼이이서 JPype1-0.7.0-cp37-cp37m-win32.whl 버젼을 설치했었으나 오류가 나서 하위 버젼인 JPype1-0.6.3-cp37-cp37m-win32.whl을 새로 설치했다.(둘의 차이가 머지?)
4-2. 오류 메세지 혹은 또 다시 커널이 죽는 문제
같은 형태의 문제로 인해 오류 메세지가 뜨고 커널이 죽는 것인지는 확실하지 않다. 여하튼 또 다시 발생하는 오류는 2가지 정도로 추정된다. 폰트와 Error occurred during initialization of VM Could not reserve enough space for 786432KB object heap 문제
4-2-1. 폰트
폰트와 관련된 문제를 논하기 전에 워드 클라우드를 설명하는 블로그 글들의 차이점을 알아야 한다.
4-2-1-a. pytagcloud
앞서 언급한 위 블로그에서 서두에 설명되어 있는 바와 같이 워드클라우드를 만들기 위해서는 과거 pytagcloud 라이브러리를 활용했으나 최근에는 wordcloud라는 라이브러리를 활용한다. 두 라이브러리 모두 현재 작동은 하며 세부적으로 어떠한 차이점이 있는지는 조금 더 살펴보아야 한다. 여하튼 중요한 점은 블로그마다 설명하는 라이브러리가 다르다는 사실이다.
KoNLPy를 제대로 설치하고 import를 한 후 워드클라우드를 그리는데 있어 내게 나타난 오류 메세지는 전부 폰트와 관련된 것이었다. pytagcloud 및 wordcloud 모두 한글을 지원하지 않아서 깨진다. 위 블로그에서 설명한 pytagcloud의 경우 폰트는 일반적으로 Anoconda를 설치하기 때문에 패키지 내의 pytagcloud의 폰트 폴더 안에 들어가 있다 .
나 같은 경우는 C:\Users\kenxic\Anaconda3\Lib\site-packages\pytagcloud\fonts
따라서 위 블로그에서 설명한 바와 같이 오류 메세지를 방지하기 위해서는 한글 폰트를 각자 아나콘다에 설치된 pytagcloud의 폰트 폴더 안에 한글 글꼴을 추가하고 fonts.jon 을 수정해야한다. (자세한 사항은 위 블로그에 설명이 잘 되어 있다. )
4-2-1-b. wordcloud
한편 wordcloud의 폰트 경로는 pytagcloud와 다르다.
[파이썬/시각화] 대통령 신년사로 배워보는 워드클라우드(word cloud)
우선 위 블로그에서는 wordcloud코드를 사용하고 있으며 폰트 경로를 보면 wordcloud = WordCloud(font_path='c:/Windows/Fonts/malgun.ttf', background_color='white', width=1200, height=800).generate_from_frequencies(dict(tags))와 같이 윈도우 폰트를 직접 사용하는 것을 알 수 있다. 따라서 윈도우내에 존재하는 폰트를 지정하면 된다.
4-2-2. Error occurred during initialization of VM Could not reserve enough space for 786432KB object heap
다시 한번 위 블로그의 댓글을 참조하자.
위 사이트를 참조하여 환경변수 설정해서 경로를 지정해주면 문제가 해결된다. 서두에서 밝혔지만 폰트 문제와 같이 얽힌 것인지는 불확실하다.
위와 같은 과정을 거치면 현재 다른 블로그 등의 코드를 이용해서 간단하게 워드클라우드 작성에는 크게 무리가 없을 것이다.