Convolutional Neural Networks für die Textklassifikation

Deep Learning für Text mit PyTorch

Shubham Jain

Instructor

CNNs für die Textklassifizierung

"- Tweets als

- Negativ
Deep Learning für Text mit PyTorch

Die Faltungsoperation

"Faltungsoperation"

"- Faltungsoperation

  • Verschieben eines Filters (Kernels) über die Eingabedaten
  • Für jede Position des Filters werden elementweise Berechnungen durchgeführt
  • Für Text: lernt Struktur und Bedeutung von Wörtern {{2}}"
1 Animation von Vincent Dumoulin, Francesco Visin
Deep Learning für Text mit PyTorch

Filter und Schrittweite in CNNs

"- Filter:

  • Kleine Matrix, die wir über den Input schieben
  • Schrittweite:
    • Anzahl der Positionen, um die sich der Filter bewegt {{2}}"

"Filter und Schrittweite"

1 Animation von Vincent Dumoulin, Francesco Visin
Deep Learning für Text mit PyTorch

CNN-Architektur für Text

"- Faltungsschicht: wendet Filter auf Eingabedaten an

  • Pooling-Schicht: reduziert die Datengröße, während wichtige Informationen erhalten bleiben
  • Vollständig verbundene Schicht: trifft abschließende Vorhersagen basierend auf der Ausgabe der vorherigen Schicht {{3}}"
Deep Learning für Text mit PyTorch

Implementierung eines Textklassifikationsmodells mit CNN

"`python class SentimentAnalysisCNN(nn.Module):


----CODE_GLUE----
```python
    def __init__(self, vocab_size, embed_dim):

super().__init__()
self.embedding = nn.Embedding(vocab_size, embed_dim)
self.conv = nn.Conv1d(embed_dim, embed_dim, kernel_size=3, stride=1, padding=1)

----CODE_GLUE---- python self.fc = nn.Linear(embed_dim, 2) ...{{6}}"

"- __init__ Methode konfiguriert die Architektur

  • super() initialisiert die Basisklasse nn.Module
  • nn.Embedding erstellt dichte Wortvektoren
  • nn.Conv1d für eindimensionale Daten {{5}}"
Deep Learning für Text mit PyTorch

Implementierung eines Textklassifikationsmodells mit CNN

"`python ... def forward(self, text): embedded = self.embedding(text).permute(0, 2, 1)


----CODE_GLUE----
```python
        conved = F.relu(self.conv(embedded))

conved = conved.mean(dim=2)

----CODE_GLUE---- python return self.fc(conved){{4}}"

"- Die Embedding-Schicht wandelt Text in Einbettungen um

  • Passe Tensoren an das erwartete Eingabeformat der Convolution-Schicht an
  • Extrahiere wichtige Merkmale mit ReLU
  • Entferne zusätzliche Schichten und Dimensionen {{4}}"
Deep Learning für Text mit PyTorch

Daten für das Sentiment-Analysemodell vorbereiten

"`python vocab = [\"i\", \"love\", \"this\", \"book\", \"do\", \"not\", \"like\"] word_to_idx = {word: i for i, word in enumerate(vocab)}


----CODE_GLUE----
```python
vocab_size = len(word_to_ix)

embed_dim = 10
book_samples = [ (\"Die Geschichte war fesselnd und hat mich bis zum Ende gefesselt.\".split(),1), (\"Ich fand die Charaktere oberflächlich und die Handlung vorhersehbar.\".split(),0) ]

----CODE_GLUE---- python model = SentimentAnalysisCNN(vocab_size, embed_dim) criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.1){{5}}"

Deep Learning für Text mit PyTorch

Das Modell trainieren

"python for epoch in range(10): for sentence, label in data:

Deep Learning für Text mit PyTorch

Ausführen des Sentiment-Analyse-Modells

"python for sample in book_samples:

----CODE_GLUE---- python input_tensor = torch.tensor([word_to_idx[w] for w in sample], dtype=torch.long).unsqueeze(0)

Deep Learning für Text mit PyTorch

Nun kannst du wieder etwas üben!

Deep Learning für Text mit PyTorch

Preparing Video For Download...