코딩 연습/코딩배우기

파이썬 워드클라우드 설치, konlpy Okt() 사용

good4me 2024. 2. 14. 21:44

파이썬 워드클라우드 설치 후 마스크 이미지로 워드클라우드 모양을 만들어 보았는데, konlpy의  Okt()를 사용하지 않으면 문장의 형태소 문제로 인해 제대로 된 텍스트 마이닝이 되지 않았다.

 

 

본 글에서는 파이썬과 윈도우 환경에서 konlpy의 Okt()를 사용하기 위한 자바 jdk 설치, konlpy 라이브러리 설치, 그리고 워드클라우드를 표시하기 위한 마스크 이미지를 만들 수 있는 파이썬 코드를 작성해보려고 한다.

 

 

자바 jdk 설치

konlpy 라이브러리를 사용하기 위해서는 자바 JDK가 설치되어 있어야 한다고 하여, JDK 17 버전을 받아서 설치함 

JDK(Java SE Development Kit) 17 다운로드(오라클 사이트)

 

 

다운로드 파일 설치 시 "Next>"만 계속 클릭하여 설치를 완료한다. (Java 코딩이 아니기 때문임)

 

jdk17 설치 경로 확인
jdk17 설치 경로 확인

JDK 설치 경로를 확인한다.

 

jdk17 설치 종료
jdk17 설치 종료

 

Next Steps 가 아닌 Close 버튼 클릭하여 설치를 종료한다.

 

 

JAVA 환경변수 등록

 

윈도우 시작 버튼 클릭 후 '변수' 검색
윈도우 시작 버튼 클릭 후 '변수' 검색

 

윈도우 시작 버튼 클릭 후 '변수'를 검색하고 '시스탬 환경 변수 편집'을 클릭한다.

 

고급 환경변수시스템 변수에 새로만들기
고급 환경변수 클릭 후 시스템 변수에 새로 만들기 클릭

 

 

IT, 전자제품 선물

 

  • 상단 '고급' 탭을 클릭하고 하단의 '환경변수'를 클릭 후 '시스템 변수' 항목 하단의 '새로 만들기' 버튼 클릭
  • 새 시스템 변수의 변수 이름에 'JAVA_HOME'을, 변수 값에는 JDK 17이 설치된 경로를 입력하고 확인, 확인, 확인 버튼을 연속 눌러서 팝업창을 닫는다.
  • cmd 명령프롬프트(윈도우 시작 >  검색 'cmd' 입력)를 띄우고 java -version 입력, 엔터 시 아래 이미지와 같이 나오면 정상적으로 설치가 된 것임

java jdk 설치 확인
java jdk 설치 확인

 

 

파이썬 워드클라우드 설치, konlpy 라이브러리 설치

파이썬에 워드클라우드(WordCloud), konlpy 라이브러리 설치하는 명령은 다음과 같다. pillow도 필요하기 때문에 같이 설치한다.

워드클라우드(wordcloud) 라이브러리 설치 : pip install wordcloud
konlpy 설치 : pip install konlpy
이미지 다루는 라이브러리 pillow 설치 : pip install pillow

 

(venv) D:\Python\python_dev>pip install wordcloud
Collecting wordcloud
  Downloading wordcloud-1.9.3-cp39-cp39-win_amd64.whl.metadata (3.5 kB)
Requirement already satisfied: numpy>=1.6.1 in d:\python\python_dev\venv\lib\site-packages (from wordcloud) (1.24.3)
Requirement already satisfied: pillow in d:\python\python_dev\venv\lib\site-packages (from wordcloud) (9.4.0)
Collecting matplotlib (from wordcloud)
  Downloading matplotlib-3.8.2-cp39-cp39-win_amd64.whl.metadata (5.9 kB)
Collecting contourpy>=1.0.1 (from matplotlib->wordcloud)
  Downloading contourpy-1.2.0-cp39-cp39-win_amd64.whl.metadata (5.8 kB)
