데이터분석가 과정/Python
DAY37. Python 문자열 전처리, 세미프로젝트 발표
LEE_BOMB
2021. 11. 5. 17:28
텍스트 전처리
특수문자, 문장부호, 불용어 처리
texts = ['AFAB54747,asabag?', 'abTTa $$;a12:2424.', 'uysfsfA, A124&***$?']
print(texts)
# ['AFAB54747,asabag?', 'abTTa $$;a12:2424.', 'uysfsfA, A124&***$?']
len(texts) # 3
texts[0] # 'AFAB54747,asabag?'
list + for 이용
texts_re = [] # 결과 저장
for st in texts :
re = st.lower() # 소문자 변경
texts_re.append(re)
print(texts_re)
단계1 : 소문자 변경
list 내포 이용 : 변수 = [실행문 for 변수 in 열거형객체 ]
texts_re = [st.lower() for st in texts]
print(texts_re)
['afab54747,asabag?', 'abtta $$;a12:2424.', 'uysfsfa, a124&***$?']
단계2 : 숫자 제거 : re.sub('pattern', 'rep', string)
import re # re 모듈 가져오기
texts_re2 = [re.sub('[0-9]', '', st) for st in texts_re]
print(texts_re2)
['afab,asabag?', 'abtta $$;a:.', 'uysfsfa, a&***$?']
단계3 : 문장부호 제거
punc_str = '[,.?!:;]'
texts_re3 = [re.sub(punc_str, '', st) for st in texts_re2]
print(texts_re3)
['afabasabag', 'abtta $$a', 'uysfsfa a&***$']
단계4 : 특수문자 제거
spec_str = '[@#$%^&*()]'
texts_re4 = [re.sub(spec_str, '', st) for st in texts_re3]
print(texts_re4)
['afabasabag', 'abtta a', 'uysfsfa a']
단계5 : 공백(white space) 제거
2칸 이상 공백 -> 1칸 공백 변환
ex) 'uysfsfa a' -> 'uysfsfa', 'a' -> 'uysfsfa a'
texts_re5 = [' '.join(st.split()) for st in texts_re4]
print(texts_re5)
['afabasabag', 'abtta a', 'uysfsfa a']