目录

  • 一、不分词划分数据集
    • 1.划分数据集
    • 2.将各数据集写入txt文件
  • 二、分词划分数据集
    • 1.分词
    • 2.完整代码

本篇文章的主要任务是将自己的数据集使用在Chinese-Text-Classification-PyTorch项目中
github地址: Chinese-Text-Classification

数据集:二分类的文本数据,做情感分析,review为评论内容,label分为1,0正负项。

一、不分词划分数据集

用pandas读取csv数据文件,用sklearn中的train_test_split函数划分数据集

1.划分数据集

按8:1:1比例将数据集划分成训练集,验证集,测试集:

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,shuffle=True,stratify=y,random_state=42)X_valid, X_test, y_valid, y_test = train_test_split(X_test,y_test,test_size=0.5,shuffle=True,stratify=y_test,random_state=42)

2.将各数据集写入txt文件

生成三个txt文件,test.txt,train.txt,dev.txt 用于匹配替换项目数据集格式

# 划分成txt文件
testdir = "./WeiboData/data/test.txt"
traindir = "./WeiboData/data/train.txt"
validdir = "./WeiboData/data/dev.txt"print(X_test)
print(y_test)
with open(testdir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_test,y_test):f.write(str(i)+'\t'+str(j)+'\n')with open(traindir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_train,y_train):f.write(str(i)+'\t'+str(j)+'\n')with open(validdir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_valid,y_valid):f.write(str(i)+'\t'+str(j)+'\n')f.close()

完整代码:

import pandas as pd
import jieba
from sklearn.model_selection import train_test_splitdata = pd.read_csv(r'D:\Study\PycahrmProjects\sentimentAnalysis\wb_data1_denote1.csv', encoding='utf-8-sig')X = data['review'].values
y = data.label.values# 5:3:2
# 8:1:1
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,shuffle=True,stratify=y,random_state=42)X_valid, X_test, y_valid, y_test = train_test_split(X_test,y_test,test_size=0.5,shuffle=True,stratify=y_test,random_state=42)print("训练集样本数 = ", len(y_train))
print("训练集中正样本数 = ", len([w for w in y_train if w == 1]))
print("训练集中负样本数 = ", len([w for w in y_train if w == 0]))
print("验证集样本数 = ", len(y_valid))
print("验证集中正样本数 = ", len([w for w in y_valid if w == 1]))
print("验证集中负样本数 = ", len([w for w in y_valid if w == 0]))
print("测试集样本数 = ", len(y_test))
print("测试集中正样本数 = ", len([w for w in y_test if w == 1]))
print("测试集中负样本数 = ", len([w for w in y_test if w == 0]))# 划分成txt文件
testdir = "./WeiboData/data/test.txt"
traindir = "./WeiboData/data/train.txt"
validdir = "./WeiboData/data/dev.txt"print(X_test)
print(y_test)
with open(testdir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_test,y_test):f.write(str(i)+'\t'+str(j)+'\n')with open(traindir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_train,y_train):f.write(str(i)+'\t'+str(j)+'\n')with open(validdir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_valid,y_valid):f.write(str(i)+'\t'+str(j)+'\n')f.close()

二、分词划分数据集

1.分词

注意分词后需要按行划分成列表
代码如下(示例):

# 用jieba对各数据集分词
def tokenizer(data):# 得到文本数据text = []for i in range(data.shape[0]):text.append(str(data[i]))comment = '\n'.join(text)# 清洗文本数据-用正则表达式删去数字、字母、标点符号、特殊符号等import resymbols = "[0-9\!\%\,\。\.\,\、\~\?\(\)\(\)\?\!\“\”\:\:\;\"\"\;\……&\-\_\|\.\A.B.C\*\^]"comments = re.sub(symbols, '', comment)comments_list = jieba.cut(comments)  # 精确模式# comments_list = jieba.cut_for_search(comments)#搜索引擎模式x_train = ' '.join([x for x in comments_list])  # 用空格连接分好的词return x_train# 对各数据集分词X_test = tokenizer(X_test)
X_train = tokenizer(X_train)
X_valid = tokenizer(X_valid)# 按行将string划分成列表
X_valid = X_valid.split('\n')
X_test = X_test.split('\n')
X_train = X_train.split('\n')

