使用Word2Vec实现中文文本分类

本文为🔗365天深度学习训练营内部文章

原作者:K同学啊

 

本次将加入Word2vec使用PyTorch实现中文文本分类,Word2Vec 则是其中的一种词嵌入方法,是一种用于生成词向量的浅层神经网络模型,由Tomas Mikolov及其团队于2013年提出。Word2Vec通过学习大量文本数据,将每个单词表示为一个连续的向量,这些向量可以捕捉单词之间的语义和句法关系。数据示例如下:

 

1.加载数据 

import time
import pandas as pd
import torch
from torch.utils.data import DataLoader, random_split
import torch.nn as nn
import torchvision
from torchtext.data import to_map_style_dataset
from torchvision import transforms,datasets
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator
from gensim.models.word2vec import Word2Vec
import numpy as np
import jieba
import warnings

warnings.filterwarnings('ignore')
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

'''
加载本地数据
'''
train_data = pd.read_csv('train.csv',sep='\t',header=None)
print(train_data.head())
# 构建数据集迭代器
def coustom_data_iter(texts,labels):
    for x,y in zip(texts,labels):
        yield x,y

x = train_data[0].values[:]
y = train_data[1].values[:]

 zip 是 Python 中的一个内置函数,它可以将多个序列(列表、元组等)中对应的元素打包,成一个个元组,然后返回这些元组组成的一个迭代器。例如,在代码中 zip(texts,labels)就是将 texts 和labels 两个列表中对应位置的元素一一打包,成元组,返回一个迭代器,每次迭代返回一个元组(x,y)其中x是 texts 中的一个元素,y是 labels 中对应的一个元素。这样,每次从迭代器中获取一个元素,就相当于从 texts 和 labels 中获取了一组对应的数据。在这里,zip 函数主要用于将输入的 texts 和labels打包成一个可迭代的数据集,然后传给后续的模型训练过程使用。

2.数据预处理

1)构建词典  

# 1.构建词典
# 训练 Word2Vec 浅层神经网络模型
w2v = Word2Vec(vector_size=100,   # 是指特征向量的维度,默认为100
               min_count=3)  # 可以对字典做截断,词频少于min_count次数的单词会被丢弃掉,默认为5
w2v.build_vocab(x)
w2v.train(x,total_examples=w2v.corpus_count,epochs=20)

 Word2Vec可以直接训练模型,一步到位。这里分了三步 第一步构建一个空模型 第二步使用 build_vocab 方法根据输入的文本数据x构建词典。build_vocab 方法会统计输入文本中每个词汇出现的次数,并按照词频从高到低的顺序将词汇加入词典中。 第三步使用 train 方法对模型进行训练,total_examples 参数指定了训练时使用的文本数量,这里使用的是 w2v.corpus_count 属性,表示输入文本的数量

# 将文本转化为向量
def average_vec(text):
    vec = np.zeros(100).reshape((1,100))
    for word in text:
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值