N4 - Pytorch实现中文文本分类



任务描述

在上周的任务中,我们使用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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值