#!/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]