用于文本分类的循环神经网络

使用 PyTorch 的文本深度学习

Shubham Jain

Data Scientist

用于文本的 RNN

  • 处理可变长度序列
  • 维护短期内部记忆
  • CNN 识别局部块中的模式
  • RNN 记住先前词语以增强语义
使用 PyTorch 的文本深度学习

用于文本分类的 RNN

讽刺图片

原因?

  • RNN 像人一样逐词读取句子
  • 理解上下文与顺序

示例:检测推文中的讽刺

"我就是喜欢堵车。"

  • 讽刺
使用 PyTorch 的文本深度学习

回顾:实现 Dataset 与 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]
使用 PyTorch 的文本深度学习

RNN 实现

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)
  • 训练 RNN 将推文分类为正面或负面
  • 输出:"正面"
使用 PyTorch 的文本深度学习

RNN 变体:LSTM

情感分析图片

推文

  "摄影很棒,
  台词很差。
  表演出色,
  但剧情乏力。"
  • 长短期记忆网络(LSTM)可捕捉复杂性,RNN 可能难以胜任
使用 PyTorch 的文本深度学习

LSTM

LSTM 架构:输入门、遗忘门、输出门

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
使用 PyTorch 的文本深度学习

RNN 变体:GRU

  • 邮件主题:

       "恭喜!
        你赢得了
        夏威夷免费旅行!"
    

 

  • 门控循环单元(GRU)可迅速识别垃圾模式,无需完整上下文

垃圾邮件

使用 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
使用 PyTorch 的文本深度学习

让我们练习!

使用 PyTorch 的文本深度学习

Preparing Video For Download...