Redes neuronales convolucionales para la clasificación de texto

Deep Learning para texto con PyTorch

Shubham Jain

Instructor

CNN para la clasificación de textos

"- Clasificar tuits como

- Positivo
Deep Learning para texto con PyTorch

La operación de convolución

"Operación de convolución"

"- Operación de convolución

  • Desplazar un filtro (kernel) sobre los datos de entrada
  • Para cada posición del filtro, realizar cálculos elemento a elemento
  • Para texto: aprende la estructura y el significado de las palabras {{2}}"
1 Animación de Vincent Dumoulin, Francesco Visin
Deep Learning para texto con PyTorch

Filtro y desplazamiento en las CNN

"- Filtro:

  • Pequeña matriz que deslizamos sobre la entrada
  • Stride:
    • Número de posiciones que se mueve el filtro {{2}}"

"Filtro y desplazamiento"

1 Animación de Vincent Dumoulin, Francesco Visin
Deep Learning para texto con PyTorch

Arquitectura CNN para texto

"- Capa convolucional: aplica filtros a los datos de entrada

  • Capa de agrupamiento: reduce el tamaño de los datos mientras preserva la información importante
  • Capa totalmente conectada: realiza las predicciones finales basándose en la salida de la capa anterior {{3}}"
Deep Learning para texto con PyTorch

Implementación de un modelo de clasificación de texto utilizando 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}}"

"- El método __init__ configura la arquitectura

  • super() inicializa la clase base nn.Module
  • nn.Embedding crea vectores densos de palabras
  • nn.Conv1d para datos unidimensionales {{5}}"
Deep Learning para texto con PyTorch

Implementación de un modelo de clasificación de texto utilizando 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}}"

"- La capa de embedding convierte el texto en embedding

  • Ajusta los tensores a la entrada esperada de la capa de convolución
  • Extrae características importantes con ReLU
  • Elimina capas y dimensiones adicionales {{4}}"
Deep Learning para texto con PyTorch

Preparación de datos para el modelo de análisis de sentimientos

"`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 = [ (\"La historia fue cautivadora y me mantuvo enganchado hasta el final.\".split(),1), (\"Me parecieron los personajes superficiales y la trama predecible.\".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 para texto con PyTorch

Entrenamiento del modelo

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

Deep Learning para texto con PyTorch

Ejecutar el modelo de análisis de sentimientos

"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 para texto con PyTorch

Es hora de la práctica.

Deep Learning para texto con PyTorch

Preparing Video For Download...