Återkommande neurala nätverk för textklassificering

Djupinlärning för text med PyTorch

Shubham Jain

Data Scientist

RNN:er för text

  • Hanterar sekvenser av varierande längd
  • Upprätthåller ett internt korttidsminne
  • CNN:er hittar mönster i textblock
  • RNN:er minns tidigare ord för bättre förståelse
Djupinlärning för text med PyTorch

RNN:er för textklassificering

Bild på sarkasm

Varför?

  • RNN:er läser meningar som människor – ett ord i taget
  • Förstår kontext och ordningsföljd

Exempel: Identifiera sarkasm i en tweet

"I just love getting stuck in traffic."

  • Sarkastisk
Djupinlärning för text med PyTorch

Repetition: Implementera Dataset och 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]
Djupinlärning för text med PyTorch

RNN-implementation

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)
  • Träna en RNN-modell att klassificera tweets som positiva eller negativa
  • Utdata: "Positive"
Djupinlärning för text med PyTorch

RNN-variant: LSTM

Bild på sentimentanalys

Tweet:

  "Loved the cinematography, 
  hated the dialogue. 
  The acting was exceptional,
  but the plot fell flat."
  • Long Short-Term Memory (LSTM) kan hantera komplexitet där RNN:er kan ha svårigheter
Djupinlärning för text med PyTorch

LSTM

LSTM-arkitektur: Inmatningsgrindar, glömmgrindar och utgångsgrindar

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
Djupinlärning för text med PyTorch

RNN-variant: GRU

  • E-postämne:

       "Congratulations!
        You've won a free trip 
        to Hawaii!"
    

 

  • Gated Recurrent Unit (GRU) kan snabbt känna igen skräppostmönster utan att behöva hela kontexten

Skräppost via e-post

Djupinlärning för text med 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
Djupinlärning för text med PyTorch

Nu kör vi en övning!

Djupinlärning för text med PyTorch

Preparing Video For Download...