NLP自然语言处理——文本分类之数据集汇总

名词解释

(1)脱敏处理:数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。

一、“达观杯”文本智能处理挑战赛数据集

“达观杯”文本智能处理挑战赛数据集包含了两个文件,分别是:train_set.csv和test_set.csv。两个文件的数据格式相同。具体格式如下:
每一行代表一篇文章。文章分别在“字”和“词”上做了脱敏处理。
第一列是文章的索引(id);
第二列是文章正文在“字”级别上的表示,即字符相隔正文(article);
第三列是文章正位在“词”级别上的表示,即词语相隔正文(word_seg);
第四列是文章的类别标签(class)。
数据读取与部分展示代码如下:

#一、读取达观杯竞赛数据
import pandas as pd
def read_DC_dataset(filename,index):
    dataset=pd.read_csv(filename,header=0,index_col=index)
    return dataset.head()
print(read_DC_dataset('train_set.csv',index='id'))

运行结果如下:

                                              article  \
id                                                      
0   7368 1252069 365865 755561 1044285 129532 1053...   
1   581131 165432 7368 957317 1197553 570900 33659...   
2   7368 87936 40494 490286 856005 641588 145611 1...   
3   299237 760651 299237 887082 159592 556634 7489...   
4   7368 7368 7368 865510 7368 396966 995243 37685...   

                                             word_seg  class  
id                                                            
0   816903 597526 520477 1179558 1033823 758724 63...     14  
1   90540 816903 441039 816903 569138 816903 10343...      3  
2   816903 1012629 957974 1033823 328210 947200 65...     12  
3   563568 1239563 680125 780219 782805 1033823 19...     13  
4   816903 816903 816903 139132 816903 312320 1103...     12  

二、东方财富网上市公司公告数据集

概数据集是通过网络爬虫在东方财富网抓取的上市公司公告

2.1 获取手段:python网络爬虫。具体方法和代码见我的另一篇博客。

2.2 时间区间:2014年——2019年

2.3 股票范围:沪深A股所有股票公告

2.4 特征字段

包含股票代码(code)、股票名称(name)、公告标题(title)、公告链接(url)、公告日期(date)、小标签(label)、公告类别(class)、公共正文(content)

中文分词

三、THUCTC中文分类数据集

THUCNews数据集是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成的。
其中包含了836075篇的新闻文档,数据格式为UTF-8纯文本格式。新闻文档分为14个类别,分别为:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。不同类别的新闻文档以文本文件txt格式存储在以类别名称命名的文件夹中。为了便于读取数据,把文本文件和对应的类别标签以csv文件中的一行的形式存储在名为content.csv的文件中。

3.1 数据预先处理步骤及代码实现

1、解压THUCNews.zip

sudo unzip //THUCNews.zip -d 解压到的文件夹

2、读取新闻文件并写入到content.csv中

#读取新闻文档
import pandas as pd
import numpy as np
import os#读取目录列表和生成目录
from sklearn.model_selection import train_test_split#划分测试集训练集
#获取所有文件路径和类别标签
path_list=[]#存放所有路径的列表
labels_list=os.listdir('/home/kobe26366/Jupyter_Notebook/thucnews/THUCNews')
for label in labels_list:
 label_file=os.path.join('/home/kobe26366/Jupyter_Notebook/thucnews/THUCNews',label)
    for i in os.listdir(label_file):
        path_list.append((os.path.join(label_file,i),label))
'''
将新闻文档保存到一个文件中:
每一篇新闻保存为一行;
每一行有两列分别是新闻类容和类别
'''
def read_file(x):
    filename=x[0]
    label=x[1]
    with open(filename,'r',encoding='utf-8') as f:
        content=f.read().replace('\n', '').replace('\t', '').replace('\u3000', '')
    return content,label
print(len(path_list))#输出
#分多次保存,尝试过每次保存20000篇,但是失败了。
a=[i for i in range(0,len(path_list),10000)]
a.append(None)
a=[(a[i],a[i+1]) for i in range(len(a)-1)]
for i,j in a:
    data_matrix=np.array([read_file(path) for path in path_list[i:j]])
    data_matrix=pd.DataFrame(data_matrix,columns=['content','label'])
    data_matrix.to_csv('content.csv',mode='a',encoding='utf-8',header=False)

输出结果:

836075
CPU times: user 1min 25s, sys: 3min 34s, total: 4min 59s
Wall time: 8min 27s

