【英文文本分类实战】之二——数据集挑选与划分

·请参考本系列目录:【英文文本分类实战】之一——实战项目总览
·下载本实战项目资源:神经网络实现英文文本分类.zip(pytorch)

[1] 数据集平台

  在阅读了大量的论文之后,由于每一篇论文都会提出一个模型,十分想复现每个模型。但是受制于苦苦无法寻觅到合适的数据集,且下载下来一个数据集后,由于格式的不同,没有很好的数据集预处理方案,这对我们复现论文有很大阻力。

  下面的网址列表不仅包含用于实验的大型数据集,还包含描述、使用示例等,在某些情况下还包含用于解决与该数据集相关的机器学习问题的算法代码。

   1-Kaggle数据集

  网址:http://www.kaggle.com/datasets

   强烈推荐这个数据集社区! 每个数据集都有对应的一个小型社区,可以在其中讨论数据、查找公共代码或在内核中创建自己的项目。该网站包含大量形状、大小、格式各异的真实数据集。还可以看到与每个数据集相关的“内核”,其中许多不同的数据科学家提供了笔记来分析数据集。有时在某些特定的数据集中,可以从笔记中找到相应的算法,解决预测问题。

在这里插入图片描述

【注】:后续讲解代码时,数据集将从Kaggle网站下载。

   2-亚马逊数据集

   网址:https://registry.opendata.aws

   该数据源包含多个不同领域的数据集,如:公共交通、生态资源、卫星图像等。它也有一个搜索框来帮助你找到你正在寻找的数据集,另外它还有数据集描述和使用示例,这是非常简单、实用的!

在这里插入图片描述

   3-微软研究开放数据

   网址:https://msropendata.com/

   2018年7月,微软与外部研究社区共同宣布推出“微软研究开放数据”。

   它在公共云中包含一个数据存储库,用于促进全球研究社区之间的协作。另外它还提供了一组在已发表的研究中使用的、经过整理的数据集。

在这里插入图片描述

[2] 下载数据集

  我们的项目的主题为 “英文文本分类”

  我们从Kaggle数据集平台上任意找一个文本数据集,如下图,名为 “Topic Labeled News Dataset”

【注】:这里突出“任意找一个”数据集,具有普遍性。这样大家用自己的数据集,按照本博客的方法一样可行。但是,最好是现成的数据集,自己去爬取的数据可能会有格式不正确等各种问题。

在这里插入图片描述

  这样下载下来的数据集,有许多问题,并不能直接就应用于文本分类任务,其缺点有:

  1、下载的数据集是一个csv文件,需要人为分成训练集、验证集、测试集;
  2、文本数据有大小写问题、特殊字符问题、缩写问题等等,我们不能拿过来就直接用,需要经过一定的预处理;
  3、在文本分类任务中,还会使用预训练的词向量,需要考虑到词向量的词与数据集中词的覆盖程度。

  下面我们来一一解决这些问题。

[3] 划分数据集

  刚才我们下载的数据集如下图:

在这里插入图片描述
   分析数据集: 如上图,我们下载的数据集是一个名为labelled_newscatcher_dataset.csv的文件,其中的topic列为数据标签,title列为数据文本。

  需要把一个文件labelled_newscatcher_dataset.csv,拆分为训练集train.csv、验证集dev.csv、测试集test.csv

  读取数据集,先统计一下每个标签对应的文本数,代码如下:

df = pd.read_csv("../@_数据集/TLND/data/labelled_newscatcher_dataset.csv", encoding='utf-8', sep=';')labels = set(df['topic'])
contents = df['title']
count = {}
cal = {}
for p in df['topic']:cal[p] = 0try:count[p] += 1except KeyError:count[p] = 1
print(count)
"""输出如下
{'SCIENCE': 3774, 'TECHNOLOGY': 15000,'HEALTH': 15000, 'WORLD': 15000,'ENTERTAINMENT': 15000, 'SPORTS': 15000,'BUSINESS': 15000, 'NATION': 15000
}
"""

【注】:在使用pandas读取csv文件时,要注意分隔符不一定都是逗号。

  之后,按照70:15:15的比例来均分数据集为训练集train.csv、验证集dev.csv、测试集test.csv。尤其需要注意的是,应当在每个标签下,按照70:15:15的比例来均分数据集,保证在每个训练集、验证集、测试集中每个类别的标签都有,代码如下:

train, val, test = [], [], []
for i, label in enumerate(df['category']):if cal[label] < count[label] * 0.7:train.append({'label': label, 'content': contents[i]})elif cal[label] < count[label] * 0.85:val.append({'label': label, 'content': contents[i]})else:test.append({'label': label, 'content': contents[i]})cal[label] += 1

  这样,就分配好了每个集中应有的数据,数据格式为{'label':… , 'content': …},方便之后转存为csv文件。

  然后,我们编写代码,把变量中的数据转存为csv文件:训练集train.csv、验证集dev.csv、测试集test.csv,代码如下:

with open('../@_数据集/TLND/data/train.csv', 'a', newline='', encoding='utf-8') as f:xieru = csv.DictWriter(f, ['label','content'],delimiter=';')xieru.writerows(train)  # writerows方法是一下子写入多行内容
with open('../@_数据集/TLND/data/dev.csv', 'a', newline='', encoding='utf-8') as f:xieru = csv.DictWriter(f, ['label','content'],delimiter=';')xieru.writerows(val)  # writerows方法是一下子写入多行内容
with open('../@_数据集/TLND/data/test.csv', 'a', newline='', encoding='utf-8') as f:xieru = csv.DictWriter(f, ['label','content'],delimiter=';')xieru.writerows(test)  # writerows方法是一下子写入多行内容

  理论上,这样就完成数据集分割的任务了。但是在模型运行过程中,发现模型的准确率图如下。每过一个epoch,准确率总是会先下降许多,然后再上升,如此反复

在这里插入图片描述
  网上冲浪一番之后,发现是数据集分割时,把每个类别集中分在一起了,每一类文本应该随机分布,所以需要在转存为csv文件时,先使得变量中的数据随机分布,代码如下:

random.shuffle(train)
random.shuffle(val)
random.shuffle(test)

  再跑模型的时候,准确率就呈缓慢上升的趋势了,而不是上升——下降——上升——下降,随机数据分布之后,准确率如下图:

在这里插入图片描述

[4] 进行下一篇实战:

  【英文文本分类实战】之三——数据清洗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353923.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

使用Keras进行单模型多标签分类

原文&#xff1a;https://www.pyimagesearch.com/2018/05/07/multi-label-classification-with-keras/ 作者&#xff1a;Adrian Rosebrock 时间&#xff1a;2018年5月7日 源码&#xff1a;https://pan.baidu.com/s/1x7waggprAHQDjalkA-ctvg &#xff08;wa61&#xff09; 译者&…

图像分类实战:mobilenetv2从训练到TensorRT部署(pytorch)

文章目录 摘要mobilenetv2简介线性瓶颈倒残差 ONNXTensorRT项目结构训练数据增强Cutout和Mixup导入包设置全局参数图像预处理与增强读取数据设置模型定义训练和验证函数 测试模型转化及推理转onnxonnx推理转TensorRTTensorRT推理 摘要 本例提取了植物幼苗数据集中的部分数据做…

商品分类js html,json数据来制作商城的产品分类菜单

人们早就习惯了在互联网购物买东西,甚至有一部分朋友还是上瘾了。本篇PHP教程就来帮助您的电子商务项目实现最重要的产品类别的导航菜单系统。我已经使用PHP、MYSQL及JQuery实现了亚马逊样式的产品分类图像菜单,下面让我们来看一下如何使用json数据来制作商城的产品分类菜单。…

Amazon SPAPI PII权限申请问题汇总

亚马逊PII权限申请 官方文档地址&#xff1a;Selling Partner API 目录 亚马逊PII权限申请 Amazon PII开发者角色申请问题罗列&#xff1a; 接下来很多人都可能会遇到的拒绝原因&#xff1a; eg.1 eg.2 eg.3 eg.4 审计及远程 最后&#xff0c;坐等申请通过的case Amazon PII开发…

文本分类方案,飞浆PaddleNLP涵盖了所有

文章目录 1.前言2.核心技术2.1 文本分类方案全覆盖2.1.1 分类场景齐全2.1.2 多方案满足定制需求方案一&#xff1a;预训练模型微调方案二&#xff1a;提示学习方案三&#xff1a;语义索引 2.2 更懂中文的训练基座2.3 高效模型调优方案2.4 产业级全流程方案 3. 快速开始4. 常用中…

