N8周打卡:使用Word2vec实现文本分类

🍨 本文为🔗365天深度学习训练营中的学习记录博客

🍖 原作者:K同学啊

一、数据预处理

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




python 复制代码
#构建模型
from torch import nn
 
class TextClassificationModel(nn.Module):
    def __init__(self,num_class):
        super(TextClassificationModel,self).__init__()
        self.fc = nn.Linear(100,num_class)
 
    def forward(self,text):
        return self.fc(text)
 
num_class = len(label_name)
model = TextClassificationModel(num_class).to(device)
 
import time
 
def train(dataloader):
    model.train()
    total_acc,train_loss,total_count = 0,0,0
    log_interval = 50
    start_time = time.time()
 
    for idx,(text,label) in enumerate(dataloader):
        predicted_label = model(text)
 
        optimizer.zero_grad()
        loss = criterion(predicted_label,label)
        loss.backward()
        torch.nn.utils.clip_grad_norm_(model.parameters(),0.1) # 梯度裁剪
        optimizer.step()
 
        total_acc += (predicted_label.argmax(1)==label).sum().item()
        train_loss += loss.item()*label.size(0)
        total_count += label.size(0)
 
        if idx % log_interval == 0 and idx > 0:
            elapsed = time.time() - start_time
            print('| epoch {:1d} | {:4d}/{:4d} batches '
                  '| train_acc {:4.3f} train_loss {:4.5f}'.format(epoch, idx, len(dataloader),
                                              total_acc/total_count, train_loss/total_count))
            total_acc, train_loss, total_count = 0, 0, 0
            start_time = time.time()
 
def evaluate(dataloader):
    model.eval()
    total_acc,test_loss,total_count =0,0,0
 
    with torch.no_grad():
        for idx,(text,label) in enumerate(dataloader):
            predicted_label = model(text)
 
            loss = criterion(predicted_label,label)
 
            total_acc += (predicted_label.argmax(1)==label).sum().item()
            test_loss += loss.item()*label.size(0)
            total_count += label.size(0)
    return total_acc/total_count,test_loss/total_count



二、总结

Word2Vec为文本分类提供了有效的词级别特征表示,通过将词语映射到低维空间,保留了语义信息并减少了数据稀疏性。结合适当的分类模型,能够实现高效准确的文本分类任务。随着NLP技术的发展,Word2Vec可以与其他先进方法结合,进一步提升分类性能。

相关推荐
开开心心就好18 分钟前
安卓免费证件照制作软件,无广告弹窗
linux·运维·安全·pdf·迭代器模式·依赖倒置原则·1024程序员节
开开心心就好5 天前
轻量级PDF阅读器,仅几M大小打开秒开
linux·运维·服务器·安全·pdf·1024程序员节·oneflow
学传打活8 天前
【边打字.边学昆仑正义文化】_12_生命价值的体现(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
开开心心就好10 天前
小巧绿色免费关机工具,支持定时倒计时
linux·运维·服务器·安全·powerpoint·1024程序员节·foxmail
开开心心就好11 天前
跨平台高速下载工具,支持浏览器功能强大
运维·服务器·windows·pdf·旅游·媒体·1024程序员节
开开心心就好1 个月前
内存清理软件灵活设置,自动阈值快捷键清
运维·服务器·windows·pdf·harmonyos·risc-v·1024程序员节
学传打活1 个月前
【边打字.边学昆仑正义文化】_5_宇宙物种创造简史(1)
微信公众平台·1024程序员节·汉字·昆伦正义文化
xcLeigh1 个月前
打破机房围墙:VMware+cpolar构建跨网络虚拟实验室
vmware·内网穿透·cpolar·实验室·远程访问·1024程序员节
开开心心就好1 个月前
免费轻量电子书阅读器,多系统记笔记听书
linux·运维·服务器·安全·ddos·可信计算技术·1024程序员节