零基础入门NLP - 新闻文本分类赛题理解-Task2 赛题理解

1.首先读取Excel数据

使用pandas进行读取,实现代码如下:
import pandas as pd
train_df = pd.read_csv(’./input/train_set.csv’, sep=’\t’, nrows=100)
关于读取read_csv()方法讲解
read_csv函数参数
几个常用的参数包括path、sep、header、index_col、names、skiprows、na_values、nrows、skip_footer、encoding。下面主要对这几个参数解释 。
这里的read_csv由三部分构成:
读取的文件路径,这里需要根据改成你本地的路径,可以使用相对路径或绝对路径;
分隔符sep,为每列分割的字符,设置为\t即可;
读取行数nrows,为此次读取文件的函数,是数值类型(由于数据集比较大,建议先设置为100);

2. 数据读取分析代码

import pandas as pd
import matplotlib.pyplot as plt
train_df = pd.read_csv(r’D:\game\input\train_set.csv’, sep=’\t’)
print(train_df)

train_df[‘text_len’] = train_df[‘text’].apply(lambda x: len(x.split(’ ')))
print(train_df[‘text_len’].describe())
_ = plt.hist(train_df[‘text_len’], bins=200)
plt.xlabel(‘Text char count’)
plt.title(“Histogram of char count”)
#plt.show()

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])
print(word_count[-1])

train_df[‘text_unique’] = train_df[‘text’].apply(lambda x: ’ ‘.join(list(set(x.split(’ ')))))
all_lines = ’ '.join(list(train_df[‘text_unique’]))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:int(d[1]), reverse = True)
print(word_count[0])
print(word_count[1])
print(word_count[2])

3.数据分析的结论

通过上述分析我们可以得出以下结论:
赛题中每个新闻包含的字符个数平均为1000个,还有一些新闻字符较长;
赛题中新闻类别分布不均匀,科技类新闻样本量接近4w,星座类新闻样本量不到1k;
赛题总共包括7000-8000个字符;
通过数据分析,我们还可以得出以下结论:
每个新闻平均字符个数较多,可能需要截断;
由于类别不均衡,会严重影响模型的精度;
本章小结
本章对赛题数据进行读取,并新闻句子长度、类别和字符进行了可视化分析。
本章作业
假设字符3750,字符900和字符648是句子的标点符号,请分析赛题每篇新闻平均由多少个句子构成?
统计每类新闻中出现次数对多的字符

你可能感兴趣的:(图像识别,python,数据分析,机器学习,人工智能)