天池新闻文本分类EDA_datawihle组队学习

首先读取训练集,由于数据量过大,并且文件路径中含有中文,所以这里的解决方法一:

train_df = pd.read_csv('C:/Users/杨浩然/Desktop/nlp_新闻文本分类/train_set.csv', sep='\t', nrows=100,engine='python')

添加nrows限制读取行数,并且因为PY3调用read_csv时默认使用C 作为解析引擎,导致中文路径出错,添加engine可以解决中文路径问题。

针对数据量过大读取初始化错误,同时也可以解决中文路径问题,直接使用open函数读取文件:

train_df=pd.read_csv(open('C:/Users/杨浩然/Desktop/nlp_新闻文本分类/train_set.csv'), sep='\t')

train_df.head(5)查看前5行数据,分为LABEL和匿名好的字符文本集

非结构化数据,没有太多数据统计EDA。首先需要了解每条文本的长度,文本样本由空格分隔符分开,使用以下操作统计:

可以得到20W训练样本中,句子长度均值为907,最长57921,最短2。统计值无法查看句子长度分布,所以做一个分布查看:

可以看到绝大部分句子长度大致在5000以下,为了验证句子长度在5000以下样本,继续画图:

可以更清楚的看到我们的数据分布,很明显的右偏分布,并且大部分其实长度为3000以下。

接下来查看我们的样本类别分布:

在数据集中标签的对应的关系如下:{'科技': 0, '股票': 1, '体育': 2, '娱乐': 3, '时政': 4, '社会': 5, '教育': 6, '财经': 7, '家居': 8, '游戏': 9, '房产': 10, '时尚': 11, '彩票': 12, '星座': 13}

可以看到我们的样本分布有的是及其不均匀的,当建模的时候可以寻找各种解决样本不均衡的模型算法,或者数据解决方法,结构化数据解决样本不均衡的方法按我的经验有:上下采样、Border-line SMOTE、手工添加数据、数据增强、XGB 样本均衡参数,都可以尝试的方法。

接下来是字符分布的探索统计,感觉有点类似TF-IDF的统计方式(本机计算资源不足,调整nrows=100,暂时使用100个样本统计下列词语):

总词量2405,出现次数最多得3750编号词,3702词,最少的5034,出现1次。

统计每行中出现次数较多的字符,有有可能为标点符号等,查看排序前10编号的字符,

all_lines为每行去重后,将每行样本以空格符连接的字符串,使用counter函数返回包含每个字符与统计量的counter对象类

sorted(iterable[,cmp[,key[,reverse]]])为函数原型,reverse=True降序,参数Counter.items()返回的是以列表返回的可遍历的值(for k,v 循环遍历),key为进行比较的元素,reverse=True降序,lambda d:int(d[1])代表使用word_count中第二个元素值为比较元素进行降序排序,最后得到一个列表中,按每个元组第二个元素排序的数组,也就是按字符统计个数从大到小排序的数组。这样就可以选择前10个出现次数较多的字符进行分析。前三个为在100个样本中出现了99次,99次,96次的字符,所以很有可能为标点符号。

官方提示的结论:

  1. 赛题中每个新闻包含的字符个数平均为1000个,还有一些新闻字符较长;
  2. 赛题中新闻类别分布不均匀,科技类新闻样本量接近4w,星座类新闻样本量不到1k;
  3. 赛题总共包括7000-8000个字符;
  4. 每个新闻平均字符个数较多,可能需要截断;

  5. 由于类别不均衡,会严重影响模型的精度;

本章作业

  1. 假设字符3750,字符900和字符648是句子的标点符号,请分析赛题每篇新闻平均由多少个句子构成? 
  2. 统计每类新闻中出现次数最多的字符                                                                                                                                          答:1,由于需要进行多个字符来分割字符串,无法使用split,要使用re.split()多个条件分割字符串后取每行长度就得到没篇新闻的句子个数,然后除以总样本量,就得到平均句子长度,具体实现如下:这里只使用了100条样本所以直接求此列的sum(),再除以样本量100,得到均值:此样本量下句子的均值为80.5条。                                                                                                                                            答:2,统计每类新闻中出现次数最多的字符,首先需要将每条样本中出现次数最多的字符求出,由于计算资源不够,只使用了100条样本,样本的标签都为2,所以循环只统计了新闻类别为2的出现次数最多的字符,但是只需要更改数据样本量为全量,就可以得到所有分类新闻的出现次数最多的字符。代码如下:
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值