Task4 论文种类分类

  • 任务说明
  • 数据处理步骤
  • 文本分类思路
  • 具体代码实现以及讲解
    • 导包
    • 数据准备
    • 数据处理

本文主要使用TF-IDF+机器学习分类器FastText两种方法进行论文种类的分类,而WordVec+深度学习分类器Bert词向量方法等放假了在来补作业。

最近工作太多了,dely了~

任务说明

  • 学习主题:论文分类(数据建模任务),利用已有数据建模,对新论文进行类别分类;
  • 学习内容:使用论文标题完成类别分类;
  • 学习成果:学会文本分类的基本方法、TF-IDF等;

数据处理步骤

在原始arxiv论文中论文都有对应的类别,而论文类别是作者填写的。在本次任务中我们可以借助论文的标题和摘要完成:

  • 对论文标题和摘要进行处理;
  • 对论文类别进行处理;
  • 构建文本分类模型;

文本分类思路

  • 思路1:TF-IDF+机器学习分类器

直接使用TF-IDF对文本提取特征,使用分类器进行分类,分类器的选择上可以使用SVM、LR、XGboost等

  • 思路2:FastText

FastText是入门款的词向量,利用Facebook提供的FastText工具,可以快速构建分类器

  • 思路3:WordVec+深度学习分类器

WordVec是进阶款的词向量,并通过构建深度学习分类完成分类。深度学习分类的网络结构可以选择TextCNN、TextRnn或者BiLSTM。

  • 思路4:Bert词向量

Bert是高配款的词向量,具有强大的建模学习能力。

具体代码实现以及讲解

导包

from sklearn.preprocessing import MultiLabelBinarizer
import re #用于正则表达式,匹配字符串的模式
import requests #用于网络连接,发送网络请求,使用域名获取对应信息
import json #读取数据,我们的数据为json格式的
import pandas as pd #数据处理,数据分析
import matplotlib.pyplot as plt #画图工具

数据准备

def readArxivFile(path, columns=['id', 'submitter', 'authors', 'title', 'comments', 'journal-ref', 'doi','report-no', 'categories', 'license', 'abstract', 'versions','update_date', 'authors_parsed'], count=None):'''定义读取文件的函数path: 文件路径columns: 需要选择的列count: 读取行数'''data  = []with open(path, 'r') as f: for idx, line in enumerate(f): if idx == count:breakd = json.loads(line)d = {col : d[col] for col in columns}data.append(d)data = pd.DataFrame(data)return datadata = readArxivFile('arxiv-metadata-oai-2019.json', ['id', 'title', 'categories', 'abstract'],200000)

数据处理

为了方便后期特征词匹配分类,将标题和摘要拼接。

data['text'] = data['title'] + data['abstract']data['text'] = data['text'].apply(lambda x: x.replace('\n',' '))
data['text'] = data['text'].apply(lambda x: x.lower())
data = data.drop(['abstract', 'title'], axis=1)

由于原始论文有可能有多个类别,所以也需要处理:

# 多个类别,包含子分类
data['categories'] = data['categories'].apply(lambda x : x.split(' '))# 单个类别,不包含子分类
data['categories_big'] = data['categories'].apply(lambda x : [xx.split('.')[0] for xx in x])

然后将类别进行编码,这里类别是多个,所以需要多编码:

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
data_label = mlb.fit_transform(data['categories_big'].iloc[:])

