diff --git a/AcademicTrends/Task1 论文数据统计.md b/AcademicTrends/Task1 论文数据统计.md index 09e6ce5..ddc15ca 100644 --- a/AcademicTrends/Task1 论文数据统计.md +++ b/AcademicTrends/Task1 论文数据统计.md @@ -1,13 +1,13 @@ # 任务1:论文数据统计 -## 任务说明 +## 1.1 任务说明 - 任务主题:论文数量统计,即统计2019年全年计算机各个方向论文数量; - 任务内容:赛题的理解、使用 **Pandas** 读取数据并进行统计; - 任务成果:学习 **Pandas** 的基础操作; - 可参考的学习资料:[开源组织Datawhale joyful-pandas项目](https://github.com/datawhalechina/joyful-pandas) -## 数据集介绍 +## 1.2 数据集介绍 - 数据集来源:[数据集链接](https://www.kaggle.com/Cornell-University/arxiv); - 数据集的格式如下: @@ -70,7 +70,7 @@ } ``` -## Arxiv论文类别介绍 +## 1.3 arxiv论文类别介绍 我们从arxiv官网,查询到论文的类别名称以及其解释如下。 @@ -97,9 +97,9 @@ 'cs.OS': 'Operating Systems', ``` -## 具体代码实现以及讲解 +## 1.4 具体代码实现以及讲解 -### 导入package并读取原始数据 +### 1.4.1 导入package并读取原始数据 ```python # 导入所需的package @@ -144,7 +144,7 @@ Output: (1778381, 14) data.head() #显示数据的前五行 ``` -### 数据预处理 +### 1.4.2 数据预处理 首先我们先来粗略统计论文的种类信息: @@ -360,7 +360,7 @@ re.sub(r"(.*)\((.*)\)",r"\2",raw) 这里推荐大家一个在线正则表达式测试的网站:[https://tool.oschina.net/regex/](https://tool.oschina.net/regex/) -### 数据分析及可视化 +### 1.4.3 数据分析及可视化 接下来我们首先看一下所有大类的paper数量分布: diff --git a/AcademicTrends/Task2 论文作者统计.md b/AcademicTrends/Task2 论文作者统计.md index f753ccd..416d8db 100644 --- a/AcademicTrends/Task2 论文作者统计.md +++ b/AcademicTrends/Task2 论文作者统计.md @@ -1,12 +1,12 @@ # 任务2:论文作者统计 -## 任务说明 +## 2.1 任务说明 - 任务主题:论文作者统计,统计所有论文作者出现评率Top10的姓名; - 任务内容:论文作者的统计、使用 **Pandas** 读取数据并使用字符串操作; - 任务成果:学习 **Pandas** 的字符串操作; -## 数据处理步骤 +## 2.2 数据处理步骤 在原始arxiv数据集中论文作者`authors`字段是一个字符串格式,其中每个作者使用逗号进行分隔分,所以我们我们首先需要完成以下步骤: @@ -28,7 +28,7 @@ C.-P. Yuan 当然在原始数据集中`authors_parsed`字段已经帮我们处理好了作者信息,可以直接使用该字段完成后续统计。 -## 字符串处理 +## 2.3 字符串处理 在Python中字符串是最常用的数据类型,可以使用引号('或")来创建字符串。Python中所有的字符都使用字符串存储,可以使用方括号来截取字符串,如下实例: @@ -67,9 +67,9 @@ Python中还内置了很多内置函数,非常方便使用: | string.title() | 返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) | | string.upper() | 转换 string 中的小写字母为大写 | -## 具体代码实现以及讲解 +## 2.4 具体代码实现以及讲解 -### 数据读取 +### 2.4.1 数据读取 ```python data = [] @@ -84,7 +84,7 @@ data = pd.DataFrame(data) 为了方便处理数据,我们只选择了三个字段进行读取。 -### 数据统计 +### 2.4.2 数据统计 接下来我们将完成以下统计操作: diff --git a/AcademicTrends/Task3 论文代码统计.md b/AcademicTrends/Task3 论文代码统计.md index 4f677f8..8689668 100644 --- a/AcademicTrends/Task3 论文代码统计.md +++ b/AcademicTrends/Task3 论文代码统计.md @@ -1,12 +1,12 @@ # 任务3:论文代码统计 -## 任务说明 +## 3.1 任务说明 - 任务主题:论文代码统计,统计所有论文出现代码的相关统计; - 任务内容:使用正则表达式统计代码连接、页数和图表数据; - 任务成果:学习正则表达式统计; -## 数据处理步骤 +## 3.2 数据处理步骤 在原始arxiv数据集中作者经常会在论文的`comments`或`abstract`字段中给出具体的代码链接,所以我们需要从这些字段里面找出代码的链接。 @@ -14,11 +14,11 @@ - 使用正则表达式完成匹配; - 完成相关的统计; -## 正则表达式 +## 3.3 正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 -#### 普通字符:大写和小写字母、所有数字、所有标点符号和一些其他符号 +#### 3.3.1 普通字符:大写和小写字母、所有数字、所有标点符号和一些其他符号 | 字符 | 描述 | | ---------- | ------------------------------------------------------------ | @@ -29,7 +29,7 @@ | **[\s\S]** | 匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,包括换行。 | | **\w** | 匹配字母、数字、下划线。等价于 [A-Za-z0-9_] | -#### 特殊字符:有特殊含义的字符 +#### 3.3.2 特殊字符:有特殊含义的字符 | 特别字符 | 描述 | | :------- | :----------------------------------------------------------- | @@ -44,7 +44,7 @@ | { | 标记限定符表达式的开始。要匹配 {,请使用 \{。 | | \| | 指明两项之间的一个选择。要匹配 \|,请使用 \|。 | -#### 限定符 +#### 3.3.3 限定符 | 字符 | 描述 | | :---- | :----------------------------------------------------------- | @@ -55,7 +55,7 @@ | {n,} | n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 | | {n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 | -## 具体代码实现以及讲解 +## 3.4 具体代码实现以及讲解 首先我们来统计论文页数,也就是在`comments`字段中抽取pages和figures和个数,首先完成字段读取。 diff --git a/AcademicTrends/Task4 论文种类分类.md b/AcademicTrends/Task4 论文种类分类.md index 6734b5f..0c1af27 100644 --- a/AcademicTrends/Task4 论文种类分类.md +++ b/AcademicTrends/Task4 论文种类分类.md @@ -1,12 +1,12 @@ # 任务4:论文种类分类 -## 任务说明 +## 4.1 任务说明 - 学习主题:论文分类(数据建模任务),利用已有数据建模,对新论文进行类别分类; - 学习内容:使用论文标题完成类别分类; - 学习成果:学会文本分类的基本方法、`TF-IDF`等; -## 数据处理步骤 +## 4.2 数据处理步骤 在原始arxiv论文中论文都有对应的类别,而论文类别是作者填写的。在本次任务中我们可以借助论文的标题和摘要完成: @@ -14,7 +14,7 @@ - 对论文类别进行处理; - 构建文本分类模型; -## 文本分类思路 +## 4.3 文本分类思路 - 思路1:TF-IDF+机器学习分类器 @@ -32,7 +32,7 @@ WordVec是进阶款的词向量,并通过构建深度学习分类完成分类 Bert是高配款的词向量,具有强大的建模学习能力。 -## 具体代码实现以及讲解 +## 4.4 具体代码实现以及讲解 为了方便大家入门文本分类,我们选择思路1和思路2给大家讲解。首先完成字段读取: @@ -80,7 +80,7 @@ mlb = MultiLabelBinarizer() data_label = mlb.fit_transform(data['categories_big'].iloc[:]) ``` -### 思路1 +### 4.4.1 思路1 思路1使用TFIDF提取特征,限制最多4000个单词: @@ -111,7 +111,7 @@ from sklearn.metrics import classification_report print(classification_report(y_test, clf.predict(x_test))) ``` -### 思路2 +### 4.4.2 思路2 思路2使用深度学习模型,单词进行词嵌入然后训练。首先按照文本划分数据集: diff --git a/AcademicTrends/Task5 作者信息关联.md b/AcademicTrends/Task5 作者信息关联.md index a59aa9c..fb6d138 100644 --- a/AcademicTrends/Task5 作者信息关联.md +++ b/AcademicTrends/Task5 作者信息关联.md @@ -1,23 +1,23 @@ # 任务5:作者信息关联 -## 任务说明 +## 5.1 任务说明 - 学习主题:作者关联(数据建模任务),对论文作者关系进行建模,统计最常出现的作者关系; - 学习内容:构建作者关系图,挖掘作者关系 - 学习成果:论文作者知识图谱、图关系挖掘 -## 数据处理步骤 +## 5.2 数据处理步骤 将作者列表进行处理,并完成统计。具体步骤如下: - 将论文第一作者与其他作者(论文非第一作者)构建图; - 使用图算法统计图中作者与其他作者的联系; -## 社交网络分析 +## 5.3 社交网络分析 图是复杂网络研究中的一个重要概念。Graph是用**点**和**线**来刻画离散事物集合中的每对事物间以某种方式相联系的数学模型。Graph在现实世界中随处可见,如交通运输图、旅游图、流程图等。利用图可以描述现实生活中的许多事物,如用点可以表示交叉口,点之间的连线表示路径,这样就可以轻而易举的描绘出一个交通运输网络。 -### 图类型 +### 5.3.1 图类型 - 无向图,忽略了两节点间边的方向。 @@ -25,7 +25,7 @@ - 多重无向图,即两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联。 -### 图统计指标 +### 5.3.2 图统计指标 - 度:是指和该节点相关联的边的条数,又称关联度。对于有向图,节点的入度 是指进入该节点的边的条数;节点的出度是指从该节点出发的边的条数; @@ -35,7 +35,7 @@ 对于其他图算法,可以在networkx和igraph两个库中找到。 -## 具体代码以及讲解 +## 5.4 具体代码以及讲解 首先读取我们想要的数据: