(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
概数据集是通过网络爬虫在东方财富网抓取的上市公司公告
包含股票代码(code)、股票名称(name)、公告标题(title)、公告链接(url)、公告日期(date)、小标签(label)、公告类别(class)、公共正文(content)
THUCNews数据集是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成的。
其中包含了836075篇的新闻文档,数据格式为UTF-8纯文本格式。新闻文档分为14个类别,分别为:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。不同类别的新闻文档以文本文件txt格式存储在以类别名称命名的文件夹中。为了便于读取数据,把文本文件和对应的类别标签以csv文件中的一行的形式存储在名为content.csv的文件中。
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赛新浪体育讯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_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
公告标题对公告内容的表达能力很强。
正文内容相对标题是否对公告内容有更强的表达能力?
AINLP公众号中有一篇专门讲解THUCTC中文分类数据集
关键词:文本分类
将不同模型运用到相同的数据集上以得到不同模型在该数据集上的表现,即验证模型的优越性;
将相同模型运用到不同的数据集上以得到统一模型在不同数据集上的表现,即验证模型普适性。
重点讲解东方财富网公告数据,其他几个数据集仅作结果展示和对比分析。
下载simhei.ttf字体包。
使用如下代码查看:
import matplotlib
print(matplotlib.matplotlib_fname())
运行结果如下:
~/anaconda3/envs/python37/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
ttf文件夹就在matplotlibrc文件的同级文件夹中。