由于数据量很大只能多次分别保存数据,本文采用一次读写10000篇新闻,成功的将所有新闻保存到content.csv.我也尝试了一次保存20000篇新闻,结果内存溢出(memory out)。具体采用一次保存多少篇新闻取决于计算机内存的大小。content.csv部分内容如下:


                                                                     content	label
0		
0	马晓旭意外受伤让国奥警惕 无奈大雨格外青睐殷家军记者傅亚雨沈阳报道 来到沈阳,国奥队依然没有...	体育
1	商瑞华首战复仇心切 中国玫瑰要用美国方式攻克瑞典多曼来了,瑞典来了,商瑞华首战求3分的信心也...	体育
2	冠军球队迎新欢乐派对 黄旭获大奖张军赢下PK赛新浪体育讯1227日晚,“冠军高尔夫球队迎新...	体育
3	辽足签约危机引注册难关 高层威逼利诱合同笑里藏刀新浪体育讯224日,辽足爆发了集体拒签风波...	体育
4	揭秘谢亚龙被带走:总局电话骗局 复制南杨轨迹体坛周报特约记者张锐北京报道  谢亚龙已经被公安...	体育
...	...	...
6070	青绿山水下的垃圾堆()姚璐的作品,远看仿佛是青山绿水、诗情画意的水墨山水画,仔细一看,画中...	财经
6071	上海博物馆特展:来自古印度的神佛世界文/吴慧雯    85-1115日,上海博物馆的“...	财经
6072	永乐举办中国现当代艺术精选作品展新浪收藏讯 永乐拍卖在20101024日国际俱乐部饭店举...	财经
6073	聚焦:邮市演绎解套行情从这些年邮市发展轨迹可以看出,中国邮市正在上演解套行情。从时间上看,2...	财经
6074	澳门兔年邮票15日登场201115日,中国澳门邮政将发行《兔年》生肖邮票,与祖国内地发...	财经
836075 rows × 2 columns

个类别包含的样本数如下:

科技    162929
股票    154398
体育    131604
娱乐     92632
时政     63086
社会     50849
教育     41936
财经     37098
家居     32586
游戏     24373
房产     20050
时尚     13368
彩票      7588
星座      3578
Name: label, dtype: int64

3、划分训练集和测试集
首先,把样本的顺序打乱,然后将其中的20%作为测试集,剩下的80%作为训练集。并且在划分时保证不同类别的样本比例基本一致。最后,将训练集和测试集分别存入名为train.csv和test.csv的文件中。
代码如下:

import pandas as pd
data_matrix=pd.read_csv('content.csv',header=None,index_col=0)
data_matrix.columns=['content','label']
from sklearn.model_selection import train_test_split
import numpy as np
import pandas as pd
X_train,X_test,y_train,y_test=train_test_split(data_matrix.loc[:,'content'],data_matrix.loc[:,'label'],test_size=0.2,random_state=26366,shuffle=True,stratify=data_matrix.loc[:,'label'])
train_df=pd.DataFrame(np.array([X_train,y_train]).T,columns=['content','label'])
test_df=pd.DataFrame(np.array([X_test,y_test]).T,columns=['content','label'])
train_df.to_csv('train.csv',mode='w',encoding='utf-8')
test_df.to_csv('test.csv',mode='w',encoding='utf-8')

参考文献

1、百度百科:数据脱敏
2、THUCTC中文分类数据集
3、python路径拼接os.path.join()函数的用法
4、python文件读read()、readline()、readlines()对比
5、字体包下载地址
6、https://blog.csdn.net/qq_15111861/article/details/84144154

记录idea

公告标题对公告内容的表达能力很强。
正文内容相对标题是否对公告内容有更强的表达能力?

备忘录

AINLP公众号中有一篇专门讲解THUCTC中文分类数据集
关键词:文本分类
将不同模型运用到相同的数据集上以得到不同模型在该数据集上的表现,即验证模型的优越性;
将相同模型运用到不同的数据集上以得到统一模型在不同数据集上的表现,即验证模型普适性。
重点讲解东方财富网公告数据,其他几个数据集仅作结果展示和对比分析。

matplotlib 不能显示中文问题

1、下载字体库

下载simhei.ttf字体包。

2、查看matplotlib字体ttf文件目录

使用如下代码查看:

import matplotlib
print(matplotlib.matplotlib_fname())

运行结果如下:

~/anaconda3/envs/python37/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

ttf文件夹就在matplotlibrc文件的同级文件夹中。

3、将字体包解药到ttf文件目录中

  • 1
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little_Yuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值