Recurrente neurale netwerken voor tekstclassificatie

Deep Learning voor tekst met PyTorch

Shubham Jain

Data Scientist

RNN’s voor tekst

  • Werkt met sequenties van variabele lengte
  • Heeft intern kortetermijngeheugen
  • CNN’s vinden patronen in fragmenten
  • RNN’s onthouden eerdere woorden voor meer betekenis
Deep Learning voor tekst met PyTorch

RNN’s voor tekstclassificatie

Sarcasme-afbeelding

Waarom?

  • RNN’s lezen zinnen woord voor woord
  • Begrijpen context en volgorde

Voorbeeld: sarcasme in een tweet detecteren

"Ik vind het geweldig om vast te staan in het verkeer."

  • Sarcastisch
Deep Learning voor tekst met PyTorch

Herhaling: Dataset en DataLoader implementeren

# 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 voor tekst met PyTorch

RNN-implementatie

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)
  • Train een RNN om tweets als positief of negatief te classificeren
  • Output: "Positief"
Deep Learning voor tekst met PyTorch

RNN-variant: LSTM

Sentimentanalyse-afbeelding

Tweet:

  "Geweldige cinematografie, 
  vreselijke dialogen. 
  Acteerwerk was top,
  maar het plot viel tegen."
  • Long Short Term Memory (LSTM) kan complexiteit vangen waar RNN’s moeite mee hebben
Deep Learning voor tekst met PyTorch

LSTM

LSTM-architectuur: input-, forget- en output-gate

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 voor tekst met PyTorch

RNN-variant: GRU

  • E-mailonderwerp:

       "Gefeliciteerd!
        Je hebt een gratis reis
        naar Hawaï gewonnen!"
    

 

  • Gated Recurrent Unit (GRU) herkent snel spam-patronen zonder volledige context

E-mailspam

Deep Learning voor tekst met 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 voor tekst met PyTorch

Laten we oefenen!

Deep Learning voor tekst met PyTorch

Preparing Video For Download...