- 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
- 🍖 原作者:K同学啊
任务描述
在上周的任务中,我们使用torchtext下载了托管的英文的AG News数据集 进行了分类任务。本周我们来对中文的自定义数据集来进行分类任务。
自定义数据集的格式是csv格式,我们先用pandas进行读取,创建数据集对象。然后后面的步骤就和上周基本上一致了。
步骤
环境设置
import torch
import warnings
warnings.filterwarnings('ignore') # 忽略警告
# 创建全局设备对象
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
device
数据准备
使用pandas读取数据
import pandas as pd
train_data = pd.read_csv('train.csv', sep='\t', header=None)
train_data.head()
可以看到数据有两列,第一列是文字内容,第二列是所属的标签。
接下来编写一个迭代器函数,每次迭代返回一对内容和标签
def custom_data_iter(texts, labels):
for x, y in zip(texts, labels):
yield x, y
train_iter = custom_data_iter(train_data[0].values[:], train_data[1].values[:])
然后创建词典,使用torchtext中的build_vocab_from_iterator
工具函数
from torchtext.vocab import build_vocab_from_iterator
import jieba
# 使用jieba库来做分词器
tokenizer = jieba.lcut # lcut直接返回列表, cut 返回一个迭代器
# 编写一个迭代函数,每次返回一句内容的分词结果
def yield_tokens(data_iter):
for text, _ in data_iter: # 每次返回一句内容和对应标签
yield tokenizer(text) # 返回该句内容的分词列表
# 创建词典
vocab = build_vocab_from_iterator(yield_tokens(train_iter), specials=['<unk>'])
vocab.set_default_index(vocab['<unk>'])
# 测试词典
vocab(['我', '想', '看', '和平', '精英', '上', '战神', '必备', '技巧', '的', '游戏', '视频'])
获取所有的标签名
label_name = list(set(train_data[1].values[:]))
print(label_name)