Mạng nơ-ron hồi quy cho phân loại văn bản

Deep Learning cho Văn bản với PyTorch

Shubham Jain

Data Scientist

RNN cho văn bản

  • Xử lý chuỗi có độ dài khác nhau
  • Duy trì bộ nhớ ngắn hạn bên trong
  • CNN phát hiện mẫu theo cụm
  • RNN ghi nhớ từ trước để hiểu nghĩa sâu hơn
Deep Learning cho Văn bản với PyTorch

RNN cho phân loại văn bản

Hình ảnh mỉa mai

Vì sao?

  • RNN đọc câu như con người, từng từ một
  • Hiểu ngữ cảnh và thứ tự

Ví dụ: Phát hiện mỉa mai trong tweet

"Tôi thật thích kẹt xe."

  • Mỉa mai
Deep Learning cho Văn bản với PyTorch

Ôn tập: Cài đặt Dataset và 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]
Deep Learning cho Văn bản với PyTorch

Cài đặt 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)
  • Huấn luyện mô hình RNN để phân loại tweet là tích cực hay tiêu cực
  • Kết quả: "Positive"
Deep Learning cho Văn bản với PyTorch

Biến thể RNN: LSTM

Hình minh họa phân tích cảm xúc

Tweet:

  "Yêu quay phim,
  ghét lời thoại.
  Diễn xuất xuất sắc,
  nhưng cốt truyện nhạt."
  • Long Short Term Memory (LSTM) nắm bắt các phụ thuộc phức tạp nơi RNN thường gặp khó
Deep Learning cho Văn bản với PyTorch

LSTM

Kiến trúc LSTM: Cổng vào, cổng quên, cổng ra

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
Deep Learning cho Văn bản với PyTorch

Biến thể RNN: GRU

  • Tiêu đề email:

       "Chúc mừng!
        Bạn trúng chuyến đi
        miễn phí tới Hawaii!"
    

 

  • Gated Recurrent Unit (GRU) nhanh chóng nhận diện mẫu thư rác mà không cần toàn bộ ngữ cảnh

Email spam

Deep Learning cho Văn bản với 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
Deep Learning cho Văn bản với PyTorch

Laten we oefenen!

Deep Learning cho Văn bản với PyTorch

Preparing Video For Download...