[파이썬 머신러닝 가이드] 텍스트 분석 - 한글 텍스트 처리, 텍스트 분석 실습

목차

1. 한글 텍스트 처리 - 네이버 영화 평점 감성 분석


2. 텍스트 분석 실습 - 캐글 mercari price suggestion challenge

 

1. 한글 텍스트 처리 - 네이버 영화 평점 감성 분석

  • KoNLPy 소개

파이썬의 대표적인 한글 형태소 패키지

**형태소 분석 : 말뭉치를 형태소 어근 단위로 쪼개고 각 형태소에 품사 태깅을 부착하는 작업

** 한글 형태소 엔진

-sns 분석에 적합한 twitter 클래스 이용

twitter 객체의 morphs() 메서드를 이요하면 입력 인자로 들어온 문장을 형태소 단어 형태로 토큰화해 list 객체로 반환함.

*항상! 테스트 세트를 이용해 예측할 때는 학습할 때 적용한 TfidfVectorizer를 그대로 사용해야함. 그래야 학습시 설정된 TfidfVectorizer의 피처 개수와 테스트 데이터를 TfidfVectorizer로 변환할 피처 개수가 같아짐.

 

 

2. 텍스트 분석 실습 - 캐글 mercari price suggestion challenge

선형 회귀의 경우 원-핫 인코딩 적용이 훨씬 선호됨.

사이킷런은 원-핫 인코딩을 위해 OneHotEncoder와 LabelBinarizer 클래스를 제공하는데,

이 중 LabelBinarizer 클래스는 희소 행렬 형태의 원-핫 인코딩 변환을 지원함.(생성 시 sparse_out=True로 파라미터를 설정해주면 됨)

 

왜 희소행렬 형태의 원핫인코딩 했냐면,

CountVectorizer, TFidfVectorizer가 fit_transform()을 통해 반환하는 데이터는 희소 행렬 형태라서 앞으로 인코딩 될 다른 컬럼들과도 결합하여 ML 모델을 실행하는 기반 데이터 세트로 재구성 하기 위해서는 앞으로 인코딩 될 애들도 희소행렬 기반 원핫인코딩을 해줘야함.

개별 칼럼으로 만들어진 희소행렬은 사이파이 패키지 sparse 모듈의 hstack() 함수(희소행렬을 손쉽게 칼럼 레벨로 결합해줌)를 이용해 결합함.

 

  • RMSLE

: 오류 값에 로그를 취해 rmse 구하는 방식

ex. 낮은 가격보다 높은 가격에서 오류가 발생할 경우 오류 값이 더 커지는 것을 억제하기 위해서

 

 

** 주의할 점

원본 데이터의 price 칼럼 값이 왜곡된 데이터 분포를 가지고 있어서 정규 분포 형태로 유도하기 위해 로그 값을 취해 변환했다면,

학습할 모델이 사용할 price 값은 로그 값으로 변환된 price 값이므로 예측도 당연히 로그로 변환한 데이터 값 수준의 price 값을 예측할 것.

⇒ 학습 모델을 이용한 예측된 price 값은 다시 로그의 역변환인 지수(Exponential) 변환을 수행해 원복해야함.

# ex)

preds_exmpm = np.expm1(pred)