8. 데이터 분석하기한글분석(22.07.17)
[한글분석 + 워드클라우드]
목표:4차 산업혁명에 관한 한글 기사에서 명사키워드 분석
- 형태소 분석, 품사 태깅
형태소와 형태소 분석이란?:
형태소: 언어에서 의미가 있는 가장 작은 단위
단어: 형태소 + 접사
형태소분석: 형태소,어근,접두사.접미사,품사등 다양한 언어학적 속성으로 구조 파악
품사태깅이란?:형태소의 뜻과 문맥을 고려하여 품사를 붙이는 것
Ex) 가방에 들어가신다 -> 가방/NNG + 에/JKM + 들어가/VV + 시/EPH + ㄴ다/EFN
- > KoNLPy패키지내에 Hannanum, Kkma, Komoran, Mecab, Okt등이 있다.
1.데이터 수집
페이스북 전자신문 페이지에 있는 '4차 산업혁명' 관련 기사 크롤링 데이터
한빛출판네트워크 사이트에서 [파이썬 빅데이터 분석] 책의 예제소스를 다운받는다.
2.데이터 준비
데이터를 전처리 하기전 다양한 패키지들을 import 한다.
import json
import re
from konlpy.tag import Okt
from collection import Counter
import matploilib
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
from wordcloud import WordCloud
inputFileName='data/etnews.kr_facebook_2016-01-01_2018-08-01_4차 산업혁명.'
data=json.loads(open(inputFileName+'json','r',encoding='utf-8').read())
data
[02행]: json파일을 읽어서, data객체에 저장하고 한글이 깨지지 않도록 utf-8로 인코딩
message=''
for item in data:
if 'message' in item.keys():
message=message+re.sub(r'[^\w]',' ',item['message'])+''
message
[02~04행]: data의 keys() 뉴스 본문내용에서 re.sub()을 통해서 문자나 숫자가 아닌 갓은 공백으로 치환하여 제거하고 하나의 문자열로 구성
3.데이터 탐색 및 분석 모델 구축
분석모델을 적용하기 전에 단어의 빈도수를 확인해본다.
nlp=Okt()
message_N=nlp.nouns(message)
message_N
[01행]:품사 태깅 패키지 okt를 사용
[02행]: okt를 사용하여, 명사만 추출하여 message_N에 저장
count=Counter(message_N)
word_count=dict()
for tag,counts in count.most_common(80):
if(len(str(tag))>1):
word_count[tag]=counts
print("%s : %d"%(tag,counts))
[01행]: message_N에 있는 단어별 출현 횟수를 count에 저장
[03~06행]: count에 저장된 출현횟수가 많은 상위 80개의 단어중 길이가 1이상인 것만 딕셔너리에 저장
font_path='c:/windows/fonts/malgun.ttf'
font_name=font_manager.FontProperties(fname=font_path).get_name()
matplotlib.rc('font',family=font_name)
plt.figure(figsize=(12,5))
plt.xlabel('키워드')
plt.ylabel('빈도수')
plt.grid(True)
sorted_keys=sorted(word_count,key=word_count.get,reverse=True)
sorted_values=sorted(word_count.values(),reverse=True)
plt.bar(range(len(word_count)),sorted_values,align='center')
plt.xticks(range(len(word_count)),list(sorted_keys),rotation='75')
plt.show(0)
[01~03행]: font를 설정
[04~12행]:word_count의 저장된 단어와 빈도수를 가지고 히스토그램 생성
4.결과 시각화
wc=WordCloud(font_path,background_color='ivory',width=800,height=600)
Cloud=wc.generate_from_frequencies(word_count)
plt.figure(figsize=(8,8))
plt.imshow(Cloud)
plt.axis('off')
plt.show()
[01행]:워드클라우드의 배경을 설정해주고, 불용어를 설정해줌으로써 워드클라우드 객체를 생성
[02행] :워드클라우드 객체에 데이터를 담아서 cloud라는 객체 생성
'데이터분석실습 > 데이터 과학 기반의 파이썬 빅데이터 분석' 카테고리의 다른 글
파이썬 빅데이터 분석 Day 10 (1) | 2023.10.26 |
---|---|
파이썬 빅데이터 분석 Day 9 (1) | 2023.10.26 |
파이썬 빅데이터 분석 Day 7 (1) | 2023.10.26 |
파이썬 빅데이터 분석 Day 6 (0) | 2023.10.26 |
파이썬 빅데이터 분석 Day 5 (1) | 2023.10.26 |