Machine Learning/텍스트 마이닝
TfidfVectorizer와 knolpy를 이용한 감성분석 [ knolpy 환경설정 / dropna() 결측치 제거 / kkma.tagset, kkma.nouns( ), kkma.morphs( ), kkma.pos( ) ] [ 네이버 영화 리뷰 텍스트 ]
leehii
2022. 8. 17. 10:09
[ knolpy 사용을 위한 환경설정 ]
1. java 설치(1.7이상) >> cmd에서 java -version 확인
2. 시스템 환경변수 편집에 경로 설정 - Java Home
jvm.dll이 있는 폴더를 시스템 변수의 JAVA_HOME으로 추가하기
(ex) C:\Program Files\Java\jdk-16.0.1\bin\server

3. JPype1(0.5.7 이상) 다운로드

https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype
Archived: Python Extension Packages for Windows - Christoph Gohlke
Archived: Python Extension Packages for Windows - Christoph Gohlke by Christoph Gohlke. Updated on 26 June 2022 at 07:27 UTC. This page provides 32 and 64-bit Windows binaries of many scientific open-source extension packages for the official CPython
www.lfd.uci.edu
파이썬 버젼 확인후 버전에 맞는 파일 다운
파이썬 버젼 확인 방법 >>
import sys
print('파이선 버젼', sys.version)

4. pip install konlpy
JPype를 다운로드 받은 경로에서 아나콘다3 폴더로 옮겨서 해당 파일 설치후
아나콘다 명령프롬프트 실행>>
pip install konlpy
pip install JPype1-1.3.0-cp37-cp37-win_amd64.whl
--------------------------------------------------------------------------------

pd.read_csv로 파일 불러오기




data명.info( )로 내부데이터 및 결측치 확인
훈련셋과 테스트셋의 document에서 결측치가 확인됨


텍스트 형태의 데이터이므로 인코딩 X,
dropna( inplace = True )
함수를 이용해서 결측치가 있는 행을 삭제해줌




vect변수명 = CountVectorizer( )
vect변수명 = TfidfVectorizer( )
로 백터라이저 객체 생성

vect변수명.fit(data명)
으로 단어사전 구축
vect변수명.vocabulary_
으로 구축된 단어사전 확인하기

vect변수명.transform(data명).toarray()
로 토큰화&수치화한후 빈도수 확인하기


형태소 / 명사 / 동사 등의 손쉬운 추출을 위해 konlpy 사용하기
from konlpy.tag import Kkma
도구 불러오기
kkma = Kkma()
객체생성
kkma.nouns( )
명사추출
kkma.morphs( )
형태소 추출
kkma.pos( )
품사를 부 착하여 형태소 추출하기

def 사용자 정의 함수로 konlpy를 이용해서 추출하는 함수를 만들어주고
vect변수명 = 사용할 백터라이저( tokenizer = ? )
으로 백터라이저와 konlpy를 연결해줌

vect변수명.fit(data명)
으로 단어사전 구축
vect변수명.vocabulary_
으로 구축된 단어사전 확인하기


kkma.tagset
: 품사태그 종류를 확인하는 함수
vv 동사 / NNG 일반명사 / VA 형용사

kkma.pos(data명)
: 품사 태깅

df명.set_index('인덱스로 지정할 컬럼', inplace=True)
품사 태그를 인덱스로 지정해줌


df명.loc( df명.index.intersection( ['인덱싱할 값1','인덱싱할 값2', ...] ) )

kkma.pos( )로 품사 태깅을 한 값을 DataFrame화 한다
이때 컬렴명은 morphs와 tag이며
tag는 인덱스로 바꿔준다
또한 index, 즉 tag에 찾고자하는 값인
vv 동사 / NNG 일반명사 / VA 형용사가 있을경우
해당하는 값이 있는 morphs 컬럼의 값만 인덱싱해서 values로 값만 불러온다
DataFrame명.values
: df의 값만 확인

vect변수명 = CountVectorizer()
vect변수명 = TfidfVectorizer()
로 백터라이저 객체 생성

vect변수명.fit(data명)
으로 단어사전 구축

vect변수명.vocabulary_
으로 구축된 단어사전 확인하기




vect변수명 = 사용할 백터라이저()
객체생성
vect변수명.fit(data명)
단어사전 구축
vect변수명.transform(data명)
토큰화/ 수치화


10000개 데이터만 인덱싱/슬라이싱해서
Logistic_Regression모델로 학습시킴
이후 score로 모델의 일반화 성능 확인

선형분류모델의 규제(정규화)를 할때 사용하는 하이퍼 파라미터 C
C를 낮춰 규제를 높였으나 오히려 성능이 떨어짐 >> 과적합은 아니다
신뢰도를 높이기위해선 데이터의 양을 늘리거나 의미없는 단어를 삭제해아함!



model.predict_proba()
: 모델의 불확실성 확인
값이 클수록 불확실성이 낮고 작을수록 불확실성이 높음







y = ax + b
w 파라미터 (기울기 , 가중치 확인) : model.coef_
b 파라미터 : model.intercept_

