文本分类是自然语言处理(NLP)中的一个基本任务,它将文本数据分配到预定义的类别中。在这个教程中,我们将使用 PyTorch 框架来构建一个简单的文本分类器。
1. 准备工作
首先,确保你已经安装了 PyTorch 和其他必要的库。你可以通过以下命令来安装:
pip install torch torchvision numpy
2. 数据集
我们可以使用一个常用的文本分类数据集,例如 IMDB 数据集。这个数据集包含了25,000条影评,其中50%是正面评价,50%是负面评价。
import torch
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
# 加载 IMDB 数据集
transform = transforms.Compose([transforms.ToTensor()])
trainset = datasets.IMDB(root='./data', train=True, download=True, transform=transform)
trainloader = DataLoader(trainset, batch_size=64, shuffle=True)
3. 模型
接下来,我们定义一个简单的文本分类模型。在这个例子中,我们使用一个简单的循环神经网络(RNN)。
import torch.nn as nn
class TextClassifier(nn.Module):
def __init__(self):
super(TextClassifier, self).__init__()
self.embedding = nn.Embedding(num_embeddings=10000, embedding_dim=100)
self.rnn = nn.LSTM(input_size=100, hidden_size=128, num_layers=2)
self.fc = nn.Linear(128, 2)
def forward(self, x):
x = self.embedding(x)
x, _ = self.rnn(x)
x = self.fc(x[:, -1, :])
return x
model = TextClassifier()
4. 训练
现在,我们可以开始训练模型了。
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
for epoch in range(10): # 训练10个epoch
for data, target in trainloader:
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
5. 评估
训练完成后,我们可以使用验证集来评估模型的表现。
correct = 0
total = 0
with torch.no_grad():
for data, target in testloader:
output = model(data)
_, predicted = torch.max(output.data, 1)
total += target.size(0)
correct += (predicted == target).sum().item()
print(f'Accuracy of the model on the test images: {100 * correct / total}%')
6. 扩展阅读
如果你对文本分类和 PyTorch 框架有更深入的兴趣,可以阅读以下教程:
希望这个教程能帮助你入门 PyTorch 文本分类。📚👨💻