IMDB 리뷰 데이터에 대한 이해
- 케라스에서 제공하는 IMDB 영화 리뷰 데이터를 통해 감성 분류를 연습
1) 케라스 데이터셋으로부터 영화 리뷰 데이터를 로드
2) IMDB 리뷰 데이터는 훈련 데이터와 테스트 데이터가 이미 50:50 비율로 구분해서 제공하므로 분리할 필요 없음
3) 훈련용 리뷰의 개수, 테스트용 리뷰의 개수, 카테고리의 수를 출력
4) 훈련용 영화 데이터의 첫 번째 리뷰와 레이블을 출력
현재 이 데이터는 토큰화와 정수 인코딩이 끝난 상태임을 알 수 있음
5) 훈련용 리뷰의 길이를 확인하고 그래프로 시각화
6) 훈련용 데이터의 레이블 분포를 확인
7) 정수로부터 단어들을 찾는 함수를 생성하고 인덱스를 입력하여 단어를 확인
IMDB 리뷰 데이터셋에서 정한 규칙에 따라 imdb.get_word_index()에 저장된 값에 +3을 해야 실제 맵핑되는 정수가 됨
8) 문장의 숫자들을 읽어와서 어떤 단어들로 구성되어있는지 복원해도록 하는 함수를 생성하고 확인
숫자 0은 패딩을 의미하는 토큰인 pad, 숫자 1은 문장의 시작을 의미하는 sos, 숫자 2는 OOV를 위한 토큰인 unk로 맵핑됨
GRU로 IMDB 리뷰 감성 분류하기
- 1) 단어 집합의 크기를 1000으로 제한해 등장 빈도 순위 상위 1000개 단어들만 사용하고 리뷰 최대 길이는 300으로 제한해 패딩
2) 하이퍼파라미터인 임베딩 벡터의 차원은 100, 은닉 상태의 크기는 128로 지정하고 다 대 일 구조의 GRU를 사용
3) 마지막 시점에서 두 개의 선택지 중 하나를 예측하는 이진 분류 문제를 수행하는 모델이므로
출력층에 로지스틱 회귀, 활성화 함수로 시그모이드 함수, 손실 함수로 크로스 엔트로피 함수를 사용
4) EarlyStopping을 사용해 검증 데이터 손실이 증가하면 과적합 징후이므로 4회 증가하면 학습을 조기 종료하도록 함
5) ModelCheckpoint를 사용해 검증 데이터의 정확도가 이전보다 좋아질 경우에만 모델을 저장함
6) validation_split = 0.2를 사용해 훈련 데이터의 20%를 검증 데이터로 분리해서 사용해 훈련이 적절히 되고 있는지 확인
7) 하이퍼파라미터인 배치 크기는 64이며, 15 에포크를 수행함
8) 훈련 과정에서 검증 데이터가 가장 높았을 때 저장된 모델인 'GRU_model.h5'를 로드하고 성능을 평가함
9) 임의의 문장에 대해서 리뷰의 긍, 부정을 예측하기 위해 임의의 문장을 전처리, 정수 인코딩, 패딩하는 함수를 생성
10) 영화 블랙팬서의 1점 리뷰를 가지고 부정으로 예측하는지 테스트
11) 영화 어벤져스의 10점 리뷰를 가지고 긍정으로 예측하는지 테스트
코드
GitHub - GaGa-Kim/ML_Study: 머신러닝 스터디 ⚙
머신러닝 스터디 ⚙. Contribute to GaGa-Kim/ML_Study development by creating an account on GitHub.
github.com
'ML > 딥 러닝을 이용한 자연어 처리' 카테고리의 다른 글
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - LSTM으로 네이버 영화 리뷰 감성 분류하기 (0) | 2022.12.23 |
---|---|
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 나이브 베이즈 분류기 (0) | 2022.12.23 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - LSTM으로 로이터 뉴스 분류하기 (0) | 2022.12.22 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - RNN으로 스팸 메일 분류하기 (0) | 2022.12.21 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 케라스를 이용한 텍스트 분류 (0) | 2022.12.21 |
IMDB 리뷰 데이터에 대한 이해
- 케라스에서 제공하는 IMDB 영화 리뷰 데이터를 통해 감성 분류를 연습
1) 케라스 데이터셋으로부터 영화 리뷰 데이터를 로드
2) IMDB 리뷰 데이터는 훈련 데이터와 테스트 데이터가 이미 50:50 비율로 구분해서 제공하므로 분리할 필요 없음
3) 훈련용 리뷰의 개수, 테스트용 리뷰의 개수, 카테고리의 수를 출력
4) 훈련용 영화 데이터의 첫 번째 리뷰와 레이블을 출력
현재 이 데이터는 토큰화와 정수 인코딩이 끝난 상태임을 알 수 있음
5) 훈련용 리뷰의 길이를 확인하고 그래프로 시각화
6) 훈련용 데이터의 레이블 분포를 확인
7) 정수로부터 단어들을 찾는 함수를 생성하고 인덱스를 입력하여 단어를 확인
IMDB 리뷰 데이터셋에서 정한 규칙에 따라 imdb.get_word_index()에 저장된 값에 +3을 해야 실제 맵핑되는 정수가 됨
8) 문장의 숫자들을 읽어와서 어떤 단어들로 구성되어있는지 복원해도록 하는 함수를 생성하고 확인
숫자 0은 패딩을 의미하는 토큰인 pad, 숫자 1은 문장의 시작을 의미하는 sos, 숫자 2는 OOV를 위한 토큰인 unk로 맵핑됨
GRU로 IMDB 리뷰 감성 분류하기
- 1) 단어 집합의 크기를 1000으로 제한해 등장 빈도 순위 상위 1000개 단어들만 사용하고 리뷰 최대 길이는 300으로 제한해 패딩
2) 하이퍼파라미터인 임베딩 벡터의 차원은 100, 은닉 상태의 크기는 128로 지정하고 다 대 일 구조의 GRU를 사용
3) 마지막 시점에서 두 개의 선택지 중 하나를 예측하는 이진 분류 문제를 수행하는 모델이므로
출력층에 로지스틱 회귀, 활성화 함수로 시그모이드 함수, 손실 함수로 크로스 엔트로피 함수를 사용
4) EarlyStopping을 사용해 검증 데이터 손실이 증가하면 과적합 징후이므로 4회 증가하면 학습을 조기 종료하도록 함
5) ModelCheckpoint를 사용해 검증 데이터의 정확도가 이전보다 좋아질 경우에만 모델을 저장함
6) validation_split = 0.2를 사용해 훈련 데이터의 20%를 검증 데이터로 분리해서 사용해 훈련이 적절히 되고 있는지 확인
7) 하이퍼파라미터인 배치 크기는 64이며, 15 에포크를 수행함
8) 훈련 과정에서 검증 데이터가 가장 높았을 때 저장된 모델인 'GRU_model.h5'를 로드하고 성능을 평가함
9) 임의의 문장에 대해서 리뷰의 긍, 부정을 예측하기 위해 임의의 문장을 전처리, 정수 인코딩, 패딩하는 함수를 생성
10) 영화 블랙팬서의 1점 리뷰를 가지고 부정으로 예측하는지 테스트
11) 영화 어벤져스의 10점 리뷰를 가지고 긍정으로 예측하는지 테스트
코드
GitHub - GaGa-Kim/ML_Study: 머신러닝 스터디 ⚙
머신러닝 스터디 ⚙. Contribute to GaGa-Kim/ML_Study development by creating an account on GitHub.
github.com
'ML > 딥 러닝을 이용한 자연어 처리' 카테고리의 다른 글
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - LSTM으로 네이버 영화 리뷰 감성 분류하기 (0) | 2022.12.23 |
---|---|
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 나이브 베이즈 분류기 (0) | 2022.12.23 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - LSTM으로 로이터 뉴스 분류하기 (0) | 2022.12.22 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - RNN으로 스팸 메일 분류하기 (0) | 2022.12.21 |
[딥 러닝을 이용한 자연어 처리 입문] 10. RNN을 이용한 텍스트 분류 - 케라스를 이용한 텍스트 분류 (0) | 2022.12.21 |