import matplotlib.pyplot as plt
import platform
import koreanize_matplotlib
import numpy as np
from wordcloud import WordCloud, STOPWORDS
from PIL import Image
%matplotlib inline
text = open('./data/alice.txt').read()
alice_mask = np.array(Image.open('./data/alice_mask.png'))
stopwords = set(STOPWORDS)
stopwords.add('said')
wc = WordCloud(background_color='white', max_words=2000, mask=alice_mask, stopwords=stopwords)
wc = wc.generate(text)
plt.figure(figsize=(12, 12))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
import matplotlib.pyplot as plt
import platform
import koreanize_matplotlib
import numpy as np
import random
from wordcloud import WordCloud, STOPWORDS
from PIL import Image
%matplotlib inline
text = open('./data/a_hope.txt').read()
text = text.replace('HAN', 'Han')
text = text.replace("LUKE'S", 'Luke')
mask = np.array(Image.open('./data/stormtrooper_mask.png'))
stopwords = set(STOPWORDS)
stopwords.add('int')
stopwords.add('ext')
wc = WordCloud(max_words=1000, mask=mask, stopwords=stopwords, margin=10, random_state=1).generate(text)
defualt_colors = wc.to_array()
# 그레이톤으로 그리기 위한 색상함수를 정의
def grey_color_func(word, font_size, position, orientation, random_state=None, **kwargs):
return 'hsl(0, 0%%, %d%%)' % random.randint(60, 100)
plt.figure(figsize=(12,12))
plt.imshow(wc.recolor(color_func=grey_color_func, random_state=3), interpolation='bilinear')
plt.axis('off')
plt.show()
import nltk
import matplotlib.pyplot as plt
import koreanize_matplotlib
from konlpy.tag import Okt
from konlpy.corpus import kobill
from wordcloud import WordCloud, STOPWORDS
%matplotlib inline
doc_ko = kobill.open('1809890.txt').read()
t = Okt()
tokens_ko = t.nouns(doc_ko) # 단어 모음
# nltk 를 사용해서 토큰(빈도수 포함) 분석
ko = nltk.Text(tokens_ko, name='대한민국 국회 의안 제 1809890호')
print(len(ko.tokens)) # 문서에서 토큰의 수, 735
print(len(set(ko.tokens))) # 유일 단어 수, 250
ko.vocab() # 단어마다 개수
stop_words = [
'.',
'(',
')',
',',
"'",
"%",
"-",
"X",
").",
"x",
"의",
"자",
"에",
"안",
"번",
"호",
"을",
"이",
"다",
"만",
"로",
"가",
'를'
] # 한글 stopword는 상황에 따라 복잡해서 직접 입력
ko = [each_word for each_word in ko if each_word not in stop_words]
ko = nltk.Text(ko, name='대한민국 국회 의안 제 1809890호')
plt.figure(figsize=(12,6))
ko.plot(50) # 가장 많이 나온 단어 50개
plt.show()
data = ko.vocab().most_common(150) # 가장 많이 등장하는 150
wordclould = WordCloud(font_path='/Library/Fonts/Arial Unicode.ttf', relative_scaling=0.2, background_color='white').generate_from_frequencies(dict(data))
plt.figure(figsize=(12,8))
plt.imshow(wordclould)
plt.axis('off')
plt.show()
'''
# 더 알기!
plt.figure(figsize=(12,6))
ko.dispersion_plot(['육아휴직', '초등학교', '공무원']) # 전체 문서 길이 중 나오는 위치
ko.count('초등학교') # 특정 단어의 빈도수 조사, 6
ko.concordance('초등학교') # 초등학교 좌우 글자
ko.collocations() #연어
'''
Rerference
1) 제로베이스 데이터스쿨 강의자료