中文文本情感分类实战(weibo_senti_100k为数据集)

该博客详细介绍了如何进行中文文本情感分类的实战,从数据准备阶段的jieba分词和停用词处理,到加载weibo_senti_100k数据集,再到模型结构的搭建、训练脚本和测试脚本的编写,提供了完整的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据准备

使用jieba分词

data_processing.py

import jieba

data_path = "sources/weibo_senti_100k.csv"
data_stop_path = "sources/hit_stopword"
data_list = open(data_path,encoding='utf-8').readlines()[1:]
#处理停用词
stops_word = open(data_stop_path,encoding='utf-8').readlines()
stops_word = [line.strip() for line in stops_word]#去掉换行符
stops_word.append(" ")#防止被strip过滤掉
stops_word.append("\n")
#根据分词结果统计字典
voc_dict = {
   
   }
min_seq = 1
top_n = 1000
UNK="<UNK>"
PAD = "<PAD>"
for item in data_list[:]:
    label = item[0]
    content = item[2:].strip()#去掉结尾的换行符
    seg_list = jieba.cut(content, cut_all=False)
    seg_res = []

    for seg_item in seg_list:
        print(seg_item)
        if seg_item in stops_word: #去掉停用词
            continue
        seg_res.append(seg_item)
        if seg_item in voc_dict.keys(): #使用字典统计词频
            voc_dict[seg_item] = voc_dict[seg_item] + 1
        else:
            voc_dict[seg_item] = 1

    print(content)
    print(seg_res)

#排序字典词频,取topN的词定义字典
voc_list = sorted([_ for _ in voc_dict.items() if _[1] > min_seq],
                  key=lambda x:x[1], reverse=True)[:top_n]
voc_dict = {
   
   word_count[0]: idx for idx,word_count in enumerate(voc_list)}
#将字典以外的词固定为特定字符UNK
voc_dict.update({
   
   UNK:len(voc_dict),PAD:len(voc_dict) + 1})

print(voc_dict)

#保存字典
ff = open("sources/dict","w")
for item in voc_dict.keys():
    ff.writelines("{},{}\n".format(item,voc_dict[item]))

此时如果分词结果里还有不想用到的词,就把这些词复制到停用词词典里

加载数据集

datasets.py

from torch.utils.data import Dataset,DataLoader
import jieba
import numpy as np

def read_dict
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值