NLP⾃然语⾔处理——⽂本分类之数据集汇总
⽂本分类数据集汇总
名词解释
(1)脱敏处理:数据脱敏是指对某些敏感信息通过脱敏规则进⾏数据的变形,实现敏感隐私数据的可靠保护。
⼀、“达观杯”⽂本智能处理挑战赛数据集
“达观杯”⽂本智能处理挑战赛数据集包含了两个⽂件,分别是:train_set.csv和test_set.csv。两个⽂件的数据格式相同。具体格式如下:
每⼀⾏代表⼀篇⽂章。⽂章分别在“字”和“词”上做了脱敏处理。
第⼀列是⽂章的索引(id);
第⼆列是⽂章正⽂在“字”级别上的表⽰,即字符相隔正⽂(article);
第三列是⽂章正位在“词”级别上的表⽰,即词语相隔正⽂(word_seg);
第四列是⽂章的类别标签(class)。
数据读取与部分展⽰代码如下:
#⼀、读取达观杯竞赛数据
import pandas as pd
def read_DC_dataset(filename,index):
陈辰八卦ad_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
1  581131 16543
2 7368 957317 119755
3
2  7368 87936 40494 490286 856005 641588
3  299237 760651 299237 887082 159592 55663
4  7368 7368 7368 865510 7368 396966
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#读取⽬录列表和⽣成⽬录
del_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:
ad().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'])
_csv('content.csv',mode='a',encoding='utf-8',header=False)
输出结果:
av演员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马晓旭意外受伤让国奥警惕⽆奈⼤⾬格外青睐殷家军记者傅亚⾬沈阳报道来到沈阳,国奥队依然没有...体育
1商瑞华⾸战复仇⼼切中国玫瑰要⽤美国⽅式攻克瑞典多曼来了,瑞典来了,商瑞华⾸战求3分的信⼼也...体育
2冠军球队迎新欢乐派对黄旭获⼤奖张军赢下PK赛新浪体育讯12⽉27⽇晚,“冠军⾼尔夫球队迎新...体育罗琦个人资料
3辽⾜签约危机引注册难关⾼层威逼利诱合同笑⾥藏⼑新浪体育讯2⽉24⽇,辽⾜爆发了集体拒签风波...体育
4揭秘谢亚龙被带⾛:总局电话复制南杨轨迹体坛周报特约记者张锐北京报道谢亚龙已经被公安...体育
.........
6070青绿⼭⽔下的垃圾堆(图)姚璐的作品,远看仿佛是青⼭绿⽔、诗情画意的⽔墨⼭⽔画,仔细⼀看,画中...财经
6071上海博物馆特展:来⾃古印度的神佛世界⽂/吴慧雯8⽉5⽇-11⽉15⽇,上海博物馆的“...财经
6072永乐举办中国现当代艺术精选作品展新浪收藏讯永乐拍卖在2010年10⽉24⽇国际俱乐部饭店举...财经
6073聚焦:邮市演绎解套⾏情从这些年邮市发展轨迹可以看出,中国邮市正在上演解套⾏情。从时间上看,2...财经
6074澳门兔年邮票1⽉5⽇登场2011年1⽉5⽇,中国澳门邮政将发⾏《兔年》⽣肖邮票,与祖国内地发...财经
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_ad_csv('content.csv',header=None,index_col=0)
lumns=['content','label']
del_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=d ata_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'])
_csv('train.csv',mode='w',encoding='utf-8')
_csv('test.csv',mode='w',encoding='utf-8')
参考⽂献
记录idea
公告标题对公告内容的表达能⼒很强。
正⽂内容相对标题是否对公告内容有更强的表达能⼒?
备忘录
AINLP中有⼀篇专门讲解THUCTC中⽂分类数据集
关键词:⽂本分类
将不同模型运⽤到相同的数据集上以得到不同模型在该数据集上的表现,即验证模型的优越性;将相同模型运⽤到不同的数据集上以得到统⼀模型在不同数据集上的表现,即验证模型普适性。重点讲解东⽅财富⽹公告数据,其他⼏个数据集仅作结果展⽰和对⽐分析。
matplotlib 不能显⽰中⽂问题
1、下载字体库
下载f字体包。
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⽂件⽬录中