任务背景
本任务的背景为使用公开的arXiv论文完成相应的数据分析操作,并且完成具体的可视化分析。
任务描述
论文种类分类,即利用已有数据建模,对新论文进行类别分类
数据集介绍
数据集来源:数据集链接
数据集的各个特征的含义如下:
通过以上字段含义信息,可以发现,在本任务中,我们关心的字段有’title’,‘abstract’,以及’categories’。
具体思路以及代码实现
导入package并读取原始数据
# 导入所需的package
import seaborn as sns #用于画图
from bs4 import BeautifulSoup #用于爬取arxiv的数据
import re #用于正则表达式,匹配字符串的模式
import requests #用于网络连接,发送网络请求,使用域名获取对应信息
import json #读取数据,我们的数据为json格式的
import pandas as pd #数据处理,数据分析
import matplotlib.pyplot as plt #画图工具
data = [] #初始化
#使用with语句优势:1.自动关闭文件句柄;2.自动显示(处理)文件读取数据异常
with open("arxiv-metadata-oai-snapshot.json", 'r') as f:
for idx, line in enumerate(f):
d = json.loads(line)
d = {
'title': d['title'], 'categories': d['categories'], 'abstract': d['abstract']}
data.append(d)
# 选择部分数据
if idx > 200000:
break
data = pd.DataFrame(data) #将list变为dataframe格式,方便使用pandas进行分析
data.head() #显示数据的前五行
数据处理步骤
在原始arxiv论文中论文都有对应的类别,而论文类别是作者填写的。在本次任务中我们可以借助论文的标题和摘要完成:
- 对论文标题和摘要进行处理;
- 对论文类别进行处理;
- 构建文本分类模型;
文本分类思路
-
思路1:TF-IDF+机器学习分类器
直接使用TF-IDF对文本提取特征,使用分类器进行分类,分类器的选择上可以使用SVM、LR、XGboost等 -
思路2:FastText
FastText是入门款的词向量,利用Facebook提供的FastText工具,可以快速构建分类器
具体代码实现
为了方便数据的处理,我们可以将标题和摘要拼接一起完成分类:
data['text&