NLP入门--新闻文本分类Task2

数据读取

对于该数据集的读取基于pandas库。

import pandas as pd
train_df=pd.read_csv('C:/Users/Administrator/Desktop/wenbenfenlei/train_set.csv',sep='\t')
train_df.head()

第一行导入pandas工具库,第二行读取csv格式的训练集文件,第三行显示前五行的数据。结果如下:

labeltext
22967 6758 339 2021 1854 3731 4109 3792 4149 15…
114464 486 6352 5619 2465 4802 1452 3137 5778 54…
37346 4068 5074 3747 5681 6093 1777 2226 7354 6…
27159 948 4866 2109 5520 2490 211 3956 5520 549…
33646 3055 3055 2490 4659 6065 3370 5814 2465 5…

数据分为两列,一列是分类标签,一列是字符文本。

数据分析

句子长度分布

赛题数据中每行句子的字符由空格隔开,可以直接统计句子的长度。

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

得到的描述性统计数据如下:
在这里插入图片描述
从中可以清晰看到句子长度情况,平均长度为907个字符,最短2个字符,最长达到57921个字符。

新闻类别分布

train_df['label'].value_counts().plot(kind='bar')
plt.title('新闻类别分布')
plt.xlabel('category')

可视化结果如下:
在这里插入图片描述
结合标签对应关系:

{‘科技’: 0, ‘股票’: 1, ‘体育’: 2, ‘娱乐’: 3, ‘时政’: 4, ‘社会’: 5, ‘教育’: 6, ‘财经’: 7, ‘家居’: 8, ‘游戏’: 9, ‘房产’: 10, ‘时尚’: 11, ‘彩票’: 12, ‘星座’: 13}

可知这次数据集中科技类新闻最多,其次是股票类,星座类新闻最少。

字符分布

接下来统计一下每个字符出现的次数:

from collections import Counter
all_lines = ' '.join(list(train_df['text']))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:d[1], reverse = True)
print(len(word_count))
print(word_count[0:2])

结果显示字符3750、900、648出现频率最高,总覆盖率接近99%,因此推断可能是标点符号,因此假设这三个字符为标点符号,统计每篇新闻包含的句子数量。首先用re匹配对应的字符并进行分隔,然后就可以统计句子数量了。

import re
train_df['text_sentence']=train_df['text'].apply(lambda x:re.split('3750|900|648',x))
train_df['text_sentence_count']=train_df['text_sentence'].apply(lambda x:len(x))
print(train_df['text_sentence_count'].describe())

在这里插入图片描述
可以看到,平均句子数量为80,最小只有1句,最长有3460句。
如果想要统计每类新闻中出现频率最高的字符,应该是可以按照标签将新闻文本进行字符拼接,然后同理进行统计分析,因为内存不够这里就没实现了。

总结

Task2主要是针对该数据集进行简单的一些特征分析,为之后的处理提供一个大概的轮廓,接下来就需要对数据进行深入处理,以实现分类任务。

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页