250x250
Link
나의 GitHub Contribution 그래프
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] Adp 실기 모의고사 1회 3번 본문

adp 실기

[Python] Adp 실기 모의고사 1회 3번

ㅅ ㅜ ㅔ ㅇ 2022. 3. 21. 17:32
728x90

3. 비정형 텍스트마이닝(사용데이터 : 영화 기생충_review.txt, 영화 기생충_사전.txt)

"영화 기생충_review.txt'는 다음 영화 사이트의 영화 '기생충'에 대한 review데이터이며, '영화 기생충_사전.txt'은 영화 '기생충'의 출연진의 이름과 극중 이름, 감독 이름이 있는 데이터이다. 

 

1. 데이터를 불러온 뒤, 숫자, 특수 문자 등을 제거하는 전처리 작업을 시행하시오. 그리고 '영화 기생충_review.txt'을 사전에 등록하시오.

import pandas as pd
import numpy as np

f = open('영화 기생충_review.txt','r')
data = f.read()

 

-특수문자, 숫자를 공백으로 변환

import re

text = re.sub('[^A-Za-z가-힣\\s]',' ',data)
text

 

-전처리된 데이터 저장

with open('기생충리뷰_전처리.txt','w') as f:
    f.write(text)

 

 

2. TDM을 구축하고 빈도를 파악하고 시각화하시오. 

-각 명사별 빈도 수 카운트

from konlpy.tag import Okt
from collections import Counter

with open('영화 기생충_사전.txt') as f:
    terms = f.read().split("\n")[:-1]



#okt 객체 생성
okt = Okt()
nouns = okt.nouns(text)
count = Counter(nouns)

#명사 빈도 카운트
freq = []
for term in terms:
    freq.append(count[term])
    
#빈도수 데이터 프레임으로 생성
tdm = pd.DataFrame({'terms':terms, 'freq':freq})
tdm = tdm.set_index('terms').sort_values(by = 'freq',ascending = False)
tdm

 

-빈도 시각화

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#matplotlib 패키지 한글 폰트 설정 시작
plt.rcParams["font.family"] = 'Malgun Gothic'

import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (10,6)
plt.rcParams['font.size'] = 16
plt.rcParams['axes.unicode_minus'] = False

fig, ax = plt.subplots(1,1)
plt.title("기생충 리뷰 속 사전 빈도 시각화")
tdm.plot.bar(ax = ax, rot=45)
plt.show()

 

 

3. extractNoun으로 명사를 추출하여 워드클라우드를 그리고 특성을 파악하시오

!pip install wordcloud
from wordcloud import WordCloud
from IPython.display import Image as image

wc = WordCloud(font_path = 'C:\\Windows\\Fonts\\NanumSquareRoundR.ttf',width = 600, height = 200, scale = 1.0, max_font_size = 200, background_color = "#FFFFFF")
wc.generate_from_frequencies(count)
wc.to_file("기생충.png")
image('기생충.png')

 

 

 

Adp 실기 시험 응시하시는 분들 중 파이썬 활용하시는 분들을 위해서 포스팅해봅니다. (ง •_•)ง

728x90
Comments