빈도 분석은 전체 문서 또는 문서별 단어 출현 빈도를 분석하는 기법으로, 특정 문서 내에 많이 출현하는 단어를 파악하여 핵심 단어를 추출하기 위한 목적으로 수행된다. 또한, 빈도 분석은 수학적 개념이나 알고리즘에 대한 지식 없이도 문서의 핵심적인 내용을 이해할 수 있도록 도와주기 때문에 본격적인 텍스트 마이닝 전에 자료에 대한 이해와 흐름을 살펴보기 위한 기초 분석 단계에서 많이 활용된다.
빈도 분석의 결과는 표나 그래프 형태뿐만 아니라 워드클라우드 (Word Cloud) 형태로도 많이 표현된다. 워드클라우드는 단어 출현 빈도를 시각적으로 나타냄으로써 핵심 단어들을 파악할 수 있으며, 특히 문서별 핵심 단어 비교를 통해 문서 특징의 차이를 한눈에 확인할 수 있다. 특히, 정치 상황이나 여론, 유명인들의 성향을 쉽게 파악할 수 있어 사회 경제 분야에 두루 사용되고 있다. [그림 1]는 워드클라우드의 예시로서 대한민국 19대 대통령 2018년도 예산안 국회 연설문을 워드클라우드로 나타낸 그림이다.
[그림 1] 2018년도 예산안 국회 연설문에 대한 워드클라우드
(출처: http://www.hani.co.kr/arti/PRINT/816990.html)
위 데이터를 사용해 전처리하고, 빈도 분석을 수행한 후, 그 결과를 워드클라우드로 표현해보자. 한국어 텍스트 전처리를 위해 대표적인 한글 형태소 라이브러리인 KoNLPy를 사용한다. KoNLPy는 한글 자연어 처리를 쉽고 간결하게 처리할 수 있도록 만들어진 오픈소스 라이브러리로 국내에 이미 만들어져 사용되고 있는 여러 형태소 분석기를 제공한다.
1) 프로그램 설치
KoNLPy는 자바 모듈을 기반으로 작동하기 때문에 자바 엔진과 자바-파이썬 연동 모듈 등을 설치하는 별도의 과정이 필요하다. 설치 과정은 다음과 같다.
〮JAVA(1.7 이상) 설치하기
Java 설치 파일을 받기 위해 Java 설치 파일을 받기 위해 다운로드 페이지에 접속한다.
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
▶ Java SE Development Kit 8u241 박스의 Accept License Agreement 항목을 체크한 후, 컴퓨터 OS에 해당하는 설치파일을 다운받는다. 필자의 경우 Windows 64bit 환경이기에 마지막 항목을 다운받았다.
〮JDK 설치 및 JAVA_HOME 경로 설정
JDK 소프트웨어를 설치한 후 JDK가 정상적으로 동작하기 위하여 JAVA_HOME 경로를 설정한다. 앞서 설치한 Java SE Development Kit 8은 JDK를 포함하므로 따로 설치할 필요가 없지만, 필요한 경우 아래 URL에 접속하여 소프트웨어를 다운받는다.
https://www.oracle.com/technetwork/java/javase/downloads/index.html
▶ [내 PC] 우클릭-[속성]-[고급 시스템 설정]-[환경변수]를 클릭하여 환경변수 창을 연다. 그런 다음 시스템 변수의 새로 만들기를 눌러 새 시스템 변수를 추가한다. 변수 이름은 JAVA_HOME을, 변수 값은 Java를 설치할 때 설정된 경로를 입력한다.
〮JPype1(0.5.7이상) 설치
KoNLPy는 JAVA로 작성된 모듈을 로드하기 때문에 파이썬에서 자바 라이브러리를 활용하기 위한 JPype1 라이브러리가 설치되어야 한다. 이를 위해 아래 URL에 접속하여 본인의 환경에 맞는 .whl 파일을 다운받아 아나콘다 (Anaconda)가 설치되어있는 폴더 안에 저장한다. 필자의 경우 ‘JPype1-0.7.1-cp37-cp37m-win_amd64.whl’를 다운받았다. cp는 파이썬 버전을 의미하며, win32와 amd64는 운영체제 (OS)의 비트 (Bit)를 뜻한다.
https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype
아나콘다 프롬프트를 관리자 권한으로 실행한 후 아래 코드를 입력하여 JPype1을 설치한다.
pip install KoNLPy
2) 데이터 전처리
형태소 분석을 위한 문자열 변환, 명사 추출, 불용어 제거 등의 전처리 과정을 거친다.
#1. 모듈 및 함수 불러오기
from konlpy.tag import Okt
#2. 문자열 변환
string= ",".join(review)
#3. 명사 추출
okt = Okt( )
nouns=okt.nouns(string)
#4. 두 글자 이상 단어 추출
word_list =[x for x in nouns if len(x) >= 2]
#5. 불용어 제거
stopwords=["영화", "그냥", "정말", "진짜"]
word_list=[i for i in word_list if i not in stopwords]
print(word_list)
3) 빈도 분석 수행
from collections import Counter
count = Counter(word_list)
print(count)
4) 워드클라우드 생성
#1. 라이브러리 설치 및 모듈/함수 불러오기
!pip install wordcloud
from wordcloud import WordCloud
import matplotlib.pyplot as plt
#2. 워드클라우드 생성
font_path = '/usr/share/fonts/truetype/nanum/malgun.ttf'
wc = WordCloud(width = 800, height = 800, font_path = font_path, background_color='white')
#3. 시각화
plt.figure(figsize=(10, 10))
plt.imshow(wc.generate_from_frequencies(count))
plt.axis("off")
This post was written based on what I read and studied the book below.
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791195511747
댓글