정구리의 우주정복
Python Project 04. 영화리뷰 긍정부정 예측하기 -(2) 간단한 전처리 본문
반응형
간단한 전처리를 해주는 부분이다 .
왜 간단이라고 하냐면 전처리를 할때 시간이 너무 오래걸려서 중간에 한번 끊어줬음 ㅜㅜ
이 소스코드는 불용어 제거 , 형태소 단위로 쪼개주기 , 중복데이터 제거 를 해준것을 csv 파일로 만들어주는 소스코드이다
import pandas as pd
import re
from konlpy.tag import Okt
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
import numpy as np
import csv
#call data
train_data = pd.read_csv('/Users/jungry/Desktop/git_study/2020_final_project/ratings_train.txt',header=0,delimiter='\t',quoting=3)
test_data = pd.read_csv('/Users/jungry/Desktop/git_study/2020_final_project/data.csv',header=0)
#데이터 전처리 함수
def preprocessing(review,fire_dragon=[]):
#한글 이외의 것 제거
review_text=re.sub("[^ㄱ-ㅎㅏ-ㅣ가-힣 ]","",review)
#Okt를 사용해 형태소 단위로 쪼개주기
okt=Okt()
word_review = okt.morphs(review_text,stem=True)
#불용어 제거하기
fire_word = [i for i in word_review if not i in fire_dragon]
return fire_word #가볍게 전처리를 한 문자열 반환
fire_dragon = ['의','이','있','하','들','그','되','수','보','않','없','나','사람','아','등','같','오','있','한'] #불용어사전
clean_train_reviews = [] #train data 전처리한거
clean_test_reviews = [] #test data 전처리 한거
#중복 데이터 제거
train_data.drop_duplicates(subset=['document'],inplace=True)
test_data.drop_duplicates(subset=['document'],inplace=True)
#데이터 전처리
for review in train_data['document']:
if type(review) == str:
clean_train_reviews.append(preprocessing(review,fire_dragon=fire_dragon))
else:
clean_train_reviews.append([])
for review in test_data['document']:
if type(review) == str:
clean_test_reviews.append(preprocessing(review,fire_dragon=fire_dragon))
else:
clean_test_reviews.append([])
#전처리 데이터 파일로 저장 (시간절약)
with open('clean_train_reviews.csv','w',newline='') as f:
writer = csv.writer(f)
writer.writerow(clean_train_reviews)
writer.writerow(list(train_data['label']))
with open('clean_test_reviews.csv','w',newline='') as f:
writer = csv.writer(f)
writer.writerow(clean_test_reviews)
writer.writerow(list(test_data['label']))
train_data 는 네이버에서 제공하는 영화리뷰데이터를 사용했고
test_data 는 이전 게시글에서 크롤링한 영화리뷰데이터를 사용했다.
processing() 함수에서는 re.sub 를 이용해 한글 이외의 것을 제거하고
Okt() 를 사용해서 형태소 단위로 나눠주었다.
fire_dragon 이라는 변수에는 불용어를 넣은 List 를 만들어주었고 이런 불용어들을 제거한것을 fire_word 에 넣어줬다
drop_duplicate 를 사용해 중복 데이터들을 제거해줬고
전처리 함수를 실행한뒤 완료된것들을 clean_train,test_reviews.csv 파일로 만들어줬다
반응형
'PYTHON > PROJECT' 카테고리의 다른 글
Python Project 05. 디스코드 봇 "Manta" - 구상 (0) | 2021.12.31 |
---|---|
Python Project 04. 영화리뷰 긍정부정 예측하기 - (3) 전처리 , 학습 (0) | 2020.12.21 |
Python Project 04. 영화리뷰 긍정부정 예측하기 - (1) 크롤링 (0) | 2020.12.21 |
Python Project 04. 영화리뷰 긍정부정 예측하기 - 구상 (0) | 2020.12.21 |
Python Project 03. 디스코드 봇 만들기 (5) - Embed 와 욕설 필터링 하기 (4) | 2020.06.24 |
Comments