达观杯文本智能处理挑战赛练习
数据说明
比赛官方对数据的说明是数据包含两个文件:train_set.csv和test_set.csv
一.初识数据
train_set.csv:此数据集用于训练模型,每一行对应一篇文章。文章分别在“字”和“词”的级别上做了脱敏处理。共有四列:
- 第一列是文章的索引(id)
- 第二列是文章正文在“字”级别上的表示,即字符相隔正文(article)
- 第三列是在“词”级别上的表示, 即词语相隔正文(word_seg)
- 第四列是这篇文章的标注(class)。
test_set.csv:此数据用于测试。数据格式同train_set.csv,但不包含class。
注:test_set与train_test中文章id的编号是独立的。
读取数据
import pandas as pd
from sklearn.model_selection import train_test_split
data_path='E:/dataset/daguan/new_data/'
train_data=pd.read_csv(data_path+"train_set.csv")
test_data=pd.read_csv(data_path+"test_set.csv")
train_data.head()
看一下标签值的分布情况:
print(train_data['class'].describe())
print(train_data['class'].value_counts())
可以看到训练集有102277条数据,文本分类共19类,没有严重的类别不均。
看一下训练集有没有缺失值:
train_data.isnull().any()
可以看到没有任何一列存在缺失值
看一下训练集有没有缺失值:
test_data.isnull().any()
也没有缺失值
数据拆分
可以看到其实数据集中的字和词都是脱敏后的,不需要分词,直接对训练集切分
columns=['article','word_seg']
X_train,X_test,y_train,y_test=train_test_split(train_data[columns],train_data['class'],test_size=0.3, random_state=2019)
print(X_train.shape,X_test.shape,y_train.shape,y_test.shape)
本来想只取word_seg列的,但是考虑到后面做模型融合或者提取构造特征时可能会用到,就先留下来了,到后面再看吧。