2.完整代码

import pandas as pd
import jieba
from sklearn.model_selection import train_test_split# 用jieba对各数据集分词
def tokenizer(data):# 得到文本数据text = []for i in range(data.shape[0]):text.append(str(data[i]))comment = '\n'.join(text)# 清洗文本数据-用正则表达式删去数字、字母、标点符号、特殊符号等import resymbols = "[0-9\!\%\,\。\.\,\、\~\?\(\)\(\)\?\!\“\”\:\:\;\"\"\;\……&\-\_\|\.\A.B.C\*\^]"comments = re.sub(symbols, '', comment)comments_list = jieba.cut(comments)  # 精确模式# comments_list = jieba.cut_for_search(comments)#搜索引擎模式x_train = ' '.join([x for x in comments_list])  # 用空格连接分好的词return x_traindata = pd.read_csv(r'D:\Study\PycahrmProjects\sentimentAnalysis\wb_data1_denote1.csv', encoding='utf-8-sig')X = data['review'].values
y = data.label.values# 5:3:2
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.5,shuffle=True,stratify=y,random_state=42)X_valid, X_test, y_valid, y_test = train_test_split(X_test,y_test,test_size=0.3,shuffle=True,stratify=y_test,random_state=42)print("训练集样本数 = ", len(y_train))
print("训练集中正样本数 = ", len([w for w in y_train if w == 1]))
print("训练集中负样本数 = ", len([w for w in y_train if w == 0]))
print("验证集样本数 = ", len(y_valid))
print("验证集中正样本数 = ", len([w for w in y_valid if w == 1]))
print("验证集中负样本数 = ", len([w for w in y_valid if w == 0]))
print("测试集样本数 = ", len(y_test))
print("测试集中正样本数 = ", len([w for w in y_test if w == 1]))
print("测试集中负样本数 = ", len([w for w in y_test if w == 0]))# 划分成txt文件testdir = "./WeiboData/data/test.txt"
traindir = "./WeiboData/data/train.txt"
validdir = "./WeiboData/data/dev.txt"print(X_test)
print(y_test)# 对各数据集分词X_test = tokenizer(X_test)
X_train = tokenizer(X_train)
X_valid = tokenizer(X_valid)X_valid = X_valid.split('\n')
X_test = X_test.split('\n')
X_train = X_train.split('\n')print(X_test)
print(type(X_test))
print(len(X_test))with open(testdir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_test,y_test):f.write(str(i)+'\t'+str(j)+'\n')with open(traindir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_train,y_train):f.write(str(i)+'\t'+str(j)+'\n')with open(validdir, 'a+', encoding='utf-8-sig') as f:for i,j in zip(X_valid,y_valid):f.write(str(i)+'\t'+str(j)+'\n')f.close()