亚马逊中国站通过ASIN获取商品信息

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

亚马逊国际站获取商品列表

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

亚马逊国际站处理图形验证码

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

dvwa靶场通关(五)

第五关 File Upload&#xff08;文件上传漏洞&#xff09; File Upload&#xff0c;即文件上传漏洞&#xff0c;通常是由于对上传文件的类型、内容没有进行严格的过滤、检查&#xff0c;使得攻击者可以通过上传木马获取服务器的webshell权限 low low等级没有任何的防护 创建…

亚马逊国际站通过ASIN获取商品信息

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

亚马逊国际站获取全部商品分类

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

亚马逊中国站获取全部商品分类

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

推荐12个开放式免费收录网站的分类目录

很多做网站推广的网友都问2019网址分类目录还有用吗?一些长久网站或高权重、流量高的网站分类目录还有用的&#xff0c;不但能增加优质的外链&#xff0c;提高网站的权重&#xff0c;还能增加网站的曝光率。做seo网页优化的&#xff0c;很多都将会新站提交到各个分类目录网站&…

亚马逊分类目录_新版亚马逊分类目录v2.4程序源码官方分享下载

亚马逊分类目录程序是个跨平台的开源软件&#xff0c;具备来路、去路统计功能&#xff0c;支持两级分类&#xff0c;具有操作简单、功能强大、稳定性好、扩展性及安全性强、二次开发及后期维护方便&#xff0c;可以帮您迅速、轻松地构建起一个强大、专业的分类目录或网址导航网…

《大数据技术与应用》课程实验报告|week12|实验8|Pig——高级编程环境|验证评估函数

目录 一、实验内容 二、实验目的 三、实验设备 四、实验步骤 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 步骤八 步骤九 步骤十 步骤十一 步骤十二 步骤十三 步骤十四 步骤十五 步骤十六 五、实验结果 六、实验小结 一、实验内容 验证19.5节中的…

微信Mac版客户端(支持发布朋友圈)v3.1.5(18841)正式版

微信Mac版客户端全新功能升级&#xff01;&#xff01;不仅支持查看朋友圈&#xff0c;还能发布朋友圈啦&#xff01;&#xff01;&#xff01;微信正式版支持对朋友圈进行互动和点 赞等操作&#xff0c;还可以浏览朋友圈相册&#xff0c;这是一款运行在OS X上的 社交聊天工具&…

怒肝半月!Python 学习路线+资源大汇总

Python 学习路线 by 鱼皮。 原创不易&#xff0c;请勿抄袭&#xff0c;违者必究&#xff01; 大家好&#xff0c;我是鱼皮&#xff0c;肝了十天左右的 Python 学习路线终于来了~ 和之前一样&#xff0c;在看路线前&#xff0c;建议大家先通过以下视频了解几个问题&#xff1a;…

计算机考研,这样选学校才是正解

写了一篇《启舰&#xff1a;对计算机专业来说学历真的重要吗&#xff1f;》&#xff0c;一时间N多同学咨询自身情况要不要考研&#xff0c;眼看有点Hold不住&#xff0c;索性又出了一篇《启舰&#xff1a;计算机专业有必要考研吗&#xff1f;》&#xff0c;结果&#xff0c;又有…

【035期】面试官问:什么是耦合?解耦合的方法有哪几种?

>>号外&#xff1a;关注“Java精选”公众号&#xff0c;回复“面试资料”&#xff0c;免费领取资料&#xff01;“Java精选面试题”小程序&#xff0c;3000 道面试题在线刷&#xff0c;最新、最全 Java 面试题&#xff01; 在项目的开发过程中&#xff0c;我们经常强调项…

国内 Android 手机典型勒索软件详情分析(附解锁方法)

事件说明 2017年2月13-17日&#xff0c;RSA Conference 2017 信息安全大会在美国旧金山Moscone中心隆重举行。大会第一天就是一系列关于Ransomware&#xff08;勒索软件&#xff09;的议题&#xff0c;而在刚刚过去的2016年&#xff0c;“MongDB数据库网络勒索事件”&#xff0…