adp 실기/기출문제

[Python] 데이터 에듀 ADP 실기 모의고사 2회 3번 파이썬 ver. (비정형 데이터마이닝)

ㅅ ㅜ ㅔ ㅇ 2022. 9. 4. 00:01
728x90

사용 데이터 : 연설문.txt

1. 연설문.txt 데이터를 읽어온 뒤, 숫자, 특수 문자 등을 제거하는 전처리 작업을 시행하시오.

import pandas as pd
f = open('../data/연설문.txt')
data = f.read()
data

 

 

import re
data = re.sub(r"[a-zA-Z0-9]","",data)
data

 

특수문자 제거

 

2. 전처리된 데이터에서 명사를 추출하고 명사의 출현 빈도를 10위까지 추출하여 막대그래프로 시각화하시오.

from konlpy.tag import Okt
from collections import Counter

okt = Okt()
nouns = okt.nouns(data)
nouns = [x for x in nouns if len(x) >= 2]
count = Counter(nouns)

noun_10 = count.most_common(10)

noun_10 = pd.DataFrame(noun_10, columns = ['word', 'freq'])
noun_10.set_index('word', inplace=True)

 

단어의 글자수가 2개 이상인 명사 중 가장 많이 출현한 명사를 10위까지 추출함

 

 

import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
import platform
font_path = 'C:/Windows/Fonts/NGULIM.TTF'
font = font_manager.FontProperties(fname = font_path).get_name()
rc('font', family = font)

noun_10.plot(kind='bar', figsize=(10,5), rot=0)
plt.title('상위 10개 단어 추출')
plt.xlabel('단어')
plt.ylabel('빈도')
plt.show()

 

국민, 대통령, 대한민국 순으로 많은 것을 확인

 

 

3. 전처리된 데이터를 이용해 워드클라우드를 작성하고 인사이트를 추출하시오.

from wordcloud import WordCloud
import nltk
from nltk.corpus import stopwords

noun_20 = count.most_common(20)
words = {}
for i in noun_20:
    words[i[0]] = i[1]
wordcloud = WordCloud(font_path = font_path, background_color='white', colormap='Accent_r',
                      width=1500, height=1000).generate_from_frequencies(words)

plt.imshow(wordcloud)
plt.axis('off')
plt.show()

텍스트 마이닝을 통해 추출된 단어들을 워드클라우드로 제작한 결과, 위와같은 결과를 찾을 수 있었으며 워드 클라우드를 통해 민심에 대해 많은 언급을 했음(국민, 우리, 여러분 등)

728x90