Collecting cycler>=0.10 (from matplotlib->wordcloud)
  Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.22.0 (from matplotlib->wordcloud)
  Downloading fonttools-4.48.1-cp39-cp39-win_amd64.whl.metadata (162 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 162.2/162.2 kB 9.5 MB/s eta 0:00:00
Collecting kiwisolver>=1.3.1 (from matplotlib->wordcloud)
  Downloading kiwisolver-1.4.5-cp39-cp39-win_amd64.whl.metadata (6.5 kB)
Requirement already satisfied: packaging>=20.0 in d:\python\python_dev\venv\lib\site-packages (from matplotlib->wordcloud) (23.1)
Requirement already satisfied: pyparsing>=2.3.1 in d:\python\python_dev\venv\lib\site-packages (from matplotlib->wordcloud) (3.1.1)
Requirement already satisfied: python-dateutil>=2.7 in d:\python\python_dev\venv\lib\site-packages (from matplotlib->wordcloud) (2.8.2)
Requirement already satisfied: importlib-resources>=3.2.0 in d:\python\python_dev\venv\lib\site-packages (from matplotlib->wordcloud) (6.0.0)
Requirement already satisfied: zipp>=3.1.0 in d:\python\python_dev\venv\lib\site-packages (from importlib-resources>=3.2.0->matplotlib->wordcloud) (3.15.0)
Requirement already satisfied: six>=1.5 in d:\python\python_dev\venv\lib\site-packages (from python-dateutil>=2.7->matplotlib->wordcloud) (1.16.0)
Downloading wordcloud-1.9.3-cp39-cp39-win_amd64.whl (300 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 300.6/300.6 kB ? eta 0:00:00
Downloading matplotlib-3.8.2-cp39-cp39-win_amd64.whl (7.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.6/7.6 MB 34.9 MB/s eta 0:00:00
Downloading contourpy-1.2.0-cp39-cp39-win_amd64.whl (181 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 181.9/181.9 kB ? eta 0:00:00
Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)
Downloading fonttools-4.48.1-cp39-cp39-win_amd64.whl (2.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2/2.2 MB 34.4 MB/s eta 0:00:00
Downloading kiwisolver-1.4.5-cp39-cp39-win_amd64.whl (56 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.2/56.2 kB ? eta 0:00:00
Installing collected packages: kiwisolver, fonttools, cycler, contourpy, matplotlib, wordcloud
Successfully installed contourpy-1.2.0 cycler-0.12.1 fonttools-4.48.1 kiwisolver-1.4.5 matplotlib-3.8.2 wordcloud-1.9.3

[notice] A new release of pip is available: 23.3.1 -> 24.0
[notice] To update, run: python.exe -m pip install --upgrade pip

(venv) D:\Python\python_dev>pip install konlpy
Collecting konlpy
  Downloading konlpy-0.6.0-py2.py3-none-any.whl (19.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19.4/19.4 MB 34.4 MB/s eta 0:00:00
Collecting JPype1>=0.7.0 (from konlpy)
  Downloading JPype1-1.5.0-cp39-cp39-win_amd64.whl.metadata (5.0 kB)
Requirement already satisfied: lxml>=4.1.0 in d:\python\python_dev\venv\lib\site-packages (from konlpy) (4.9.2)
Requirement already satisfied: numpy>=1.6 in d:\python\python_dev\venv\lib\site-packages (from konlpy) (1.24.3)
Requirement already satisfied: packaging in d:\python\python_dev\venv\lib\site-packages (from JPype1>=0.7.0->konlpy) (23.1)
Downloading JPype1-1.5.0-cp39-cp39-win_amd64.whl (351 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 351.6/351.6 kB 21.3 MB/s eta 0:00:00
Installing collected packages: JPype1, konlpy
Successfully installed JPype1-1.5.0 konlpy-0.6.0

[notice] A new release of pip is available: 23.3.1 -> 24.0
[notice] To update, run: python.exe -m pip install --upgrade pip

(venv) D:\Python\python_dev>

 

 

 

jpg 이미지를 흑백 마스크 이미지로 만들기

아래 코드는 jpg 이미지를 흑백 png 파일로 만드는 코드임

 

from PIL import Image

# 이미지를 흑백으로 변환하여 마스크로 사용하기 위한 변환 함수
def make_mask_image(filename):
    # 변환 대상 이미지 파일 경로 및 파일명
    target_image = f'./data/{filename}.jpg'
    jpg_image = Image.open(target_image)
    mask_image = jpg_image.convert('L')  # "L"은 흑백으로 변환하는 모드

    # 마스크 이미지 저장
    mask_image.save(f'./data/mask_{filename}.png')

    print('\n마스크 이미지 생성 완료!!\n')

 

워드클라우드 마스크 이미지로 사용할 적당한 크기의 jpg 이미지의 filename과 경로를 지정해주면 흑백 이미지가 생성이 된다.

 

 

워드클라우드 및 konlpy Okt() 사용

생성된 이미지를 워드클라우드 마스크 이미지로 지정해주면 되며, 워드클라우드를 사용하는 대략적인 코드는 다음과 같다.

(워드클라우드 생성 텍스트 필요)

font = 'C:/Windows/Fonts/malgun.ttf'  # 한글 폰트 지정해야 함

# 이미지 변경 : mask 지정(경로 포함)
mask = np.array(Image.open(f'./data/mask_{filename}.png'))

r_word = okt.nouns(review_concat)
print(r_word)  # list

wc = WordCloud(width=1000, height=800, background_color="white", font_path=font, mask=mask).generate(' '.join(r_word))

# 워드클라우드를 이미지로 저장
wc.to_file(f'./data/wordCloud_{filename}.png')

# 맷플롯립을 사용하여 이미지를 바로 보고싶을 때
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()

 

 

여기까지 파이썬 윈도우 환경에서 워드클라우드와 konlpy를 설치하고 마스크 이미지로 사용할 png 파일을 만드는 코드, 그리고 Okt() 사용하는 간략한 코드를 알아보았다.