NLP-Task 2 数据读取与分析

本文分析了一个包含13类新闻的大型数据集,揭示了新闻长度、类别分布及字符统计特征。科技类新闻数量最多,而星座类较少。通过对文本的深入分析,识别出常见标点符号,并计算出平均每篇新闻由约80.8个句子构成。此外,还统计了每类新闻中出现频率最高的字符。
摘要由CSDN通过智能技术生成

前言

本篇主要进行数据的读取与分析工作。

2.1 数据读取与分析

2.1.1 数据读取

在这里插入图片描述
首先进行数据读取,采用pandas库的read_csv将前100行读下来,以“\t”进行分隔,显示前五行。
第一列为系统生成的索引,第二列为文本的标签,第三列为文本经匿名处理后的结果,每一行代表一条文本。

2.1.2 数据分析

数据分析的三个目标:

  1. 赛题数据中,新闻文本的长度是多少?
  2. 赛题数据的类别分布是怎么样的,哪些类别比较多?
  3. 赛题数据中,字符分布是怎么样的?

2.1.2.1 句子长度分析

在这里插入图片描述
可以看出,文本最长为57921,最短为2,平均长度为907,句子长度相对较长。
在这里插入图片描述

2.1.2.2 新闻类别分布

在这里插入图片描述
文本一共13类,其中0类科技最多,13类星座最少。

2.1.2.3 字符分布统计

资料中提供的采用Counter的方法,需要将20w行的数据进行拼接,然后以空格进行分隔的方式导致占用很大内存,效率较低。

train_tfr = pd.read_csv('data/train_set.csv', sep='\t', chunksize=20000)
for chunk in train_tfr:
    do_sometime(chunk) # 这里的chunk是DataFrame,和下面的操作一样,不过需要额外变量以整合所有分块的统计数据

经过计算发现,字符3750,字符900和字符648在20w新闻的覆盖率接近99%,很有可能是标点符号。
此外,一共出现了6869个词。
在这里插入图片描述

2.1.2.4 数据分析的结论

  1. 赛题中每个新闻包含的字符个数平均为1000个,也有些达到5w+;
  2. 赛题中新闻类别分布不均匀,文本共13类,科技类新闻样本量接近4w,星座类新闻样本量不到1k;
  3. 赛题总共包括6869个字符;
  4. 由于类别不均衡,会严重影响模型的精度,在后续过程中可能考虑对样本的分布进行处理。

2.2 Task2 作业

(1)假设前面说的字符3750,字符900和字符648是句子的标点符号,请分析赛题每篇新闻平均由多少个句子构成?
引入re库,将3750、900和648作为句子的分界,并计算每篇新闻由多少个句子构成。
在这里插入图片描述
可以看出,平均每篇新闻的句子数为80.8,最大的句子个数为3460,最小的句子由一句话构成。

(2)统计每类新闻中出现次数最多的字符。

train_df = pd.read_csv(r'Data/train_set.csv', sep='\t')
for i in range(0, 14):
    df = train_df[train_df['label'] == i]['text']
    biaodian = ['3750', '900', '648']
    df_2 = df.apply(lambda x: [i for i in x.split(' ') if i not in biaodian])
    all_lines = str(df_2.values.tolist())
    word_count = Counter(all_lines.split(" "))  # 统计数字和出现次数
    word_count = sorted(word_count.items(), key=lambda d: d[1], reverse=True)  # 排序
    print(i, word_count[0])  # 新闻类,次数最多的字符及次数

在这里插入图片描述

Pytorch是一个流行的深度学习框架,它在自然语言处理领域有着广泛的应用。在使用Pytorch进行自然语言处理时,可以利用Pytorch自带的Embedding层来对单词进行向量化编码,将词转换成词向量。需要注意的是,Embedding层的输入是一个tensor long类型,表示读取第几个tensor,等于token的数量。例如,可以使用nn.Embedding(2,5)来创建一个Embedding层,其中2表示查询表的大小,5表示词向量的维度。然后可以使用该Embedding层将一个单词转换成一个词向量,如embeds(word_to_ix["one"])。通过这种方式,可以将文本数据转化为可以输入到深度学习模型中进行训练的形式。在自然语言处理中,还需要使用其他必要的Python工具库,如os、numpy、pandas、matplotlib.pyplot、glob、random、time、torch等,来进行数据预处理、模型构建和结果可视化等操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [自然语言处理实战——Pytorch实现基于LSTM的情感分析(LMDB)——详细](https://blog.csdn.net/m0_53328738/article/details/128367345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Pytorch系列:(六)自然语言处理NLP](https://blog.csdn.net/weixin_43973207/article/details/117135671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值