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