这次是用《动手学深度学习》15.1和15.2章节的内容应用于kaggle的nlp初步入门项目。
导入包
import numpy as np
import pandas as pd
import torch
from torch import nn
from d2l import torch as d2l
数据预处理
读取数据并选取前70%作为训练集,后面一部分作为测试集。制作训练集和测试集的词元,并将训练集中出现频率不足5的单词过滤。
df = pd.read_csv('train.csv')
df.head(5)
df1 = df.iloc[:round(len(df)/100*70)]
df2 = df.iloc[round(len(df)/100*70):]
train_tokens = d2l.tokenize(df1['text'],token='word')
test_tokens = d2l.tokenize(df2['text'],token='word')
vocab = d2l.Vocab(train_tokens,min_freq=5,reserved_tokens=['<pad>'])
绘制词元长度的直方图,从这个图中我们可以看出每句话的长度是不同的所以我们要做接下来的填充和截断,统一长度。
d2l.set_figsize()
d2l.plt.xlabel('# tokens per review')
d2l.plt.ylabel('count')
d2l.plt.hist([len(line) for line in train_tokens], bins=range(0, 50, 2));
长度我们选择25,这里书上的例子用的是500,稍大一些是偏向于填充。超过25的文本我们将其截断。
num_steps=25
train_features = torch.tensor([d2l