텍스트 분류를 위한 순환 신경망 (RNN)

PyTorch로 배우는 텍스트 딥러닝

Shubham Jain

Data Scientist

텍스트용 RNN

  • 길이가 다른 시퀀스 처리
  • 내부 단기 메모리 유지
  • CNN은 구간 패턴 탐지
  • RNN은 이전 단어를 기억해 의미 강화
PyTorch로 배우는 텍스트 딥러닝

텍스트 분류를 위한 RNN

풍자 이미지

이유

  • RNN은 문장을 사람처럼 한 단어씩 읽음
  • 문맥과 순서를 이해

예: 트윗의 풍자 감지

"교통체증에 갇히는 거 정말 좋아."

  • 풍자적 표현
PyTorch로 배우는 텍스트 딥러닝

복습: Dataset과 DataLoader 구현

# Import libraries
from torch.utils.data import Dataset, DataLoader

# Create a class class TextDataset(Dataset):
def __init__(self, text): self.text = text
def __len__(self): return len(self.text)
def __getitem__(self, idx): return self.text[idx]
PyTorch로 배우는 텍스트 딥러닝

RNN 구현

sample_tweet = "This movie had a great plot and amazing acting."
# Preprocess the review and convert it to a tensor (not shown for brevity)
# ...
sentiment_prediction = model(sample_tweet_tensor)
  • 트윗을 긍정/부정으로 분류하는 RNN 모델 학습
  • 출력: "Positive"
PyTorch로 배우는 텍스트 딥러닝

RNN 변형: LSTM

감성 분석 이미지

트윗:

  "촬영은 훌륭했지만,
  대사는 별로였어요.
  연기는 뛰어났지만,
  줄거리는 밋밋했어요."
  • LSTM은 RNN이 어려워하는 복잡한 의존성을 포착할 수 있음
PyTorch로 배우는 텍스트 딥러닝

LSTM

LSTM 구조: 입력 게이트, 망각 게이트, 출력 게이트

class LSTMModel(nn.Module):

def __init__(self, input_size, hidden_size, output_size): super(LSTMModel, self).__init__() self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True) self.fc = nn.Linear(hidden_size, output_size)
def forward(self, x): _, (hidden, _) = self.lstm(x) output = self.fc(hidden.squeeze(0)) return output
PyTorch로 배우는 텍스트 딥러닝

RNN 변형: GRU

  • 이메일 제목:

       "축하합니다!
        하와이 무료 여행에 
        당첨되셨습니다!"
    

 

  • GRU는 전체 문맥 없이도 스팸 패턴을 빠르게 인식 가능

이메일 스팸

PyTorch로 배우는 텍스트 딥러닝

GRU

class GRUModel(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(GRUModel, self).__init__()
        self.gru = nn.GRU(input_size, hidden_size, batch_first=True)
        self.fc = nn.Linear(hidden_size, output_size)

def forward(self, x): _, hidden = self.gru(x) output = self.fc(hidden.squeeze(0)) return output
PyTorch로 배우는 텍스트 딥러닝

연습해 봅시다!

PyTorch로 배우는 텍스트 딥러닝

Preparing Video For Download...