DataWhale | 学术前言趋势分析 | Task4 论文种类分类相关推荐

  1. 学习分享:学术前言趋势分析2—论文作者统计

    文章目录 1.数据处理 2.字符串处理 3.具体代码 任务内容:论文作者的统计.使用 Pandas 读取数据并使用字符串操作: 任务成果:学习 Pandas 的字符串操作 1.数据处理 在原始arxi ...

  2. Task4 论文种类分类

    任务说明 学习主题:论文分类(数据建模任务),利用已有数据建模,对新论文进行类别分类: 学习内容:使用论文标题完成类别分类: 学习成果:学会文本分类的基本方法.TF-IDF等: 数据处理步骤 在原始a ...

  3. 学习分享:学术前言趋势分析1—论文数据统计

    文章目录 1.数据集介绍 2.代码学习心得 (1) split()函数 (2) 正则表达式 (3) 数据分析及可视化 3.具体代码实现 学习主题:论文数量统计,统计2019年全年,计算机各个方向论文数 ...

  4. 学习分享:学术前言趋势分析3—论文代码统计

    文章目录 1.数据处理步骤 2.正则表达式 3.具体代码实现 任务内容:使用正则表达式统计代码连接.页数和图表数据: 任务成果:学习正则表达式统计 1.数据处理步骤 在原始arxiv数据集中作者经常会 ...

  5. 论文种类分类Task4

    Task4:论文种类分类 # 导入所需的package import seaborn as sns #用于画图 from bs4 import BeautifulSoup #用于爬取arxiv的数据 ...

  6. 论文数据分析-4(论文种类分类)

    任务4:论文种类分类 这部分内容作者还没有完成,先放出来大家参考,作者会继续补充,不喜勿喷 4.1 任务说明 学习主题:论文分类(数据建模任务),利用已有数据建模,对新论文进行类别分类: 学习内容:使 ...

  7. Datawhale组队学习21期_学术前沿趋势分析Task2_论文作者统计

    任务说明 任务主题:论文作者统计,统计所有论文作者出现评率Top10的姓名: 任务内容:论文作者的统计.使用 Pandas 读取数据并使用字符串操作: 任务成果:学习 Pandas 的字符串操作: 数 ...

  8. 第四节:论文种类分类-学习笔记

    任务说明 学习主题:论文分类(数据建模任务),利用已有数据建模,对新论文进行类别分类: 学习内容:使用论文标题完成类别分类: 学习成果:学会文本分类的基本方法.TF-IDF等: 数据处理步骤 在原始a ...

  9. 数据分析---论文种类分类

    目录 1.1.任务说明 1.2.数据处理步骤 1.3.文本分类思路 1.4.具体代码实现以及讲解 1.4.1.思路1 1.4.2.思路2 1.1.任务说明 学习主题:论文分类(数据建模任务),利用已有 ...

最新文章

  1. Go 语言调用 python2
  2. centos7镜像加速_使用阿里云容器镜像服务托管私有Docker镜像
  3. 【CVPR2019】Workshops 研讨会列表及链接
  4. 工作不能混日子,给自己留言
  5. eclipse get set 自动添加注释
  6. mysql 代码结构_MySQL代码执行结构
  7. ROS学习笔记1(配置ROS环境和创建工作空间)
  8. PowerVim - 强大的vim配置
  9. Cesium中的常用坐标及转换
  10. 【OEIS】Xor Sum AtCoder2272
  11. 7. 稀疏表示之OMP,SOMP算法及openCV实现
  12. eos java调用命名sql_普元 EOS Platform 7.6 开发命名SQL缓存示例
  13. 网络规划设计师考点总结
  14. 用“心”迎接情人节,用另一种形式表达爱意
  15. 实际记录vue3中使用rrweb以及rrweb-player组件实现网页录屏和回放功能,还有遇到的问题和解决思考
  16. 图文并茂的Python散点图教程
  17. 【记忆化搜索】UVA 10118 free candy
  18. H5网站-微信浏览器中打开底部fixed遮住内容区域问题
  19. 转:分享 OS X 10.7-10.11 最终版镜像,DMG 格式
  20. 医院信息系统的业务功能详解

热门文章

  1. python小游戏 消消乐小游戏设计与实现
  2. 盒子中装有3个红球,3个蓝球,4个黄球,从中抽取三次,每次抽一个球,取完不放回,则每种颜色球各得一个的概率是?
  3. 笔记本装双系统!win10+Linux!所有的坑自己一个个爬过来
  4. vue中引入字体文件
  5. 测试岗/测试开发岗面经合集
  6. 新版华人与狗不能入内:昆明拟禁止无居住证者租房找工作,外国人除外[转载]...
  7. 360安全浏览器和360chrome 首页设置加密算法(逆向所得)
  8. 2022年IEEE Fellow名单正式公布,清华教授、阿里云李飞飞等73位华人上榜
  9. 关于调查问卷统计分析的见解
  10. 久等了!POW'ER 2020上海峰会首批75位参会嘉宾名单公布