BiLSTM을 이용한 영화 리뷰 감성분석
Word2Vec을 통해 임베딩 된 네이버 영화 리뷰 데이터를 BiLSTM을 통해 긍정, 부정을 분류해 주는 프로젝트
1. 모델 구조도
-
정답이 있는 네이버 영화 리뷰 데이터 15만건(박은정님 제공)에 대해서 품사 태깅
-
품사 태깅한 단어들에 대해 Word2Vec을 이용해 학습시킨 임베딩 벡터로 변환
-
단어 벡터들을 BiLSTM에 넣어서 양쪽 끝 state들에 대해서 fully connected layer와 Softmax함수를 이용해 분류
2. 필요한 패키지
3. 데이터
-
Training data : 영화 리뷰 데이터 15만건 ratings_train.txt
-
Test data : 영화 리뷰 데이터 5만건 ratings_test.txt
4. 학습
-
Sentimental-Analysis 폴더를 github로부터 다운로드
-
Word2Vec_train.py로 품사 태깅한 단어들에 대해서 Word2Vec 학습 후 모델 저장 Word2vec.model
-
Word2Vec_Tensorboard.py를 통해 시각화
-
cmd창에 cd ./Sentimental-Analysis-master/Sentimental-Analysis-master/Bidirectional_LSTM 경로로 이동
-
python Bi_LSTM_train.py 명령어를 통해 이진 분류기 학습
epoch 4 이후에 overfitting이 되므로 epoch 4에서 early stopping을 한다.
5. 결과
-
Bi_LSTM_test.py를 통해 test data에 대해서 성능 확인 (86.52%)
-
Doc2Vec, Term-existance Naive Bayes에 의한 성능 보다 뛰어남(박은정)
- Grade_review.py를 통해 직접 입력한 문장에 성능 확인