【NLP项目-文本分类】划分测试集,训练集,验证集相关推荐

  1. 【BERT-多标签文本分类实战】之七——训练-评估-测试与运行主程序

    ·请参考本系列目录:[BERT-多标签文本分类实战]之一--实战项目总览 ·下载本实战项目资源:>=点击此处=< [1] 损失函数与评价指标   多标签文本分类任务,用的损失函数是BCEW ...

  2. Pytorch TextCNN实现中文文本分类(附完整训练代码)

    Pytorch TextCNN实现中文文本分类(附完整训练代码) 目录 Pytorch TextCNN实现中文文本分类(附完整训练代码) 一.项目介绍 二.中文文本数据集 (1)THUCNews文本数 ...

  3. Task01——零基础入门NLP - 新闻文本分类之赛题理解

    本篇目标 首先本篇文章会对赛题进行介绍以及个人对赛题的理解,带大家接触NLP的预处理.模型构建和模型训练等知识点. 赛题介绍 赛题名称:零基础入门NLP - 新闻文本分类 赛题任务:赛题以自然语言处理 ...

  4. 零基础入门NLP - 新闻文本分类

    本文是对阿里云新人竞赛中的"零基础入门NLP - 新闻文本分类"解体过程进行的记录,目前仅使用了textCNN模型进行预测,后续还会考虑使用LSTM进行对比. 赛题数据 赛题以新闻 ...

  5. 【初学者入门】零基础入门NLP - 新闻文本分类

    序言 从今天开始入门学习NLP,虽然有点晚,但是我觉得任何时候都值得开始,尤其是面对你去感兴趣的事情.今天的任务是 [零基础入门NLP - 新闻文本分类],这是天池大赛中的入门级算法比赛,入口链接请自 ...

  6. FastText 总结:文本分类、词向量训练、参数详解

    FastText:文本分类.词向量训练.参数详解 前言 - FastText 简介 一.FastText - 安装 1.1 - Github下载安装 1.2 - 编译器安装 二.FastText - ...

  7. 天池零基础入门NLP - 新闻文本分类Top1方案的bert4torch复现

    天池有些长期比赛可以练习玩玩(还可以继续提交),于是试了下简单的新闻文本分类任务,Top1的解决方案思路是"预训练+fgm+交叉验证模型融合",代码是基于bert4keras的,本 ...

  8. 训练集(train set) 验证集(validation set) 测试集(test set)

    在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train set) 验证集(validation set) 测试集(test set). http://blog.si ...

  9. [机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)

    在有监督(supervise)的机器学习中,数据集常被分成2~3个即: 训练集(train set) 验证集(validation set) 测试集(test set) 一般需要将样本分成独立的三部分 ...

最新文章

  1. C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——删除
  2. 集群的定义以及类别定义
  3. 【Xamarin开发 Android 系列 5】 Xamarin 的破解
  4. linux Shell(脚本)编程入门实例讲解详解
  5. VS Code 连接远程服务器运行 Jupyter Notebook
  6. 【Java多线程】sleep与yield的辨析
  7. 每个网页设计者都自以为是
  8. alientek ministm32液晶显示程序_佳显12864中文字库液晶专业生产液晶显示模块
  9. c++中的继承--1(引出,继承方式,继承的对象模型)
  10. 收银系统服务器有什么好处,生鲜超市收银系统软件怎么选?收银系统能带来什么好处?...
  11. 简约黑板擦表白特效网源码
  12. linux结构体数组的定义数组,task_struct结构体中的run_list和array域
  13. atitit.网络文件访问协议.unc smb nfs ftp http的区别
  14. 遇到了javah无法访问类的问题
  15. 淘宝电商需求文档的书写
  16. PowerMock使用-Mock私有方法
  17. 想在社会上混 就记住这20句
  18. ElementUI上传文件和额外参数
  19. 浙江大学计算机学院 金小刚,金小刚-虚拟现实与交互技术研究院
  20. Java快车读书笔记

热门文章

  1. CCS调试问题 Break at address “0x3ff9ce“ with no debug information available, or outside of program code.
  2. **2021,靠谱的网赚项目,遇上靠谱的你,谁说赚钱不轻松**
  3. mysql添加多个字段删除多个字段
  4. 揭秘一个不起眼的微商新品牌,如何快速赢得客户信任?
  5. 【详细七层】OSI 网络模型,七层网络模型
  6. 记一次burpsuite安装问题的解决(包括打不开burp-loader-keygen.jar,点击run无反应,回显-Xbootclasspath/p is no longer a sup
  7. IDEA 同时打开两个项目
  8. linux下面编译java代码及打包
  9. Qualcomm 音频学习(Bring up)
  10. 虚拟机客户端怎么连接服务器,虚拟机客户端连接服务器