ML
감정 분석 일기장: BERT 모델을 활용한 감정 분석
감정 분석 일기장은 텍스트 데이터를 입력받아 해당 텍스트의 감정을 예측하는 데 사용되는데, 이를 위해 BERT(Bidirectional Encoder Representations from Transformers) 모델을 활용하여 감정 분석을 수행하는 방법을 사용하였습니다.
데이터셋의 경우 네이버 영화 평점 데이터를 이용하였습니다!
1. 도입
감정 분석은 텍스트 데이터의 감정을 파악하는 작업으로, 감정 분석 일기장은 이를 자동화하여 사용자가 입력한 텍스트의 감정을 빠르게 파악할 수 있게 합니다.
- 코드의 경우 필요한 라이브러리 및 모듈 불러오기
- 데이터 로드 및 전처리
2. 데이터 전처리
학습 및 테스트 데이터를 불러와 전처리하고, BERT 토크나이저를 사용하여 텍스트를 토큰화하여 BERT의 입력 형식에 맞게 변환하였습니다.
- 필드 정의: 텍스트 및 라벨 필드 설정
- 데이터셋 분할: 학습, 검증, 테스트 데이터셋 분할 및 로드
- 배치 이터레이터 설정: 학습, 검증, 테스트 배치 이터레이터 설정
3. 모델 구성
BERT 모델을 기반으로한 감정 분석을 위한 모델을 설계합니다.
BERT 모델과 GRU(Gated Recurrent Unit)를 결합하여 감정 분석을 수행하는 모델을 구성합니다.
- BERT 토크나이저 및 모델 로드
- BERTGRUSentiment 클래스 정의: BERT 모델과 GRU를 결합한 감정 분석 모델 정의
4. 모델 학습
학습 데이터를 사용하여 모델을 학습시키고, 검증 데이터를 활용하여 모델의 성능을 평가하고, 모델의 파라미터를 조정하여 검증 데이터를 기준으로 최적의 모델을 저장합니다.
- 모델 파라미터 설정
- 옵티마이저 및 손실 함수 설정
- 학습 및 검증 함수 정의
- 모델 학습 및 검증 수행
5. 결과 분석
모델을 사용하여 실제 텍스트 데이터에 대한 감정 분석을 수행하고, 결과를 분석합니다.
이후 사용될 텍스트의 감정을 예측하는 과정을 통해 모델의 정확성을 확인합니다.
- 감정 예측 함수 정의
- 사용자 입력 및 예시 텍스트에 대한 감정 분석 수행
결론
Ben Trevett의 Transformers for Sentiment Analysis 튜토리얼에서 BERT 모델을 네이버 영화 평점 데이터를 이용해서 적용해보았습니다.
BERT 모델을 사용하기 위해서 Huggingface의 트랜스포머 라이브러리를 이용하여 훈련된 단어의 벡터값을 얻고, bidrectional GRU 모델을 이용하여 최종 출력을 얻는 형식으로 코드를 구성했습니다.
BERT모델
전이학습 모델 - 구글의 Devin이 제안한 사전 학습된 대용량의 레이블링 되지 않는 데이터를 이용하여 언어 모델을 학습하고 이를 토대로 특정 작업( 문서분류, 질의응답, 번역, 문장생성, 추출 )을 위한 신경망을 추가하는 전이 학습 방법입니다.
기존 모델들은 대용량의 데이터를 직접 학습시키기 위해서는 매우 많은 자원과 시간이 필요하지만 BERT 모델은 기본적으로 대량의 단어 임베딩 등에 대해 사전 학습이 되어 있는 모델을 제공하므로 상대적으로 적은 자원만으로 충분히 자연어 처리의 다양한 일들을 수행할 수 있다는 장점과 학습 속도가 빠르다는 점을 바탕으로 이 모델을 선택하였습니다.
BERT의 input representation은 세가지 임베딩 값의 합으로 구성되어지는데 아래 주소를 통해서 보다 쉽게 이해할 수 있을겁니다!!
출처 : https://happy-obok.tistory.com/23
Transformer 기반의 BERT를 사용한 이유는 BERT는 MLM과 NSP를 위해 TRansformer를 기반으로 구성되어지는데 아래 그림처럼 트랜스포머 모델 구조를 가진 인코더-디코더 모델로 번연한 것이 최고성능을 기록한 것으로 알려져 있습니다.
기존 인코더- 디코더 모델과 달리 Transformer는 CNN, RNN을 사용하지 않고 self-attention 개념을 도입하여서 사용하고 있고, BERT는 Transformer의 인코더 - 디코더 중 인코더만 사용을 하여 모델이 복잡하지 않은 특징을 가집니다.
Transformer
Transformers 란 분류, 정보 추출, 질문 답변, 요약, 번역, 문장 생성 등을 100여개 이상의 언어로 수행할 수 있는 수천개의 사전학습된 모델로 이를 이용해 NLP기술을 쉽게 사용할 수 있게 됩니다.
Bidrectional
- 양방향 RNN이라고 불리며, 특정 작업에서 기본 RNN보다 월등한 성능을 냅니다.
- RNN은 순서 및 시간에 민감한것이 특징인데, bidrectional은 다른 RNN과 달리 양방향에서 패턴을 읽으므로 놓치기 쉬운 패턴들을 얻을 수 있게 되는 것입니다.
- ML 특성상 표현이 많이 다를수록, 데이터를 바라보는 시각이 다양해지는데 bidrectional 는 반대시각?(새로운 시각)을 제공하여서 다른 방식에서는 놓칠 수 있는 데이터들의 특징을 잘 잡아줍니다.
- 단어의 순서가 중요하지 않다는 것이 뒷받침된 자연어 처리에서 주로 활용되고 있습니다.
'waffle' 카테고리의 다른 글
[waffle] Triple-Jack 팀 중간정리 - Frontend (1) | 2024.03.27 |
---|---|
[waffle] 쿠라스트로 팀 중간정리 - Frontend (0) | 2024.03.23 |
[waffle] 아이셔팀 중간정리 - Backend (0) | 2024.01.07 |
[waffle] 아이셔팀 중간정리 - Android (0) | 2024.01.07 |
[waffle] 아이셔팀 중간정리 - FrontEnd (1) | 2024.01.07 |