Redes neuronales recurrentes para la clasificación de textos

Deep Learning para texto con PyTorch

Shubham Jain

Data Scientist

RNNs para texto

"- Gestionar secuencias de longitudes variables

  • Mantener una memoria interna a corto plazo
  • Las CNN detectan patrones en fragmentos
  • Las RNN recuerdan palabras anteriores para un mayor significado {{4}}"
Deep Learning para texto con PyTorch

RNN para la clasificación de textos

"Imagen de sarcasmo {{1}}"

"¿Por qué?

  • Las RNN pueden leer frases como los humanos, una palabra a la vez
  • Entienden el contexto y el orden

Ejemplo: Detectar sarcasmo en un tuit

\"Me encanta quedarme atascado en el tráfico.\"

  • Sarcástico {{5}}"
Deep Learning para texto con PyTorch

"Resumen: Implementación de Dataset y DataLoader"

"`py

Import libraries

from torch.utils.data import Dataset, DataLoader


----CODE_GLUE----
```py
# Create a class
class TextDataset(Dataset):

def __init__(self, text): self.text = text
def __len__(self): return len(self.text)

----CODE_GLUE---- py def __getitem__(self, idx): return self.text[idx]{{5}}"

Deep Learning para texto con PyTorch

Implementación de RNN

"`py sample_tweet = \"Esta película tenía una gran trama y una actuación increíble.\"

Preprocess the review and convert it to a tensor (not shown for brevity)

...

sentiment_prediction = model(sample_tweet_tensor)

  • Entrena un modelo RNN para clasificar el tweet como positivo o negativo
  • Salida: \"Positivo\" {{2}}"
Deep Learning para texto con PyTorch

"Variación de RNN: LSTM"

"Imagen de análisis de sentimientos {{1}}"

"Tweet:

  \"Me encantó la cinematografía, odié los diálogos.  La actuación fue excepcional, pero la trama resultó insulsa.\"
  • Las redes Long Short Term Memory (LSTM) pueden captar complejidades donde las RNN pueden tener dificultades {{2}}"
Deep Learning para texto con PyTorch

LSTM

"Arquitectura LSTM: Puerta de entrada, puerta de olvido y puerta de salida

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)

----CODE_GLUE---- py def forward(self, x): _, (hidden, _) = self.lstm(x) output = self.fc(hidden.squeeze(0)) return output{{4}}"

Deep Learning para texto con PyTorch

"Variación de RNN: GRU"

"- Asunto del correo electrónico:

     \"¡Enhorabuena! ¡Has ganado un viaje gratis a Hawái!\"
  • La Unidad Recurrente con Puerta (GRU) puede reconocer rápidamente patrones de spam sin necesidad de tener todo el contexto {{3}}"

"Correo electrónico no deseado"

Deep Learning para texto con PyTorch

GRU

"py 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)

----CODE_GLUE---- py def forward(self, x): _, hidden = self.gru(x) output = self.fc(hidden.squeeze(0)) return output{{2}}"

Deep Learning para texto con PyTorch

Es hora de la práctica.

Deep Learning para texto con PyTorch

Preparing Video For Download...