#!/usr/bin/env python
# coding: utf-8
#
# # **Word Cloud - 말뭉치 응용**
# ## **1 Stemming Tagging의 활용 (한글문서 전처리 작업)**
# 1. 특정 형태소의 Token만 추출하기
# 1. **Stemming** 작업은 **동사, 형용사** 에만 적용
# 1. 한글의 특성상 이를 활용하면 **명사의 정규화** 작업이 가능하다
# In[ ]:
# Twitter() 를 활용하여 Stemming, Tagging 추가하기
from konlpy.tag import Twitter
twitter = Twitter()
tokens = twitter.pos('김정은과 문재인의 평양만남', stem=True)
tokens
# In[ ]:
# 명사 Token을 추출하기 1
result = []
for token in tokens:
if token[1] == "=Quiz!=":
result.append(token[0])
result
# In[ ]:
# 명사 Token을 추출하기 2
# List 객체 함수를 활용
result_list = [token[0] for token in tokens
if token[1] == "=Quiz!="]
result_list
# In[ ]:
" ".join(result)
# ## **2 Word Cloud 간단적용**
# In[ ]:
# ! pip install wordcloud
# In[ ]:
# DDP 평양 남북정상회담 국민보고문 불러오기
with open('./data/pyongyang_fin.txt', 'r', encoding='utf-8') as f:
texts = f.read()
texts[:100]
# In[ ]:
# ! pip install matplotlib
# In[ ]:
get_ipython().run_line_magic('matplotlib', 'inline')
# Text Document를 별도의 전처리 없이 Word Cloud 모듈에 바로적용
from wordcloud import WordCloud
wcloud = WordCloud('./data/D2Coding.ttf',
relative_scaling = 0.1,
background_color='white').generate( =Quiz!= )
import matplotlib.pyplot as plt
plt.figure(figsize=(12,12))
plt.imshow(wcloud, interpolation='bilinear')
plt.axis("off")
# In[ ]:
# Token 빈도결과값
from nltk import FreqDist
from nltk.tokenize import word_tokenize
import pandas as pd
tokens = word_tokenize(texts)
freqtxt = pd.Series(dict(FreqDist(tokens))).sort_values(ascending=False)
freqtxt[:10]
#
# ## **3 명사만 추출하여 Wordcloud 만들기**
# 1. _**평양**_ 에서 _**백두산**_ 의 등반과정에서 _**날씨**_ 가 좋다
# 1. **Stemming**은 **동사/ 형용사**의 어근/ 어간을 추출한다
# 1. 한글의 **명사**는 **조사, 접사가 붙어 있고** 분리를 위해 **Tag**를 활용
# In[ ]:
# 원본 Text 내용 살펴보기
texts[:300]
# In[ ]:
# Twitter 모듈을 활용하여 명사만 추출
tokens = twitter.pos(texts, stem=True)
tokens_noun = [token[0] for token in tokens
if token[1] == "=Quiz!="]
texts_noun = " ".join(tokens_noun)
texts_noun[:300]
# In[ ]:
get_ipython().run_line_magic('matplotlib', 'inline')
wcloud = WordCloud('./data/D2Coding.ttf',
relative_scaling = 0.1,
background_color = "white").generate( =Quiz!= )
plt.figure(figsize=(12,12))
plt.imshow(wcloud, interpolation='bilinear')
plt.axis("off")
# In[ ]:
# Token 빈도결과값
tokens = word_tokenize(texts_noun)
freqtxt = pd.Series(dict(FreqDist(tokens))).sort_values(ascending=False)
freqtxt[:20]