NLP新闻数据读取与数据分析

数据读取

因为出现全部读取数据会出现memoryerror问题,暂未解决,因此只读取前100行。
#数据读取
import pandas as pd
train_df = pd.read_csv(‘F:/学习/DW-NLP/train_set.csv’, sep=’\t’,nrows=100)
‘’’
这里的read_csv由三部分构成:
读取的文件路径,
分隔符sep,为每列分割的字符,设置为\t即可;
读取行数nrows,为此次读取文件的行数,是数值类型(这里设置100);
‘’’
print(train_df.head())
‘’’
head()是pandas里面的函数,n的默认值为5,也就是默认读取前5行数据,可以用train_df.head(n = 10)来读取前10行的数据
‘’’

结果

NLP新闻数据读取与数据分析_第1张图片

新闻文本长度

因为text文本列的数据是以空格符号分割开的,所以我们对text先spilt(’ '),然后用len求长度

%pylab inline
train_df[‘text_len’] = train_df[‘text’].apply(lambda x:len(x.split(’ ')))
train_df[‘text_len’].describe()

统计结果如下
count 200000.000000
mean 907.207110
std 996.029036
min 2.000000
25% 374.000000
50% 676.000000
75% 1131.000000
max 57921.000000
Name: text_len, dtype: float64

从统计结果可以看出,赛题数据文本总体较长,平均一条新闻由907个字符构成,最短新闻长度为2,最长的新闻长度为57921。
我们 使用hist()作直方图来看句子长度分布,可以看到大部分的句子长度在2000以内。

import matplotlib.pyplot as plt
_ = plt.hist(train_df[‘text_len’], bins=200) # 文本字符长度直方图
plt.xlabel(‘Text char count’)
plt.title(“Histogram of char count”)

数据分析的结论

赛题中每个新闻包含的字符个数平均为1000个,还有一些新闻字符较长;
赛题中新闻类别分布不均匀,科技类新闻样本量接近4w,星座类新闻样本量不到1k;
赛题总共包括7000-8000个字符(包括测试集);
通过数据分析,我们还可以得出以下结论:

每个新闻平均字符个数较多,可能需要截断;
由于类别不均衡,会严重影响模型的精度;

你可能感兴趣的:(NLP新闻数据读取与数据分析)