可以利用trochtext库中的相关函数对文本数据进行数据预处理
import torch
import torch.utils.data as Data
from torchvision.datasets import FashionMNIST
import torchvision.transforms as transforms
from torchvision.datasets import ImageFolder
from torchtext import data
##定义文本切分方法,使用空格切分即可
mytokenize = lambda x: x.split()
##定义将文本转化为张量的相关操作
TEXT = data.Field(sequential = True, #表明输入的文本是字符
tokenize = mytokenize, #使用自定义的分词方法
use_vocab = True, #创建一个词汇表
batch_first = True, #batch优先的数据方式
fix_length = 200 #每个句子固定长度为200
)
##定义将标签转化为张量的相关操作
LABEL = data.Field(sequential = False, #表明输入的标签是数字
use_vocab = False, #不创建词汇表
pad_token = None, #不进行填充
unk_token = None #没有无法识别的字符
)
#对所要读取的数据集的每列进行处理
text_data_fields = [
("label",LABEL), ##对标签的操作
("text",TEXT) #对文本的操作
]
#读取数据
traindata,testdata = data.TabularDataset.splits(
path = "../input/train-test",format = "csv",
train = "train.csv",fields = text_data_fields,
test = "test.csv",skip_header = True
)
len(traindata),len(testdata)
# (2, 1)
#输出结果表示训练集中有2个样本,测试集中1个样本
##使用训练集构建单词表,并不指定预训练好的词向量
TEXT.build_vocab(traindata,max_size = 1000,vectors = None)
##将训练数据集定义为数据加载器,便于对模型进行优化
train_iter = data.BucketIterator(traindata,batch_size = 4)
test_iter = data.BucketIterator(testdata,batch_size = 4)
for step,batch in enumerate(train_iter):
if step > 0:
break
##针对一个batch的数据,可以使用batch.label获得数据的类别标签
print("数据的类别标签:",batch.label)
##batch.text是文本对应的编码向量
print("数据的尺寸:",batch.text.shape)
# 数据的类别标签: tensor([1, 1])
# 数据的尺寸: torch.Size([2, 200])