CS224N 是斯坦福大学关于自然语言处理与深度学习的经典课程,其作业通常涵盖理论和实践两方面内容,旨在帮助学生深入理解 NLP 中的关键概念和技术。虽然没有直接提供第四次作业的具体内容,但根据该课程的历年安排和公开资料,可以推测 CS224N 第四次作业可能涉及以下主题:
### 词向量评估与类比任务
作业中可能会要求使用预训练的词向量(如 GloVe 或 Word2Vec)来完成单词类比任务(例如,“king - man + woman = queen”)。此类任务测试模型是否能够捕捉到词语之间的语义关系。
```python
# 示例代码:使用GloVe词向量进行类比推理
import gensim.downloader as api
# 加载预训练的GloVe模型
glove_model = api.load("glove-wiki-gigaword-100")
# 执行类比推理
result = glove_model.most_similar(positive=['woman', 'king'], negative=['man'])
print(result)
```
### 文本分类任务
作业可能包含使用神经网络对文本进行分类的任务,例如情感分析或主题分类。这通常涉及构建一个简单的前馈神经网络或使用卷积神经网络(CNN)来处理文本数据。
```python
# 示例代码:使用PyTorch构建简单的文本分类器
import torch
import torch.nn as nn
class TextClassifier(nn.Module):
def __init__(self, vocab_size, embedding_dim, num_classes):
super(TextClassifier, self).__init__()
self.embedding = nn.Embedding(vocab_size, embedding_dim)
self.fc = nn.Linear(embedding_dim, num_classes)
def forward(self, x):
embedded = self.embedding(x).mean(dim=1) # 平均池化
return self.fc(embedded)
model = TextClassifier(vocab_size=10000, embedding_dim=300, num_classes=2)
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
```
### 使用 RNN 或 LSTM 进行语言建模
另一个常见的作业主题是实现循环神经网络(RNN)或长短期记忆网络(LSTM),用于语言建模任务。目标是预测给定上下文中下一个词的概率分布。
```python
# 示例代码:使用LSTM进行语言建模
class LanguageModel(nn.Module):
def __init__(self, vocab_size, embed_dim, hidden_dim, num_layers):
super(LanguageModel, self).__init__()
self.embed = nn.Embedding(vocab_size, embed_dim)
self.lstm = nn.LSTM(embed_dim, hidden_dim, num_layers, batch_first=True)
self.linear = nn.Linear(hidden_dim, vocab_size)
def forward(self, x, hidden):
out = self.embed(x)
out, hidden = self.lstm(out, hidden)
out = self.linear(out.reshape(out.size(0)*out.size(1), out.size(2)))
return out, hidden
model = LanguageModel(vocab_size=10000, embed_dim=300, hidden_dim=512, num_layers=2)
```
### 注意事项
- **数据集**:作业通常会使用标准的 NLP 数据集,如 IMDB、AG News、Penn Treebank 等。
- **评估指标**:常见指标包括准确率(accuracy)、F1 分数、困惑度(perplexity)等。
- **工具库**:推荐使用 PyTorch 或 TensorFlow 框架,并熟悉 `torchtext` 或 `transformers` 库。
如果需要更具体的作业内容或解决方案,请查阅官方课程网站或相关 GitHub 仓库,以获取最新的作业发布信息。