TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 데이터 분석>

[파이썬] 자연어 처리(NLP) 시작하기 - 3

by 기록자_Recordian 2024. 5. 8.
728x90
반응형
시작에 앞서
해당 내용은 <파이썬으로 데이터 주무르기> -민형기 저, BJPUBLIC 출판사 의 내용을 토대로 작성되었습니다.
보다 자세한 내용은 해당 교재를 확인하여 주시기 바랍니다.

지난 챕터
 

[파이썬] 자연어 처리(NLP) 시작하기 - 2

시작에 앞서해당 내용은 -민형기 저, BJPUBLIC 출판사 의 내용을 토대로 작성되었습니다.보다 자세한 내용은 해당 교재를 확인하여 주시기 바랍니다.지난 챕터  [파이썬] 자연어 처리(NLP) 시작하

puppy-foot-it.tistory.com


워드 클라우드 (word cloud) 개념

 

워드 클라우드(word cloud)란, 자주 나타나는 단어를 크게 보여줌으로써 직관적으로 텍스트를 알리는 데 도움을 준다.

파이썬에서 사용할 수 있는 워드 클라우드가 몇 가지 있는데, 그 중 하나를 소개한다.

 

워드 클라우드 모듈 import

 

먼저 wordcloud 를 설치하고

(만약, WorlCloud 와 STOPWORDS 클래스 세트를 가져오는 명령어를 수행할 때 ModuleNotFoundError: No module named 'Wordcloud'  의 에러가 뜬다면 wordcloud를 설치하면 된다.)

pip install wordcloud

 

몇몇 모듈을 import

# wordcloud 라이브러리에서 WordCloud 클래스와 STOPWORDS 세트가져오기
from wordcloud import WordCloud, STOPWORDS

#  numpy 라이브러리를 가져오기
import numpy as np

# Python 이미징 라이브러리(PIL) 가져오기
from PIL import Image

이상한 나라의 앨리스 분석하기

 

이상한 나라의 앨리스 영문 버전 (txt 파일) 및 앨리스 png 파일 다운(data 폴더)

09. alice.txt
0.14MB
09. alice_mask.png
0.01MB

 

다운 받은 txt 와 png 파일을 파이썬으로 불러온다.

# 텍스트 파일 불러오기
text = open('../data/09. alice.txt').read()

# 이미지 파일을 NumPy 배열로 로드
alice_mask = np.array(Image.open('../data/09. alice_mask.png'))

# 'STOPWORDS' 세트를 사용하여 중지 단어 세트를 초기화하고 여기에 "said"라는 단어를 추가
stopwords = set(STOPWORDS)
stopwords.add("said")

 

※ 불용어는 워드 클라우드를 만들기 전에 텍스트 데이터에서 종종 제거되는 일반적인 단어(예: "the", "and" "is")


platform import 및 한글 폰트 문제 해결 등 기본 설정

 

시각화 작업에 자주 쓰였던 명령을 입력해주고

import platform
import matplotlib.pyplot as plt

#한글 폰트 문제 해결
path = "c:/Windows/Fonts/malgun.ttf"

from matplotlib import font_manager, rc
if platform.system() == 'Windows':
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc('font', family=font_name)
else:
    print('Sorry')

%matplotlib inline

앨리스 모양 그림 띄우기
#Matplotlib의 imshow() 함수를 사용하여 alice_mask로 표시되는 이미지를 표시/컬러맵은 회색조/ 이중선형 보간법
plt.figure(figsize=(8, 8))
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis('off') #플롯에서 축 제거
plt.show()

앨리스 그림 띄우기

워드 클라우드의 단어 카운트 기능 이용하여 최빈 단어 찾기
# WordCloud 개체 만들기 (배경:흰색, 워드 클라우드에 포함될 최대 단어 수: 2000,
# alice_mask" NumPy 배열을 워드 클라우드의 마스크로 사용

wc = WordCloud(background_color='white', max_words=2000, mask=alice_mask,
               stopwords = stopwords) #텍스트에서 제거할 중지 단어 집합을 지정
wc = wc.generate(text) #앞에서 지정한 매개변수를 사용하여 입력 텍스트 데이터(text)에서 워드 클라우드 생성

wc.words_ #WordCloud 개체에 의해 계산된 단어 빈도가 포함된 사전을 검색.(각 키-값 쌍은 입력 텍스트의 단어와 해당 빈도)

단어 분석

 

빈도 분석된 단어를 그림에 겹치기

 

위 코드의 결과를 앨리스그림에 겹치게 한다.

plt.figure(figsize=(12, 12))
plt.imshow(wc, interpolation='bilinear') #imshow() 함수를 사용하여 wc 객체가 나타내는 워드 클라우드 표시
plt.axis('off')
plt.show()

앨리스 워드 클라우드


다음글

 [파이썬] 자연어 처리(NLP) 시작하기 - 4

 

728x90
반응형