오늘은 불용어 처리를 해보았다!
그리고 그동안 코드만 띡 올렸었는데 공부하면서 알게된 것 간단히 적어보고자 한다! start!!!
Step 1. 불용어 사전 다운로드
텍스트 파일(koreanStopwords.txt)를 다운 받는다.
Step 2. 불용어 사전 코드로 가져오기(list로 변환)
f = open("./data/korean_stopwords.txt", 'r')
lines = f.readlines()
stopwords = []
for line in lines:
line = line.replace('\n', '')
stopwords.append(line)
f.close()
Step 3. 불용어 처리
import re
# Data Preprocessing
def preprocessing(text):
# tokenize into words
hangul = re.compile('[^ ㄱ-ㅣ가-힣]+')
text = hangul.sub('', str(text))
tokens = mecab.morphs(text)
# remove stopwords
stop = stopwords
tokens = [token for token in tokens if token not in stop]
preprocessed_text= ' '.join(tokens)
return preprocessed_text
clean_text = []
i = 0
for data in contents:
preprocessed = preprocessing(data)
clean_text.append(preprocessed)
if i%10 == 0 :
print(i)
i = i+1
contents : 이게 내가 처리하고자 하는 data들 list이다.
data : contents에서 한 개씩 가져오기
clean_text : 전처리한 거 담기
from konlpy.tag import Mecab
mecab = Mecab()
참고로 나는 Mecab이라는 라이브러리를 사용했는데, 이게 띄어쓰기도 잘 구분해준다. 찾아보니 원래 일본어 용이었는데 그걸 한국식으로 바꿨다고 한다. 일본어랑 우리나라 언어랑 문법이 비슷해서 잘 먹히는건가? 잘 모르겠당~~
preprocessing 함수를 보면 정규식(re) 함수로 한글인 것만 뽑아낸다. - 특수문자, 영어 등등 다 버려짐
추가적으로 stopwords도 걸러지는 것을 알 수 있다.
사실 위에꺼가 불용어 처리 끝이다!! 쉽지만 중요하다면 중요할 수 있는 과정이다ㅎㅎㅎ
영어도 불용어 처리하고 싶으면 위와 비슷한 방법으로 하면 된다!!
추가적으로!
y_test_pred=clf.predict_proba(X_test_tfidf)
y_test_pred_one= [ i[1] for i in y_test_pred]
전에 이런 코드를 올렸었다.
y_test_pred는 2가지 예측 값이 나오는데, 왜인지 몰랐었다. 그냥 시키는데로 따라했을 뿐!(그래서 i[1]만 뽑아내는 이유도 몰랐었다ㅠㅠ)
그 이유를 설명하자면 모델을 학습하면 0(스미싱 아니거나) 1(스미싱 이거나) 두 개의 클래스를 예측하도록 학습을 한다.
y_train에 2가지 그룹이 있으니까 자연스럽게 predict_prob 하면 0일 확률인 것 한 개 열, 1일 확률 한 개 열이 나오는 것이다! 그래서 두 개 더해보면 1에 가까워진다.
한마디로 i[1]만 뽑는 이유는 스미싱인 확률만 뽑아내는 것이다!
만약, y_train의 그룹이 0, 1, 2 였다면 y_test_pred는 3가지 예측값이 나올것이당~~
그럼 이만~~~~
'투닥투닥' 카테고리의 다른 글
github 수정 전으로 되돌리기 (0) | 2022.04.14 |
---|---|
github 로그인 글로벌 설정 - 패스워드까지 + 삭제까지 (0) | 2022.04.14 |
git merge (0) | 2022.04.14 |
DACON 금융문자 분석 경진대회 도전2 (0) | 2019.12.27 |
DACON 금융문자 분석 경진대회 도전 (1) | 2019.12.22 |