딥러닝 모델을 활용해 문장 분류 실습을 해보자.
Hugging Face 사용
: Hugging Face에 있는 다양한 연구 결과물들을 사용할 수 있음
https://huggingface.co/cardiffnlp/twitter-roberta-base-sentiment-latest
-> 위의 모델을 사용하여 문장 분류 문제 해결해보기!
=> SNS 데이터로 학습한 감정 분석 모델
: 2018.01 ~ 2021.12까지 1.24억개 트위터 데이터 학습
출력은 긍정 / 부정 / 중립 중 하나
-> 위의 모델은 문장 분류의 기본이 되는 BERT라는 딥러닝 모델을 개선한 RoBERTa라는 모델을 기본으로 하고,
Tweet 데이터로 추가 학습한 모델임
Tokenize
: 딥러닝 모델의 전처리는 모델마다 상이함.
Hugging Face는 특정 모델에 맞는 전처리 코드를 제공해줌.
from transformers import AutoTokenizerㅌ
MODEL = f"cardiffnlp/twitter-roberta-base-sentiment-latest"
tokenizer = AutoTokenizer.from_pretrained(MODEL)
Auto : 허깅페이스 페이지 이름만으로 목표하는 모델의 전처리 과정 등 모든 것을 가져올 수 있음
Token의 Index
: Token과 Embedding vector 사이를 이어주는 mapping value
단어의 인덱스를 매겨줌. ex) run -> 1
=> 메모리적 이득 -> 특정 token의 인덱스를 지정해두면 글이 숫자로 바뀌므로 메모리가 절약됨
=> 관리가 편함 -> 딥러닝 모델은 Word2Vec이나 GloVe와 같은 임베딩을 사용하지 않음(새로운 단어가 나오기 때문)
-> 따라서 임베딩을 모델에 종속시켜둠 (모델 앞단에 임베딩을 삽입해둠)
Model 호출
: Auto 모델 로더를 바탕으로 허깅페이스 페이지 이름으로 모델 호출 가능
from transformers import AutoModelForSequenceClassification
MODEL = f"cardiffnlp/twitter-roberta-base-sentiment-latest"
model = AutoModelForSequenceClassification.from_pretrained(MODEL)
Model 사용
: 적절한 입력 인자 제공을 통해 모델 사용 가능
# 모델을 사용한다면 Token 값으로 나온
# input_ids를 key_value 형태로 넣어주면 됨
# https://huggingface.co/docs/transformers/main/en/model_doc/roberta#transformers.RobertaForSequenceClassification.forward.input_ids
output = model(input_ids = tokenized['input_ids'])
# 혹은 사용 예제에서 처럼
# Unpacking 사용도 가능
# https://huggingface.co/cardiffnlp/twitter-roberta-base-sentiment-latest#full-classification-example
output = model(**tokenized)
출력 확인
: 모델의 출력은 감정 상태를 예측하는 점수 (score)의 형태
-> 모델이 설정한 감정의 index를 통해 감정 확인 가능
# 타겟하는 정보인 점수 값을 가져옴
scores = output[0][0].detach().numpy()
scores = softmax(scores)
print(scores)
# [0.00871163 0.01483237 0.97645605]
-> 첫 번째 감정이 0.9%, 두 번째 감정이 1.5%, 세 번째 감정이 97.6% 차지
# 모델 학습 정보를 확인하기 위한 config 값 로딩
from transformers import AutoConfig
config = AutoConfig.from_pretrained(MODEL)
print(config)
# config 안에는 각각의 레이블이 무엇을 뜻하는지 나타나있음
# "id2label": {
# "0": "negative",
# "1": "neutral",
# "2": "positive"
# },
'STUDY > DevCourse' 카테고리의 다른 글
[데브코스][데이터 분석] 데이터 마이닝 실습 (0) | 2024.05.16 |
---|---|
[데브코스][데이터 분석] 데이터 마이닝 (0) | 2024.05.16 |
[데브코스][데이터 분석] 자연어 처리 & 문장 분류 (0) | 2024.05.15 |
[데브코스][데이터 분석] 토픽 모델링과 워드 클라우드 (1) | 2024.05.15 |
[데브코스][데이터 분석] 감정 분석 (0) | 2024.05.14 |